From 60dd5fd95847643eab04ce173f0774c9c584e795 Mon Sep 17 00:00:00 2001 From: Brian Evans Date: Fri, 2 Oct 2020 15:24:06 -0400 Subject: Update MLEB to 2020.07 Signed-off-by: Brian Evans --- MLEB/Babel/.eslintrc | 10 - MLEB/Babel/.eslintrc.json | 11 + MLEB/Babel/.phan/config.php | 3 + MLEB/Babel/.phpcs.xml | 1 + MLEB/Babel/Babel.php | 30 - MLEB/Babel/Gruntfile.js | 30 +- MLEB/Babel/RELEASE-NOTES | 8 +- MLEB/Babel/babel.sql | 6 +- MLEB/Babel/codes.cdb | Bin 242786 -> 0 bytes MLEB/Babel/codes.php | 8047 ++++++++++++++++++++ MLEB/Babel/composer.json | 19 +- MLEB/Babel/extension.json | 60 +- MLEB/Babel/i18n/ab.json | 9 +- MLEB/Babel/i18n/af.json | 8 +- MLEB/Babel/i18n/ais.json | 33 - MLEB/Babel/i18n/aln.json | 4 +- MLEB/Babel/i18n/am.json | 4 +- MLEB/Babel/i18n/ann.json | 29 + MLEB/Babel/i18n/api/af.json | 9 + MLEB/Babel/i18n/api/ar.json | 11 + MLEB/Babel/i18n/api/ary.json | 11 + MLEB/Babel/i18n/api/ast.json | 11 + MLEB/Babel/i18n/api/avk.json | 9 + MLEB/Babel/i18n/api/bcl.json | 11 + MLEB/Babel/i18n/api/be-tarask.json | 11 + MLEB/Babel/i18n/api/be.json | 10 + MLEB/Babel/i18n/api/bqi.json | 8 + MLEB/Babel/i18n/api/br.json | 10 + MLEB/Babel/i18n/api/ca.json | 12 + MLEB/Babel/i18n/api/cs.json | 8 + MLEB/Babel/i18n/api/csb.json | 11 + MLEB/Babel/i18n/api/da.json | 10 + MLEB/Babel/i18n/api/de.json | 12 + MLEB/Babel/i18n/api/diq.json | 12 + MLEB/Babel/i18n/api/el.json | 11 + MLEB/Babel/i18n/api/en-gb.json | 10 + MLEB/Babel/i18n/api/en.json | 12 + MLEB/Babel/i18n/api/eo.json | 11 + MLEB/Babel/i18n/api/es.json | 12 + MLEB/Babel/i18n/api/eu.json | 12 + MLEB/Babel/i18n/api/fa.json | 12 + MLEB/Babel/i18n/api/fr.json | 12 + MLEB/Babel/i18n/api/gcr.json | 11 + MLEB/Babel/i18n/api/gl.json | 11 + MLEB/Babel/i18n/api/gu.json | 10 + MLEB/Babel/i18n/api/he.json | 11 + MLEB/Babel/i18n/api/hi.json | 12 + MLEB/Babel/i18n/api/hu.json | 11 + MLEB/Babel/i18n/api/ia.json | 11 + MLEB/Babel/i18n/api/id.json | 12 + MLEB/Babel/i18n/api/ilo.json | 11 + MLEB/Babel/i18n/api/it.json | 11 + MLEB/Babel/i18n/api/ja.json | 13 + MLEB/Babel/i18n/api/jv.json | 13 + MLEB/Babel/i18n/api/ka.json | 8 + MLEB/Babel/i18n/api/kjp.json | 11 + MLEB/Babel/i18n/api/kk-cyrl.json | 9 + MLEB/Babel/i18n/api/ko.json | 12 + MLEB/Babel/i18n/api/lb.json | 10 + MLEB/Babel/i18n/api/li.json | 11 + MLEB/Babel/i18n/api/lij.json | 10 + MLEB/Babel/i18n/api/lt.json | 10 + MLEB/Babel/i18n/api/lv.json | 11 + MLEB/Babel/i18n/api/mk.json | 11 + MLEB/Babel/i18n/api/ml.json | 9 + MLEB/Babel/i18n/api/mni.json | 8 + MLEB/Babel/i18n/api/mnw.json | 11 + MLEB/Babel/i18n/api/mr.json | 12 + MLEB/Babel/i18n/api/mrh.json | 11 + MLEB/Babel/i18n/api/mui.json | 11 + MLEB/Babel/i18n/api/nah.json | 11 + MLEB/Babel/i18n/api/nap.json | 12 + MLEB/Babel/i18n/api/nb.json | 11 + MLEB/Babel/i18n/api/nia.json | 11 + MLEB/Babel/i18n/api/nl.json | 12 + MLEB/Babel/i18n/api/ny.json | 11 + MLEB/Babel/i18n/api/pl.json | 12 + MLEB/Babel/i18n/api/pt-br.json | 12 + MLEB/Babel/i18n/api/pt.json | 11 + MLEB/Babel/i18n/api/qqq.json | 12 + MLEB/Babel/i18n/api/ro.json | 11 + MLEB/Babel/i18n/api/roa-tara.json | 11 + MLEB/Babel/i18n/api/ru.json | 11 + MLEB/Babel/i18n/api/sah.json | 8 + MLEB/Babel/i18n/api/sat.json | 11 + MLEB/Babel/i18n/api/sd.json | 8 + MLEB/Babel/i18n/api/sdc.json | 10 + MLEB/Babel/i18n/api/sh.json | 9 + MLEB/Babel/i18n/api/sk.json | 9 + MLEB/Babel/i18n/api/sty.json | 10 + MLEB/Babel/i18n/api/sv.json | 12 + MLEB/Babel/i18n/api/szy.json | 11 + MLEB/Babel/i18n/api/th.json | 10 + MLEB/Babel/i18n/api/tr.json | 12 + MLEB/Babel/i18n/api/uk.json | 11 + MLEB/Babel/i18n/api/wa.json | 11 + MLEB/Babel/i18n/api/yue.json | 10 + MLEB/Babel/i18n/api/zh-hans.json | 11 + MLEB/Babel/i18n/api/zh-hant.json | 12 + MLEB/Babel/i18n/ar.json | 6 +- MLEB/Babel/i18n/ary.json | 47 +- MLEB/Babel/i18n/ast.json | 6 +- MLEB/Babel/i18n/avk.json | 8 +- MLEB/Babel/i18n/awa.json | 5 +- MLEB/Babel/i18n/azb.json | 4 +- MLEB/Babel/i18n/bcc.json | 5 +- MLEB/Babel/i18n/be-tarask.json | 10 +- MLEB/Babel/i18n/be.json | 11 +- MLEB/Babel/i18n/bg.json | 5 +- MLEB/Babel/i18n/bn.json | 2 +- MLEB/Babel/i18n/bqi.json | 30 +- MLEB/Babel/i18n/br.json | 5 +- MLEB/Babel/i18n/bs.json | 3 +- MLEB/Babel/i18n/ca.json | 12 +- MLEB/Babel/i18n/cak.json | 23 + MLEB/Babel/i18n/cdo.json | 4 +- MLEB/Babel/i18n/ce.json | 4 +- MLEB/Babel/i18n/ckb.json | 4 +- MLEB/Babel/i18n/cs.json | 9 +- MLEB/Babel/i18n/csb.json | 6 +- MLEB/Babel/i18n/cv.json | 4 +- MLEB/Babel/i18n/da.json | 9 +- MLEB/Babel/i18n/de.json | 12 +- MLEB/Babel/i18n/diq.json | 19 +- MLEB/Babel/i18n/dv.json | 5 +- MLEB/Babel/i18n/el.json | 10 +- MLEB/Babel/i18n/en-gb.json | 13 +- MLEB/Babel/i18n/en.json | 6 +- MLEB/Babel/i18n/eo.json | 6 +- MLEB/Babel/i18n/es.json | 10 +- MLEB/Babel/i18n/eu.json | 10 +- MLEB/Babel/i18n/fa.json | 10 +- MLEB/Babel/i18n/fi.json | 4 +- MLEB/Babel/i18n/fit.json | 21 +- MLEB/Babel/i18n/fr.json | 36 +- MLEB/Babel/i18n/fy.json | 7 +- MLEB/Babel/i18n/gcr.json | 29 +- MLEB/Babel/i18n/gd.json | 4 +- MLEB/Babel/i18n/gl.json | 10 +- MLEB/Babel/i18n/gn.json | 4 +- MLEB/Babel/i18n/got.json | 4 +- MLEB/Babel/i18n/gu.json | 5 +- MLEB/Babel/i18n/ha.json | 5 +- MLEB/Babel/i18n/he.json | 10 +- MLEB/Babel/i18n/hi.json | 10 +- MLEB/Babel/i18n/hif-latn.json | 13 +- MLEB/Babel/i18n/hr.json | 4 +- MLEB/Babel/i18n/hu.json | 10 +- MLEB/Babel/i18n/hyw.json | 26 + MLEB/Babel/i18n/ia.json | 6 +- MLEB/Babel/i18n/id.json | 10 +- MLEB/Babel/i18n/ilo.json | 6 +- MLEB/Babel/i18n/inh.json | 4 +- MLEB/Babel/i18n/io.json | 6 +- MLEB/Babel/i18n/it.json | 9 +- MLEB/Babel/i18n/ja.json | 11 +- MLEB/Babel/i18n/jam.json | 4 +- MLEB/Babel/i18n/jv.json | 46 +- MLEB/Babel/i18n/ka.json | 3 +- MLEB/Babel/i18n/kab.json | 4 +- MLEB/Babel/i18n/kea.json | 3 +- MLEB/Babel/i18n/kiu.json | 4 +- MLEB/Babel/i18n/kjp.json | 6 +- MLEB/Babel/i18n/kk-cyrl.json | 10 +- MLEB/Babel/i18n/ko.json | 14 +- MLEB/Babel/i18n/krc.json | 4 +- MLEB/Babel/i18n/ksw.json | 26 + MLEB/Babel/i18n/ku-latn.json | 2 +- MLEB/Babel/i18n/la.json | 17 +- MLEB/Babel/i18n/lad.json | 4 +- MLEB/Babel/i18n/lb.json | 5 +- MLEB/Babel/i18n/lfn.json | 5 +- MLEB/Babel/i18n/li.json | 6 +- MLEB/Babel/i18n/lij.json | 9 +- MLEB/Babel/i18n/lki.json | 2 +- MLEB/Babel/i18n/lld.json | 4 +- MLEB/Babel/i18n/lrc.json | 45 +- MLEB/Babel/i18n/lt.json | 11 +- MLEB/Babel/i18n/luz.json | 4 +- MLEB/Babel/i18n/lv.json | 6 +- MLEB/Babel/i18n/mk.json | 8 +- MLEB/Babel/i18n/mni.json | 21 +- MLEB/Babel/i18n/mnw.json | 17 +- MLEB/Babel/i18n/mo.json | 4 +- MLEB/Babel/i18n/mr.json | 10 +- MLEB/Babel/i18n/mrh.json | 29 + MLEB/Babel/i18n/ms.json | 7 +- MLEB/Babel/i18n/mui.json | 6 +- MLEB/Babel/i18n/mwl.json | 4 +- MLEB/Babel/i18n/my.json | 4 +- MLEB/Babel/i18n/myv.json | 5 +- MLEB/Babel/i18n/nah.json | 10 +- MLEB/Babel/i18n/nap.json | 29 +- MLEB/Babel/i18n/nb.json | 16 +- MLEB/Babel/i18n/nds-nl.json | 42 +- MLEB/Babel/i18n/ne.json | 4 +- MLEB/Babel/i18n/new.json | 5 +- MLEB/Babel/i18n/nia.json | 29 + MLEB/Babel/i18n/nl.json | 12 +- MLEB/Babel/i18n/nn.json | 7 +- MLEB/Babel/i18n/nrm.json | 4 +- MLEB/Babel/i18n/ny.json | 6 +- MLEB/Babel/i18n/olo.json | 4 +- MLEB/Babel/i18n/pl.json | 10 +- MLEB/Babel/i18n/pnb.json | 4 +- MLEB/Babel/i18n/pt-br.json | 10 +- MLEB/Babel/i18n/pt.json | 13 +- MLEB/Babel/i18n/qqq.json | 10 +- MLEB/Babel/i18n/ro.json | 6 +- MLEB/Babel/i18n/roa-tara.json | 6 +- MLEB/Babel/i18n/ru.json | 19 +- MLEB/Babel/i18n/ryu.json | 15 +- MLEB/Babel/i18n/sa.json | 4 +- MLEB/Babel/i18n/sah.json | 3 +- MLEB/Babel/i18n/sat.json | 14 +- MLEB/Babel/i18n/sco.json | 4 +- MLEB/Babel/i18n/sd.json | 24 +- MLEB/Babel/i18n/se.json | 24 +- MLEB/Babel/i18n/sgs.json | 4 +- MLEB/Babel/i18n/sh.json | 7 +- MLEB/Babel/i18n/shi.json | 4 +- MLEB/Babel/i18n/sjd.json | 22 + MLEB/Babel/i18n/sk.json | 5 +- MLEB/Babel/i18n/sl.json | 2 +- MLEB/Babel/i18n/so.json | 2 + MLEB/Babel/i18n/sq.json | 4 +- MLEB/Babel/i18n/sr-ec.json | 6 +- MLEB/Babel/i18n/sr-el.json | 4 +- MLEB/Babel/i18n/srn.json | 4 +- MLEB/Babel/i18n/st.json | 4 +- MLEB/Babel/i18n/sty.json | 21 +- MLEB/Babel/i18n/sv.json | 10 +- MLEB/Babel/i18n/szl.json | 4 +- MLEB/Babel/i18n/szy.json | 30 + MLEB/Babel/i18n/tg-cyrl.json | 24 +- MLEB/Babel/i18n/th.json | 6 +- MLEB/Babel/i18n/tly.json | 3 +- MLEB/Babel/i18n/tr.json | 10 +- MLEB/Babel/i18n/tt-cyrl.json | 33 +- MLEB/Babel/i18n/udm.json | 2 +- MLEB/Babel/i18n/uk.json | 10 +- MLEB/Babel/i18n/ur.json | 6 +- MLEB/Babel/i18n/vec.json | 3 +- MLEB/Babel/i18n/vls.json | 4 +- MLEB/Babel/i18n/vmf.json | 4 +- MLEB/Babel/i18n/wa.json | 10 +- MLEB/Babel/i18n/war.json | 2 +- MLEB/Babel/i18n/yi.json | 4 +- MLEB/Babel/i18n/yue.json | 9 +- MLEB/Babel/i18n/zgh.json | 15 + MLEB/Babel/i18n/zh-hans.json | 13 +- MLEB/Babel/i18n/zh-hant.json | 33 +- MLEB/Babel/i18n/zh-hk.json | 4 +- MLEB/Babel/includes/Babel.php | 103 +- MLEB/Babel/includes/BabelAutoCreate.php | 16 +- MLEB/Babel/includes/BabelBox/LanguageBabelBox.php | 9 +- MLEB/Babel/includes/BabelLanguageCodes.php | 64 +- MLEB/Babel/includes/BabelStatic.php | 30 +- MLEB/Babel/includes/Database.php | 49 +- MLEB/Babel/names.cdb | Bin 291838 -> 0 bytes MLEB/Babel/names.php | 8047 ++++++++++++++++++++ MLEB/Babel/package-lock.json | 4904 ++++++++++++ MLEB/Babel/package.json | 17 +- MLEB/Babel/sql/babel-babel_lang-length-type.sql | 1 + MLEB/Babel/sql/babel-babel_lang-length.sqlite.sql | 20 + MLEB/Babel/sql/babel-babel_level-type.sql | 1 + MLEB/Babel/tests/phan/config.php | 2 - MLEB/Babel/tests/phpunit/BabelAutoCreateTest.php | 4 +- .../Babel/tests/phpunit/BabelLanguageCodesTest.php | 5 +- MLEB/Babel/tests/phpunit/BabelTest.php | 133 +- MLEB/Babel/txt2cdb.php | 50 - MLEB/Babel/txt2php.php | 54 + MLEB/CleanChanges/.eslintrc.json | 6 +- MLEB/CleanChanges/.phan/config.php | 22 + MLEB/CleanChanges/.phpcs.xml | 1 - MLEB/CleanChanges/CleanChanges.php | 14 - MLEB/CleanChanges/CleanChanges_body.php | 748 -- MLEB/CleanChanges/Filters.php | 157 - MLEB/CleanChanges/Gruntfile.js | 3 + MLEB/CleanChanges/RELEASE-NOTES | 8 +- MLEB/CleanChanges/composer.json | 15 +- MLEB/CleanChanges/extension.json | 14 +- MLEB/CleanChanges/i18n/azb.json | 4 +- MLEB/CleanChanges/i18n/diq.json | 4 +- MLEB/CleanChanges/i18n/es.json | 4 +- MLEB/CleanChanges/i18n/fr.json | 9 +- MLEB/CleanChanges/i18n/fy.json | 3 +- MLEB/CleanChanges/i18n/gl.json | 4 +- MLEB/CleanChanges/i18n/ha.json | 4 +- MLEB/CleanChanges/i18n/hi.json | 4 +- MLEB/CleanChanges/i18n/hr.json | 4 +- MLEB/CleanChanges/i18n/io.json | 1 + MLEB/CleanChanges/i18n/ja.json | 3 +- MLEB/CleanChanges/i18n/ka.json | 4 +- MLEB/CleanChanges/i18n/krc.json | 4 +- MLEB/CleanChanges/i18n/lij.json | 2 +- MLEB/CleanChanges/i18n/nah.json | 4 +- MLEB/CleanChanges/i18n/nb.json | 4 +- MLEB/CleanChanges/i18n/pl.json | 5 +- MLEB/CleanChanges/i18n/ps.json | 4 +- MLEB/CleanChanges/i18n/rif.json | 4 +- MLEB/CleanChanges/i18n/ru.json | 4 +- MLEB/CleanChanges/i18n/sh.json | 13 + MLEB/CleanChanges/i18n/th.json | 8 +- MLEB/CleanChanges/i18n/tt-cyrl.json | 5 +- MLEB/CleanChanges/i18n/uk.json | 4 +- MLEB/CleanChanges/i18n/vi.json | 3 +- MLEB/CleanChanges/i18n/zh-hans.json | 4 +- MLEB/CleanChanges/i18n/zh-hant.json | 10 +- MLEB/CleanChanges/includes/CCFilters.php | 157 + MLEB/CleanChanges/includes/NCL.php | 756 ++ MLEB/CleanChanges/package-lock.json | 4925 ++++++++++++ MLEB/CleanChanges/package.json | 13 +- MLEB/LocalisationUpdate/.eslintrc.json | 7 + MLEB/LocalisationUpdate/.phan/config.php | 3 + MLEB/LocalisationUpdate/Gruntfile.js | 28 +- MLEB/LocalisationUpdate/RELEASE-NOTES | 6 +- MLEB/LocalisationUpdate/composer.json | 20 +- MLEB/LocalisationUpdate/extension.json | 54 +- MLEB/LocalisationUpdate/i18n/ca.json | 4 +- MLEB/LocalisationUpdate/i18n/de.json | 4 +- MLEB/LocalisationUpdate/i18n/fa.json | 3 +- MLEB/LocalisationUpdate/i18n/nb.json | 4 +- MLEB/LocalisationUpdate/i18n/pl.json | 3 +- MLEB/LocalisationUpdate/i18n/sr-ec.json | 7 +- MLEB/LocalisationUpdate/i18n/zh-hant.json | 4 +- .../includes/Fetcher/Fetcher.php | 30 + .../includes/Fetcher/FetcherFactory.php | 25 + .../includes/Fetcher/FileSystemFetcher.php | 47 + .../includes/Fetcher/GitHubFetcher.php | 49 + .../includes/Fetcher/HttpFetcher.php | 45 + MLEB/LocalisationUpdate/includes/Finder.php | 90 + .../includes/LocalisationUpdate.php | 16 +- .../includes/QuickArrayReader.php | 214 - .../includes/Reader/JSONReader.php | 37 + MLEB/LocalisationUpdate/includes/Reader/Reader.php | 21 + .../includes/Reader/ReaderFactory.php | 28 + MLEB/LocalisationUpdate/includes/Updater.php | 3 + .../includes/fetcher/Fetcher.php | 30 - .../includes/fetcher/FetcherFactory.php | 25 - .../includes/fetcher/FileSystemFetcher.php | 47 - .../includes/fetcher/GitHubFetcher.php | 47 - .../includes/fetcher/HttpFetcher.php | 49 - MLEB/LocalisationUpdate/includes/finder/Finder.php | 124 - .../includes/reader/JSONReader.php | 37 - .../includes/reader/PHPReader.php | 61 - MLEB/LocalisationUpdate/includes/reader/Reader.php | 21 - .../includes/reader/ReaderFactory.php | 38 - MLEB/LocalisationUpdate/package-lock.json | 2822 +++++++ MLEB/LocalisationUpdate/package.json | 8 +- MLEB/LocalisationUpdate/tests/phan/config.php | 3 - .../tests/phpunit/UpdaterTest.php | 7 +- .../tests/phpunit/finder/FinderTest.php | 25 +- .../tests/phpunit/reader/JSONReaderTest.php | 4 +- .../tests/phpunit/reader/ReaderFactoryTest.php | 17 +- MLEB/LocalisationUpdate/update.php | 7 +- MLEB/Translate/.eslintrc.json | 27 +- MLEB/Translate/.mailmap | 61 + MLEB/Translate/.phan/config.php | 59 + MLEB/Translate/.phan/stubs/languagedetector.php | 56 + MLEB/Translate/.phan/stubs/metayaml.php | 42 + MLEB/Translate/.phan/stubs/namespaces.php | 12 + MLEB/Translate/.phan/stubs/phplot.php | 114 + MLEB/Translate/.phan/stubs/spyc.php | 18 + MLEB/Translate/.phpcs.xml | 27 +- MLEB/Translate/Autoload.php | 296 - MLEB/Translate/Doxyfile | 2 +- MLEB/Translate/Gruntfile.js | 42 +- MLEB/Translate/MediaWikiMessageChecker.php | 382 - MLEB/Translate/Message.php | 41 +- MLEB/Translate/MessageChecks.php | 455 -- MLEB/Translate/MessageCollection.php | 344 +- MLEB/Translate/MessageGroupConfigurationParser.php | 12 +- MLEB/Translate/MessageGroups.php | 286 +- MLEB/Translate/MessageValidator.php | 345 + MLEB/Translate/README | 2 +- MLEB/Translate/RELEASE-NOTES | 22 +- MLEB/Translate/Resources.php | 556 -- MLEB/Translate/Translate.alias.php | 74 - MLEB/Translate/Translate.php | 634 -- MLEB/Translate/TranslateEditAddons.php | 137 +- MLEB/Translate/TranslateHooks.php | 489 +- MLEB/Translate/TranslateUtils.php | 309 +- MLEB/Translate/api/ApiAggregateGroups.php | 4 +- MLEB/Translate/api/ApiGroupReview.php | 6 +- MLEB/Translate/api/ApiManageMessageGroups.php | 329 + MLEB/Translate/api/ApiQueryManageMessageGroups.php | 143 + MLEB/Translate/api/ApiQueryMessageCollection.php | 21 +- MLEB/Translate/api/ApiQueryMessageGroupStats.php | 2 +- MLEB/Translate/api/ApiQueryMessageGroups.php | 65 +- MLEB/Translate/api/ApiQueryTranslationAids.php | 132 - MLEB/Translate/api/ApiSearchTranslations.php | 1 + MLEB/Translate/api/ApiStatsQuery.php | 2 +- MLEB/Translate/api/ApiTTMServer.php | 4 +- MLEB/Translate/api/ApiTranslateSandbox.php | 16 +- MLEB/Translate/api/ApiTranslationAids.php | 132 + MLEB/Translate/api/ApiTranslationCheck.php | 40 +- MLEB/Translate/api/ApiTranslationReview.php | 42 +- MLEB/Translate/api/ApiTranslationStash.php | 1 + MLEB/Translate/composer.json | 44 +- MLEB/Translate/data/group-yaml-schema.yaml | 71 +- MLEB/Translate/data/plural-cldr.json | 884 +++ MLEB/Translate/extension-wip.json | 49 - MLEB/Translate/extension.json | 1035 +++ MLEB/Translate/ffs/AmdFFS.php | 6 +- MLEB/Translate/ffs/AndroidXmlFFS.php | 29 +- MLEB/Translate/ffs/AppleFFS.php | 39 +- MLEB/Translate/ffs/AppleInfoPlistFfs.php | 51 + MLEB/Translate/ffs/DtdFFS.php | 40 +- MLEB/Translate/ffs/FlatPhpFFS.php | 6 +- MLEB/Translate/ffs/GettextFFS.php | 196 +- MLEB/Translate/ffs/GettextPluralException.php | 12 + MLEB/Translate/ffs/IniFFS.php | 11 +- MLEB/Translate/ffs/IntuitionTextdomains.php | 108 - MLEB/Translate/ffs/JavaFFS.php | 6 +- MLEB/Translate/ffs/JavaScriptFFS.php | 86 +- MLEB/Translate/ffs/JsonFFS.php | 26 +- MLEB/Translate/ffs/MediaWikiComplexMessages.php | 768 -- MLEB/Translate/ffs/MediaWikiExtensions.php | 372 - MLEB/Translate/ffs/PremadeIntuitionTextdomains.php | 104 + .../ffs/PremadeMediawikiExtensionGroups.php | 366 + MLEB/Translate/ffs/SimpleFFS.php | 17 +- MLEB/Translate/ffs/XliffFFS.php | 6 +- MLEB/Translate/ffs/YamlFFS.php | 17 +- MLEB/Translate/hooks.txt | 35 +- MLEB/Translate/i18n/api/ar.json | 30 +- MLEB/Translate/i18n/api/ast.json | 8 +- MLEB/Translate/i18n/api/be-tarask.json | 3 +- MLEB/Translate/i18n/api/bg.json | 40 +- MLEB/Translate/i18n/api/bs.json | 7 +- MLEB/Translate/i18n/api/ca.json | 27 +- MLEB/Translate/i18n/api/ckb.json | 2 +- MLEB/Translate/i18n/api/cs.json | 7 +- MLEB/Translate/i18n/api/da.json | 1 + MLEB/Translate/i18n/api/de.json | 29 +- MLEB/Translate/i18n/api/diq.json | 1 + MLEB/Translate/i18n/api/en.json | 28 +- MLEB/Translate/i18n/api/eo.json | 33 + MLEB/Translate/i18n/api/es.json | 23 +- MLEB/Translate/i18n/api/eu.json | 4 +- MLEB/Translate/i18n/api/fa.json | 7 +- MLEB/Translate/i18n/api/fi.json | 8 +- MLEB/Translate/i18n/api/fit.json | 8 + MLEB/Translate/i18n/api/fr.json | 165 +- MLEB/Translate/i18n/api/fy.json | 4 +- MLEB/Translate/i18n/api/gl.json | 10 +- MLEB/Translate/i18n/api/he.json | 32 +- MLEB/Translate/i18n/api/hr.json | 5 +- MLEB/Translate/i18n/api/hu.json | 4 +- MLEB/Translate/i18n/api/ia.json | 33 + MLEB/Translate/i18n/api/io.json | 8 + MLEB/Translate/i18n/api/is.json | 5 +- MLEB/Translate/i18n/api/it.json | 8 +- MLEB/Translate/i18n/api/ja.json | 100 +- MLEB/Translate/i18n/api/ka.json | 4 +- MLEB/Translate/i18n/api/ko.json | 14 +- MLEB/Translate/i18n/api/ku-latn.json | 4 +- MLEB/Translate/i18n/api/lt.json | 12 +- MLEB/Translate/i18n/api/lv.json | 7 + MLEB/Translate/i18n/api/mk.json | 39 +- MLEB/Translate/i18n/api/my.json | 4 +- MLEB/Translate/i18n/api/nb.json | 54 +- MLEB/Translate/i18n/api/nds-nl.json | 8 + MLEB/Translate/i18n/api/ne.json | 4 +- MLEB/Translate/i18n/api/nl.json | 23 +- MLEB/Translate/i18n/api/nn.json | 2 +- MLEB/Translate/i18n/api/pl.json | 4 +- MLEB/Translate/i18n/api/pt-br.json | 32 +- MLEB/Translate/i18n/api/pt.json | 26 +- MLEB/Translate/i18n/api/qqq.json | 33 +- MLEB/Translate/i18n/api/roa-tara.json | 10 + MLEB/Translate/i18n/api/ru.json | 17 +- MLEB/Translate/i18n/api/sdc.json | 16 + MLEB/Translate/i18n/api/sq.json | 2 +- MLEB/Translate/i18n/api/sr-ec.json | 4 +- MLEB/Translate/i18n/api/sr-el.json | 4 +- MLEB/Translate/i18n/api/sv.json | 25 +- MLEB/Translate/i18n/api/tg-cyrl.json | 8 + MLEB/Translate/i18n/api/tl.json | 4 +- MLEB/Translate/i18n/api/tr.json | 168 +- MLEB/Translate/i18n/api/tt-cyrl.json | 3 +- MLEB/Translate/i18n/api/uk.json | 34 +- MLEB/Translate/i18n/api/vec.json | 9 + MLEB/Translate/i18n/api/yi.json | 10 +- MLEB/Translate/i18n/api/zh-hans.json | 17 +- MLEB/Translate/i18n/api/zh-hant.json | 38 +- MLEB/Translate/i18n/core/ace.json | 8 +- MLEB/Translate/i18n/core/aeb-latn.json | 4 +- MLEB/Translate/i18n/core/af.json | 40 +- MLEB/Translate/i18n/core/ais.json | 24 - MLEB/Translate/i18n/core/am.json | 4 +- MLEB/Translate/i18n/core/an.json | 14 - MLEB/Translate/i18n/core/ar.json | 109 +- MLEB/Translate/i18n/core/arc.json | 13 +- MLEB/Translate/i18n/core/arn.json | 5 +- MLEB/Translate/i18n/core/ary.json | 8 +- MLEB/Translate/i18n/core/arz.json | 30 +- MLEB/Translate/i18n/core/as.json | 25 +- MLEB/Translate/i18n/core/ast.json | 68 +- MLEB/Translate/i18n/core/atj.json | 1 - MLEB/Translate/i18n/core/awa.json | 56 +- MLEB/Translate/i18n/core/az.json | 33 +- MLEB/Translate/i18n/core/azb.json | 42 +- MLEB/Translate/i18n/core/ba.json | 28 +- MLEB/Translate/i18n/core/ban.json | 21 + MLEB/Translate/i18n/core/bar.json | 5 +- MLEB/Translate/i18n/core/bbc-latn.json | 8 + MLEB/Translate/i18n/core/bcc.json | 3 +- MLEB/Translate/i18n/core/bcl.json | 6 - MLEB/Translate/i18n/core/be-tarask.json | 64 +- MLEB/Translate/i18n/core/be.json | 45 +- MLEB/Translate/i18n/core/bg.json | 163 +- MLEB/Translate/i18n/core/bho.json | 6 - MLEB/Translate/i18n/core/bjn.json | 8 + MLEB/Translate/i18n/core/bn.json | 80 +- MLEB/Translate/i18n/core/bo.json | 4 - MLEB/Translate/i18n/core/bqi.json | 2 +- MLEB/Translate/i18n/core/br.json | 66 +- MLEB/Translate/i18n/core/bs.json | 46 +- MLEB/Translate/i18n/core/bug.json | 1 - MLEB/Translate/i18n/core/ca.json | 75 +- MLEB/Translate/i18n/core/cdo.json | 4 +- MLEB/Translate/i18n/core/ce.json | 63 +- MLEB/Translate/i18n/core/ceb.json | 2 + MLEB/Translate/i18n/core/ckb.json | 42 +- MLEB/Translate/i18n/core/cnr-latn.json | 8 + MLEB/Translate/i18n/core/cop.json | 8 + MLEB/Translate/i18n/core/cs.json | 58 +- MLEB/Translate/i18n/core/cv.json | 4 +- MLEB/Translate/i18n/core/cy.json | 30 +- MLEB/Translate/i18n/core/da.json | 52 +- MLEB/Translate/i18n/core/de-formal.json | 10 +- MLEB/Translate/i18n/core/de.json | 96 +- MLEB/Translate/i18n/core/diq.json | 136 +- MLEB/Translate/i18n/core/dsb.json | 42 +- MLEB/Translate/i18n/core/dtp.json | 4 +- MLEB/Translate/i18n/core/dty.json | 4 +- MLEB/Translate/i18n/core/ee.json | 4 - MLEB/Translate/i18n/core/el.json | 60 +- MLEB/Translate/i18n/core/en-gb.json | 4 +- MLEB/Translate/i18n/core/en.json | 97 +- MLEB/Translate/i18n/core/eo.json | 118 +- MLEB/Translate/i18n/core/es.json | 95 +- MLEB/Translate/i18n/core/et.json | 56 +- MLEB/Translate/i18n/core/eu.json | 42 +- MLEB/Translate/i18n/core/ext.json | 5 +- MLEB/Translate/i18n/core/fa.json | 61 +- MLEB/Translate/i18n/core/ff.json | 8 + MLEB/Translate/i18n/core/fi.json | 79 +- MLEB/Translate/i18n/core/fit.json | 246 + MLEB/Translate/i18n/core/fo.json | 31 +- MLEB/Translate/i18n/core/fon.json | 8 + MLEB/Translate/i18n/core/fr.json | 276 +- MLEB/Translate/i18n/core/frp.json | 30 +- MLEB/Translate/i18n/core/frr.json | 1 - MLEB/Translate/i18n/core/fur.json | 25 +- MLEB/Translate/i18n/core/fy.json | 91 +- MLEB/Translate/i18n/core/ga.json | 6 +- MLEB/Translate/i18n/core/gcr.json | 9 +- MLEB/Translate/i18n/core/gl.json | 48 +- MLEB/Translate/i18n/core/glk.json | 4 +- MLEB/Translate/i18n/core/gom-deva.json | 6 +- MLEB/Translate/i18n/core/gom-latn.json | 11 +- MLEB/Translate/i18n/core/grc.json | 12 +- MLEB/Translate/i18n/core/gsw.json | 24 +- MLEB/Translate/i18n/core/gu.json | 30 +- MLEB/Translate/i18n/core/ha.json | 5 +- MLEB/Translate/i18n/core/hak.json | 9 +- MLEB/Translate/i18n/core/haw.json | 2 + MLEB/Translate/i18n/core/he.json | 107 +- MLEB/Translate/i18n/core/hi.json | 22 +- MLEB/Translate/i18n/core/hil.json | 6 +- MLEB/Translate/i18n/core/hr.json | 90 +- MLEB/Translate/i18n/core/hsb.json | 44 +- MLEB/Translate/i18n/core/ht.json | 26 +- MLEB/Translate/i18n/core/hu.json | 62 +- MLEB/Translate/i18n/core/hy.json | 10 +- MLEB/Translate/i18n/core/hyw.json | 26 +- MLEB/Translate/i18n/core/ia.json | 38 +- MLEB/Translate/i18n/core/id.json | 161 +- MLEB/Translate/i18n/core/ig.json | 4 +- MLEB/Translate/i18n/core/ilo.json | 34 +- MLEB/Translate/i18n/core/inh.json | 11 +- MLEB/Translate/i18n/core/io.json | 59 +- MLEB/Translate/i18n/core/is.json | 29 +- MLEB/Translate/i18n/core/it.json | 83 +- MLEB/Translate/i18n/core/ja.json | 92 +- MLEB/Translate/i18n/core/jam.json | 5 +- MLEB/Translate/i18n/core/jbo.json | 7 +- MLEB/Translate/i18n/core/jut.json | 1 - MLEB/Translate/i18n/core/jv.json | 100 +- MLEB/Translate/i18n/core/ka.json | 31 +- MLEB/Translate/i18n/core/kaa.json | 15 - MLEB/Translate/i18n/core/kab.json | 25 +- MLEB/Translate/i18n/core/kea.json | 8 + MLEB/Translate/i18n/core/kiu.json | 11 +- MLEB/Translate/i18n/core/kjp.json | 4 +- MLEB/Translate/i18n/core/kk-arab.json | 14 - MLEB/Translate/i18n/core/kk-cyrl.json | 36 +- MLEB/Translate/i18n/core/kk-latn.json | 14 - MLEB/Translate/i18n/core/km.json | 39 +- MLEB/Translate/i18n/core/kn.json | 20 +- MLEB/Translate/i18n/core/ko.json | 104 +- MLEB/Translate/i18n/core/krc.json | 5 +- MLEB/Translate/i18n/core/ksh.json | 34 +- MLEB/Translate/i18n/core/ksw.json | 8 + MLEB/Translate/i18n/core/ku-latn.json | 32 +- MLEB/Translate/i18n/core/la.json | 5 +- MLEB/Translate/i18n/core/lb.json | 91 +- MLEB/Translate/i18n/core/lfn.json | 4 +- MLEB/Translate/i18n/core/lg.json | 1 - MLEB/Translate/i18n/core/li.json | 1 - MLEB/Translate/i18n/core/lij.json | 58 + MLEB/Translate/i18n/core/lki.json | 22 +- MLEB/Translate/i18n/core/lmo.json | 3 - MLEB/Translate/i18n/core/lo.json | 4 +- MLEB/Translate/i18n/core/lrc.json | 9 +- MLEB/Translate/i18n/core/lt.json | 63 +- MLEB/Translate/i18n/core/ltg.json | 2 - MLEB/Translate/i18n/core/lus.json | 24 +- MLEB/Translate/i18n/core/lv.json | 51 +- MLEB/Translate/i18n/core/lzh.json | 31 +- MLEB/Translate/i18n/core/mai.json | 4 +- MLEB/Translate/i18n/core/map-bms.json | 16 +- MLEB/Translate/i18n/core/mhr.json | 4 +- MLEB/Translate/i18n/core/min.json | 11 +- MLEB/Translate/i18n/core/mk.json | 103 +- MLEB/Translate/i18n/core/ml.json | 31 +- MLEB/Translate/i18n/core/mn.json | 1 - MLEB/Translate/i18n/core/mni.json | 1 + MLEB/Translate/i18n/core/mo.json | 9 +- MLEB/Translate/i18n/core/mr.json | 32 +- MLEB/Translate/i18n/core/mrh.json | 8 + MLEB/Translate/i18n/core/ms.json | 59 +- MLEB/Translate/i18n/core/mt.json | 34 +- MLEB/Translate/i18n/core/mwl.json | 5 +- MLEB/Translate/i18n/core/my.json | 30 +- MLEB/Translate/i18n/core/myv.json | 12 +- MLEB/Translate/i18n/core/nah.json | 26 +- MLEB/Translate/i18n/core/nan.json | 2 +- MLEB/Translate/i18n/core/nb.json | 110 +- MLEB/Translate/i18n/core/nds-nl.json | 52 +- MLEB/Translate/i18n/core/nds.json | 10 +- MLEB/Translate/i18n/core/ne.json | 123 +- MLEB/Translate/i18n/core/nl.json | 102 +- MLEB/Translate/i18n/core/nn.json | 35 +- MLEB/Translate/i18n/core/nqo.json | 15 + MLEB/Translate/i18n/core/nso.json | 1 - MLEB/Translate/i18n/core/ny.json | 8 + MLEB/Translate/i18n/core/oc.json | 50 +- MLEB/Translate/i18n/core/or.json | 23 +- MLEB/Translate/i18n/core/os.json | 2 - MLEB/Translate/i18n/core/pa.json | 26 +- MLEB/Translate/i18n/core/pam.json | 2 - MLEB/Translate/i18n/core/pcd.json | 8 + MLEB/Translate/i18n/core/pdc.json | 8 +- MLEB/Translate/i18n/core/pfl.json | 26 +- MLEB/Translate/i18n/core/pl.json | 109 +- MLEB/Translate/i18n/core/pms.json | 34 +- MLEB/Translate/i18n/core/pnb.json | 4 +- MLEB/Translate/i18n/core/ps.json | 28 +- MLEB/Translate/i18n/core/pt-br.json | 114 +- MLEB/Translate/i18n/core/pt.json | 84 +- MLEB/Translate/i18n/core/qqq.json | 126 +- MLEB/Translate/i18n/core/qu.json | 26 +- MLEB/Translate/i18n/core/rej.json | 8 + MLEB/Translate/i18n/core/rif.json | 4 +- MLEB/Translate/i18n/core/rm.json | 2 +- MLEB/Translate/i18n/core/ro.json | 46 +- MLEB/Translate/i18n/core/roa-tara.json | 96 +- MLEB/Translate/i18n/core/ru.json | 139 +- MLEB/Translate/i18n/core/rue.json | 25 +- MLEB/Translate/i18n/core/sa.json | 7 +- MLEB/Translate/i18n/core/sah.json | 27 +- MLEB/Translate/i18n/core/sat.json | 5 +- MLEB/Translate/i18n/core/sc.json | 8 +- MLEB/Translate/i18n/core/scn.json | 1 - MLEB/Translate/i18n/core/sco.json | 46 +- MLEB/Translate/i18n/core/sd.json | 77 +- MLEB/Translate/i18n/core/sdc.json | 25 + MLEB/Translate/i18n/core/sh.json | 4 +- MLEB/Translate/i18n/core/si.json | 28 +- MLEB/Translate/i18n/core/sk.json | 138 +- MLEB/Translate/i18n/core/skr-arab.json | 10 +- MLEB/Translate/i18n/core/sl.json | 60 +- MLEB/Translate/i18n/core/smn.json | 8 + MLEB/Translate/i18n/core/so.json | 7 +- MLEB/Translate/i18n/core/sq.json | 12 +- MLEB/Translate/i18n/core/sr-ec.json | 212 +- MLEB/Translate/i18n/core/sr-el.json | 48 +- MLEB/Translate/i18n/core/stq.json | 19 +- MLEB/Translate/i18n/core/su.json | 17 - MLEB/Translate/i18n/core/sv.json | 138 +- MLEB/Translate/i18n/core/szl.json | 9 +- MLEB/Translate/i18n/core/szy.json | 24 + MLEB/Translate/i18n/core/ta.json | 32 +- MLEB/Translate/i18n/core/tcy.json | 11 +- MLEB/Translate/i18n/core/te.json | 43 +- MLEB/Translate/i18n/core/tet.json | 1 - MLEB/Translate/i18n/core/tg-cyrl.json | 151 +- MLEB/Translate/i18n/core/tg-latn.json | 14 +- MLEB/Translate/i18n/core/th.json | 56 +- MLEB/Translate/i18n/core/ti.json | 84 + MLEB/Translate/i18n/core/tk.json | 1 - MLEB/Translate/i18n/core/tl.json | 26 +- MLEB/Translate/i18n/core/tly.json | 15 +- MLEB/Translate/i18n/core/tn.json | 9 + MLEB/Translate/i18n/core/tr.json | 290 +- MLEB/Translate/i18n/core/trv.json | 9 + MLEB/Translate/i18n/core/tt-cyrl.json | 169 +- MLEB/Translate/i18n/core/tyv.json | 7 +- MLEB/Translate/i18n/core/udm.json | 2 +- MLEB/Translate/i18n/core/ug-arab.json | 24 +- MLEB/Translate/i18n/core/uk.json | 142 +- MLEB/Translate/i18n/core/ur.json | 35 +- MLEB/Translate/i18n/core/uz.json | 21 +- MLEB/Translate/i18n/core/vec.json | 58 +- MLEB/Translate/i18n/core/vep.json | 13 - MLEB/Translate/i18n/core/vi.json | 49 +- MLEB/Translate/i18n/core/vo.json | 15 +- MLEB/Translate/i18n/core/wa.json | 25 +- MLEB/Translate/i18n/core/wuu.json | 2 +- MLEB/Translate/i18n/core/xh.json | 10 + MLEB/Translate/i18n/core/xsy.json | 8 + MLEB/Translate/i18n/core/yi.json | 34 +- MLEB/Translate/i18n/core/yue.json | 36 +- MLEB/Translate/i18n/core/za.json | 11 + MLEB/Translate/i18n/core/zgh.json | 2 +- MLEB/Translate/i18n/core/zh-hans.json | 79 +- MLEB/Translate/i18n/core/zh-hant.json | 121 +- MLEB/Translate/i18n/pagetranslation/ady-cyrl.json | 4 +- MLEB/Translate/i18n/pagetranslation/af.json | 2 - MLEB/Translate/i18n/pagetranslation/ais.json | 9 - MLEB/Translate/i18n/pagetranslation/ann.json | 8 + MLEB/Translate/i18n/pagetranslation/ar.json | 31 +- MLEB/Translate/i18n/pagetranslation/ary.json | 8 + MLEB/Translate/i18n/pagetranslation/arz.json | 5 +- MLEB/Translate/i18n/pagetranslation/as.json | 5 +- MLEB/Translate/i18n/pagetranslation/ast.json | 14 +- MLEB/Translate/i18n/pagetranslation/awa.json | 4 +- MLEB/Translate/i18n/pagetranslation/az.json | 34 +- MLEB/Translate/i18n/pagetranslation/azb.json | 9 +- MLEB/Translate/i18n/pagetranslation/ba.json | 4 +- MLEB/Translate/i18n/pagetranslation/ban.json | 8 + MLEB/Translate/i18n/pagetranslation/bcl.json | 3 - MLEB/Translate/i18n/pagetranslation/be-tarask.json | 80 +- MLEB/Translate/i18n/pagetranslation/be.json | 8 +- MLEB/Translate/i18n/pagetranslation/bg.json | 10 +- MLEB/Translate/i18n/pagetranslation/bjn.json | 8 + MLEB/Translate/i18n/pagetranslation/bn.json | 13 +- MLEB/Translate/i18n/pagetranslation/bqi.json | 2 +- MLEB/Translate/i18n/pagetranslation/br.json | 10 +- MLEB/Translate/i18n/pagetranslation/bs.json | 7 +- MLEB/Translate/i18n/pagetranslation/ca.json | 81 +- MLEB/Translate/i18n/pagetranslation/ce.json | 11 +- MLEB/Translate/i18n/pagetranslation/ckb.json | 9 +- MLEB/Translate/i18n/pagetranslation/cnr-latn.json | 8 + MLEB/Translate/i18n/pagetranslation/cs.json | 30 +- MLEB/Translate/i18n/pagetranslation/cy.json | 4 +- MLEB/Translate/i18n/pagetranslation/da.json | 11 +- MLEB/Translate/i18n/pagetranslation/de.json | 38 +- MLEB/Translate/i18n/pagetranslation/diq.json | 14 +- MLEB/Translate/i18n/pagetranslation/dsb.json | 3 - MLEB/Translate/i18n/pagetranslation/el.json | 41 +- MLEB/Translate/i18n/pagetranslation/en-gb.json | 6 +- MLEB/Translate/i18n/pagetranslation/en.json | 37 +- MLEB/Translate/i18n/pagetranslation/eo.json | 29 +- MLEB/Translate/i18n/pagetranslation/es-formal.json | 8 + MLEB/Translate/i18n/pagetranslation/es.json | 46 +- MLEB/Translate/i18n/pagetranslation/et.json | 13 +- MLEB/Translate/i18n/pagetranslation/eu.json | 4 +- MLEB/Translate/i18n/pagetranslation/fa.json | 25 +- MLEB/Translate/i18n/pagetranslation/ff.json | 8 + MLEB/Translate/i18n/pagetranslation/fi.json | 18 +- MLEB/Translate/i18n/pagetranslation/fit.json | 28 + MLEB/Translate/i18n/pagetranslation/fr.json | 297 +- MLEB/Translate/i18n/pagetranslation/frp.json | 2 - MLEB/Translate/i18n/pagetranslation/fy.json | 8 +- MLEB/Translate/i18n/pagetranslation/ga.json | 4 +- MLEB/Translate/i18n/pagetranslation/gl.json | 10 +- MLEB/Translate/i18n/pagetranslation/gom-latn.json | 9 +- MLEB/Translate/i18n/pagetranslation/gsw.json | 3 - MLEB/Translate/i18n/pagetranslation/gu.json | 3 +- MLEB/Translate/i18n/pagetranslation/ha.json | 4 +- MLEB/Translate/i18n/pagetranslation/he.json | 42 +- MLEB/Translate/i18n/pagetranslation/hi.json | 6 +- MLEB/Translate/i18n/pagetranslation/hr.json | 36 +- MLEB/Translate/i18n/pagetranslation/hsb.json | 3 - MLEB/Translate/i18n/pagetranslation/ht.json | 1 - MLEB/Translate/i18n/pagetranslation/hu.json | 55 +- MLEB/Translate/i18n/pagetranslation/hy.json | 6 +- MLEB/Translate/i18n/pagetranslation/hyw.json | 4 +- MLEB/Translate/i18n/pagetranslation/ia.json | 10 +- MLEB/Translate/i18n/pagetranslation/id.json | 14 +- MLEB/Translate/i18n/pagetranslation/inh.json | 5 +- MLEB/Translate/i18n/pagetranslation/io.json | 15 +- MLEB/Translate/i18n/pagetranslation/is.json | 9 +- MLEB/Translate/i18n/pagetranslation/it.json | 35 +- MLEB/Translate/i18n/pagetranslation/ja.json | 63 +- MLEB/Translate/i18n/pagetranslation/jam.json | 5 +- MLEB/Translate/i18n/pagetranslation/jv.json | 37 +- MLEB/Translate/i18n/pagetranslation/ka.json | 4 +- MLEB/Translate/i18n/pagetranslation/kab.json | 2 - MLEB/Translate/i18n/pagetranslation/kiu.json | 10 + MLEB/Translate/i18n/pagetranslation/kjp.json | 1 + MLEB/Translate/i18n/pagetranslation/kk-cyrl.json | 2 - MLEB/Translate/i18n/pagetranslation/km.json | 6 +- MLEB/Translate/i18n/pagetranslation/kn.json | 4 +- MLEB/Translate/i18n/pagetranslation/ko.json | 57 +- MLEB/Translate/i18n/pagetranslation/krc.json | 4 +- MLEB/Translate/i18n/pagetranslation/ksh.json | 7 +- MLEB/Translate/i18n/pagetranslation/ksw.json | 8 + MLEB/Translate/i18n/pagetranslation/ku-latn.json | 8 +- MLEB/Translate/i18n/pagetranslation/lb.json | 37 +- MLEB/Translate/i18n/pagetranslation/lki.json | 1 - MLEB/Translate/i18n/pagetranslation/lld.json | 8 + MLEB/Translate/i18n/pagetranslation/lrc.json | 3 +- MLEB/Translate/i18n/pagetranslation/lt.json | 13 +- MLEB/Translate/i18n/pagetranslation/lv.json | 9 + MLEB/Translate/i18n/pagetranslation/lzh.json | 4 +- MLEB/Translate/i18n/pagetranslation/min.json | 4 +- MLEB/Translate/i18n/pagetranslation/mk.json | 40 +- MLEB/Translate/i18n/pagetranslation/mr.json | 4 - MLEB/Translate/i18n/pagetranslation/mrh.json | 13 + MLEB/Translate/i18n/pagetranslation/ms.json | 10 +- MLEB/Translate/i18n/pagetranslation/mwl.json | 4 +- MLEB/Translate/i18n/pagetranslation/my.json | 7 +- MLEB/Translate/i18n/pagetranslation/myv.json | 2 + MLEB/Translate/i18n/pagetranslation/nah.json | 5 +- MLEB/Translate/i18n/pagetranslation/nan.json | 8 + MLEB/Translate/i18n/pagetranslation/nb.json | 48 +- MLEB/Translate/i18n/pagetranslation/nds-nl.json | 6 +- MLEB/Translate/i18n/pagetranslation/ne.json | 5 +- MLEB/Translate/i18n/pagetranslation/nl.json | 55 +- MLEB/Translate/i18n/pagetranslation/nn.json | 6 +- MLEB/Translate/i18n/pagetranslation/nqo.json | 9 + MLEB/Translate/i18n/pagetranslation/oc.json | 1 - MLEB/Translate/i18n/pagetranslation/pam.json | 4 +- MLEB/Translate/i18n/pagetranslation/pcd.json | 8 + MLEB/Translate/i18n/pagetranslation/pfl.json | 3 - MLEB/Translate/i18n/pagetranslation/pl.json | 49 +- MLEB/Translate/i18n/pagetranslation/pms.json | 3 - MLEB/Translate/i18n/pagetranslation/ps.json | 4 +- MLEB/Translate/i18n/pagetranslation/pt-br.json | 47 +- MLEB/Translate/i18n/pagetranslation/pt.json | 24 +- MLEB/Translate/i18n/pagetranslation/qqq.json | 53 +- MLEB/Translate/i18n/pagetranslation/rej.json | 8 + MLEB/Translate/i18n/pagetranslation/ro.json | 13 +- MLEB/Translate/i18n/pagetranslation/roa-tara.json | 17 +- MLEB/Translate/i18n/pagetranslation/ru.json | 53 +- MLEB/Translate/i18n/pagetranslation/sa.json | 4 +- MLEB/Translate/i18n/pagetranslation/sc.json | 4 +- MLEB/Translate/i18n/pagetranslation/sco.json | 7 +- MLEB/Translate/i18n/pagetranslation/sd.json | 7 +- MLEB/Translate/i18n/pagetranslation/sdc.json | 8 + MLEB/Translate/i18n/pagetranslation/sdh.json | 8 + MLEB/Translate/i18n/pagetranslation/sh.json | 4 +- MLEB/Translate/i18n/pagetranslation/si.json | 6 +- MLEB/Translate/i18n/pagetranslation/sk.json | 8 +- MLEB/Translate/i18n/pagetranslation/skr-arab.json | 1 + MLEB/Translate/i18n/pagetranslation/sl.json | 15 +- MLEB/Translate/i18n/pagetranslation/smn.json | 8 + MLEB/Translate/i18n/pagetranslation/so.json | 2 + MLEB/Translate/i18n/pagetranslation/sq.json | 4 +- MLEB/Translate/i18n/pagetranslation/sr-ec.json | 34 +- MLEB/Translate/i18n/pagetranslation/sr-el.json | 6 +- MLEB/Translate/i18n/pagetranslation/sv.json | 51 +- MLEB/Translate/i18n/pagetranslation/szl.json | 5 +- MLEB/Translate/i18n/pagetranslation/szy.json | 11 + MLEB/Translate/i18n/pagetranslation/ta.json | 11 +- MLEB/Translate/i18n/pagetranslation/tcy.json | 6 +- MLEB/Translate/i18n/pagetranslation/te.json | 7 +- MLEB/Translate/i18n/pagetranslation/tg-cyrl.json | 7 +- MLEB/Translate/i18n/pagetranslation/th.json | 8 +- MLEB/Translate/i18n/pagetranslation/ti.json | 19 + MLEB/Translate/i18n/pagetranslation/tl.json | 3 - MLEB/Translate/i18n/pagetranslation/tly.json | 11 + MLEB/Translate/i18n/pagetranslation/tr.json | 216 +- MLEB/Translate/i18n/pagetranslation/trv.json | 8 + MLEB/Translate/i18n/pagetranslation/tt-cyrl.json | 29 +- MLEB/Translate/i18n/pagetranslation/ug-arab.json | 1 - MLEB/Translate/i18n/pagetranslation/uk.json | 78 +- MLEB/Translate/i18n/pagetranslation/ur.json | 13 +- MLEB/Translate/i18n/pagetranslation/vec.json | 6 +- MLEB/Translate/i18n/pagetranslation/vi.json | 4 - MLEB/Translate/i18n/pagetranslation/wa.json | 8 + MLEB/Translate/i18n/pagetranslation/xmf.json | 2 + MLEB/Translate/i18n/pagetranslation/xsy.json | 8 + MLEB/Translate/i18n/pagetranslation/yi.json | 2 - MLEB/Translate/i18n/pagetranslation/yo.json | 4 +- MLEB/Translate/i18n/pagetranslation/yue.json | 5 +- MLEB/Translate/i18n/pagetranslation/zh-hans.json | 38 +- MLEB/Translate/i18n/pagetranslation/zh-hant.json | 57 +- MLEB/Translate/i18n/sandbox/af.json | 4 +- MLEB/Translate/i18n/sandbox/ar.json | 6 +- MLEB/Translate/i18n/sandbox/ast.json | 4 +- MLEB/Translate/i18n/sandbox/be.json | 8 + MLEB/Translate/i18n/sandbox/bs.json | 3 +- MLEB/Translate/i18n/sandbox/da.json | 4 +- MLEB/Translate/i18n/sandbox/de.json | 6 +- MLEB/Translate/i18n/sandbox/diq.json | 12 +- MLEB/Translate/i18n/sandbox/dsb.json | 4 +- MLEB/Translate/i18n/sandbox/en.json | 2 +- MLEB/Translate/i18n/sandbox/eo.json | 18 + MLEB/Translate/i18n/sandbox/es.json | 5 +- MLEB/Translate/i18n/sandbox/eu.json | 4 +- MLEB/Translate/i18n/sandbox/fa.json | 8 +- MLEB/Translate/i18n/sandbox/fi.json | 8 +- MLEB/Translate/i18n/sandbox/fit.json | 12 + MLEB/Translate/i18n/sandbox/fr.json | 54 +- MLEB/Translate/i18n/sandbox/fy.json | 9 +- MLEB/Translate/i18n/sandbox/gl.json | 4 +- MLEB/Translate/i18n/sandbox/gu.json | 4 +- MLEB/Translate/i18n/sandbox/hu.json | 3 +- MLEB/Translate/i18n/sandbox/ia.json | 2 +- MLEB/Translate/i18n/sandbox/io.json | 8 + MLEB/Translate/i18n/sandbox/it.json | 2 +- MLEB/Translate/i18n/sandbox/ja.json | 12 +- MLEB/Translate/i18n/sandbox/ko.json | 13 +- MLEB/Translate/i18n/sandbox/ksh.json | 4 +- MLEB/Translate/i18n/sandbox/lb.json | 7 +- MLEB/Translate/i18n/sandbox/lki.json | 4 +- MLEB/Translate/i18n/sandbox/mk.json | 4 +- MLEB/Translate/i18n/sandbox/mr.json | 4 +- MLEB/Translate/i18n/sandbox/mt.json | 8 + MLEB/Translate/i18n/sandbox/nb.json | 10 +- MLEB/Translate/i18n/sandbox/ne.json | 4 +- MLEB/Translate/i18n/sandbox/nl.json | 10 +- MLEB/Translate/i18n/sandbox/pt-br.json | 6 +- MLEB/Translate/i18n/sandbox/pt.json | 8 +- MLEB/Translate/i18n/sandbox/qqq.json | 11 +- MLEB/Translate/i18n/sandbox/ro.json | 5 +- MLEB/Translate/i18n/sandbox/roa-tara.json | 31 +- MLEB/Translate/i18n/sandbox/ru.json | 5 +- MLEB/Translate/i18n/sandbox/sd.json | 11 +- MLEB/Translate/i18n/sandbox/sh.json | 33 + MLEB/Translate/i18n/sandbox/sk.json | 7 +- MLEB/Translate/i18n/sandbox/sr-ec.json | 4 +- MLEB/Translate/i18n/sandbox/sv.json | 7 +- MLEB/Translate/i18n/sandbox/sw.json | 8 + MLEB/Translate/i18n/sandbox/tcy.json | 4 +- MLEB/Translate/i18n/sandbox/tr.json | 47 +- MLEB/Translate/i18n/sandbox/tt-cyrl.json | 18 +- MLEB/Translate/i18n/sandbox/uk.json | 10 +- MLEB/Translate/i18n/sandbox/vi.json | 5 +- MLEB/Translate/i18n/sandbox/yo.json | 8 + MLEB/Translate/i18n/sandbox/zh-hans.json | 5 +- MLEB/Translate/i18n/sandbox/zh-hant.json | 21 +- MLEB/Translate/i18n/search/ais.json | 11 - MLEB/Translate/i18n/search/ar.json | 9 +- MLEB/Translate/i18n/search/ast.json | 4 +- MLEB/Translate/i18n/search/be-tarask.json | 4 +- MLEB/Translate/i18n/search/bg.json | 7 +- MLEB/Translate/i18n/search/bn.json | 2 +- MLEB/Translate/i18n/search/br.json | 26 +- MLEB/Translate/i18n/search/bs.json | 3 +- MLEB/Translate/i18n/search/ca.json | 4 +- MLEB/Translate/i18n/search/ce.json | 3 +- MLEB/Translate/i18n/search/ckb.json | 2 +- MLEB/Translate/i18n/search/de.json | 4 +- MLEB/Translate/i18n/search/diq.json | 15 +- MLEB/Translate/i18n/search/en.json | 4 +- MLEB/Translate/i18n/search/eo.json | 9 +- MLEB/Translate/i18n/search/es.json | 8 +- MLEB/Translate/i18n/search/fa.json | 6 +- MLEB/Translate/i18n/search/fit.json | 22 + MLEB/Translate/i18n/search/fr.json | 35 +- MLEB/Translate/i18n/search/fy.json | 4 +- MLEB/Translate/i18n/search/gcr.json | 8 + MLEB/Translate/i18n/search/gl.json | 4 +- MLEB/Translate/i18n/search/he.json | 4 +- MLEB/Translate/i18n/search/hsb.json | 4 +- MLEB/Translate/i18n/search/io.json | 13 + MLEB/Translate/i18n/search/it.json | 10 +- MLEB/Translate/i18n/search/ja.json | 15 +- MLEB/Translate/i18n/search/kiu.json | 7 +- MLEB/Translate/i18n/search/ko.json | 9 +- MLEB/Translate/i18n/search/krc.json | 4 +- MLEB/Translate/i18n/search/krl.json | 4 +- MLEB/Translate/i18n/search/ku-latn.json | 4 +- MLEB/Translate/i18n/search/mk.json | 4 +- MLEB/Translate/i18n/search/mwl.json | 4 +- MLEB/Translate/i18n/search/nah.json | 9 + MLEB/Translate/i18n/search/nb.json | 8 +- MLEB/Translate/i18n/search/ne.json | 6 +- MLEB/Translate/i18n/search/nl.json | 13 +- MLEB/Translate/i18n/search/pl.json | 13 +- MLEB/Translate/i18n/search/pt-br.json | 7 +- MLEB/Translate/i18n/search/pt.json | 10 +- MLEB/Translate/i18n/search/qqq.json | 14 +- MLEB/Translate/i18n/search/roa-tara.json | 4 +- MLEB/Translate/i18n/search/ru.json | 11 +- MLEB/Translate/i18n/search/sd.json | 26 +- MLEB/Translate/i18n/search/sk.json | 23 +- MLEB/Translate/i18n/search/sr-ec.json | 11 +- MLEB/Translate/i18n/search/sv.json | 7 +- MLEB/Translate/i18n/search/szy.json | 11 + MLEB/Translate/i18n/search/tcy.json | 7 +- MLEB/Translate/i18n/search/ti.json | 23 + MLEB/Translate/i18n/search/tr.json | 24 +- MLEB/Translate/i18n/search/tt-cyrl.json | 12 +- MLEB/Translate/i18n/search/uk.json | 10 +- MLEB/Translate/i18n/search/vec.json | 9 + MLEB/Translate/i18n/search/zh-hans.json | 9 +- MLEB/Translate/i18n/search/zh-hant.json | 9 +- .../insertables/HtmlTagInsertablesSuggester.php | 28 + .../Translate/insertables/InsertablesSuggester.php | 7 +- .../insertables/MediaWikiInsertablesSuggester.php | 7 +- .../insertables/RegexInsertablesSuggester.php | 129 + .../messagegroups/AggregateMessageGroup.php | 63 +- .../messagegroups/FileBasedMessageGroup.php | 104 +- MLEB/Translate/messagegroups/MessageGroup.php | 23 +- MLEB/Translate/messagegroups/MessageGroupBase.php | 153 +- MLEB/Translate/messagegroups/MessageGroupOld.php | 25 +- .../messagegroups/RecentAdditionsMessageGroup.php | 2 + .../Translate/messagegroups/RecentMessageGroup.php | 14 +- .../messagegroups/SandboxMessageGroup.php | 27 +- MLEB/Translate/messagegroups/WikiMessageGroup.php | 3 +- .../messagegroups/WikiPageMessageGroup.php | 87 +- .../messagegroups/WorkflowStatesMessageGroup.php | 4 +- .../loaders/AggregateMessageGroupLoader.php | 171 + .../loaders/CachedMessageGroupLoader.php | 19 + .../loaders/FileBasedMessageGroupLoader.php | 180 + .../messagegroups/loaders/MessageGroupLoader.php | 52 + .../loaders/TranslatablePageMessageGroupStore.php | 185 + .../loaders/WorkflowStatesMessageGroupLoader.php | 39 + MLEB/Translate/package-lock.json | 4978 ++++++++++++ MLEB/Translate/package.json | 26 +- MLEB/Translate/resources/css/ext.translate.css | 2 + .../css/ext.translate.edit.documentation.less | 14 + .../resources/css/ext.translate.editor.css | 77 +- .../resources/css/ext.translate.legacy.css | 65 - .../css/ext.translate.messagerenamedialog.less | 53 + .../css/ext.translate.messagewebimporter.css | 3 - .../resources/css/ext.translate.quickedit.css | 1 + .../css/ext.translate.special.managegroups.css | 84 + ...t.translate.special.managetranslatorsandbox.css | 14 +- .../css/ext.translate.special.pagetranslation.css | 4 + .../ext.translate.special.supportedlanguages.css | 1 + .../css/ext.translate.special.translate.css | 20 +- .../css/ext.translate.special.translations.css | 39 + .../resources/css/ext.translate.tabgroup.css | 2 +- .../resources/css/ext.translate.tag.languages.css | 73 - .../resources/css/ext.translate.tag.languages.less | 86 + MLEB/Translate/resources/images/ellipsis.svg | 9 + MLEB/Translate/resources/images/label-error.svg | 4 + MLEB/Translate/resources/images/label-flag.svg | 4 +- MLEB/Translate/resources/js/ext.translate.base.js | 26 +- .../resources/js/ext.translate.dropdownmenu.js | 2 +- .../js/ext.translate.edit.documentation.js | 38 + .../resources/js/ext.translate.editor.helpers.js | 249 +- .../Translate/resources/js/ext.translate.editor.js | 353 +- .../resources/js/ext.translate.editor.shortcuts.js | 8 +- .../resources/js/ext.translate.groupselector.js | 29 +- MLEB/Translate/resources/js/ext.translate.hooks.js | 38 - .../js/ext.translate.messagerenamedialog.js | 327 + .../resources/js/ext.translate.messagetable.js | 98 +- .../js/ext.translate.multiselectautocomplete.js | 1 + .../resources/js/ext.translate.navitoggle.js | 9 +- .../resources/js/ext.translate.pagemode.js | 11 +- .../resources/js/ext.translate.parsers.js | 12 +- .../resources/js/ext.translate.proofread.js | 19 +- .../resources/js/ext.translate.selecttoinput.js | 48 +- .../js/ext.translate.special.aggregategroups.js | 78 +- .../js/ext.translate.special.languagestats.js | 32 +- .../js/ext.translate.special.managegroups.js | 353 + ...xt.translate.special.managetranslatorsandbox.js | 29 +- .../js/ext.translate.special.operatorsuggest.js | 2 +- .../js/ext.translate.special.pagemigration.js | 117 +- .../js/ext.translate.special.pagepreparation.js | 25 +- .../js/ext.translate.special.searchtranslations.js | 33 +- .../js/ext.translate.special.translate.js | 34 +- .../js/ext.translate.special.translationstash.js | 19 +- .../js/ext.translate.special.translationstats.js | 60 +- .../resources/js/ext.translate.statsbar.js | 8 +- .../resources/js/ext.translate.workflowselector.js | 8 +- .../resources/js/jquery.ajaxdispatcher.js | 2 +- MLEB/Translate/resources/js/jquery.autosize.js | 254 - MLEB/Translate/resources/js/jquery.textchange.js | 4 +- MLEB/Translate/resources/lib/jquery.autosize.js | 288 + MLEB/Translate/scripts/TranslateCliLogger.php | 3 + MLEB/Translate/scripts/characterEditStats.php | 19 +- .../scripts/completeExternalTranslation.php | 10 + MLEB/Translate/scripts/create-language-models.php | 234 - MLEB/Translate/scripts/createCheckIndex.php | 110 +- MLEB/Translate/scripts/createMessageIndex.php | 3 +- MLEB/Translate/scripts/expand-groupspec.php | 6 +- MLEB/Translate/scripts/export-rename-language.php | 148 + MLEB/Translate/scripts/export.php | 104 +- MLEB/Translate/scripts/fallbacks-graph.php | 2 +- MLEB/Translate/scripts/fuzzy.php | 109 +- MLEB/Translate/scripts/groupStatistics.php | 16 +- MLEB/Translate/scripts/languageeditstats.php | 14 +- MLEB/Translate/scripts/magic-export.php | 363 - MLEB/Translate/scripts/migrate-schema2.php | 13 +- MLEB/Translate/scripts/mwcore-export.php | 133 - MLEB/Translate/scripts/plural-comparison.php | 11 +- MLEB/Translate/scripts/poimport.php | 7 +- MLEB/Translate/scripts/populateFuzzy.php | 61 +- MLEB/Translate/scripts/processMessageChanges.php | 37 +- .../scripts/refresh-translatable-pages.php | 10 +- MLEB/Translate/scripts/removeOrphanedActors.php | 90 + MLEB/Translate/scripts/sync-group.php | 87 +- MLEB/Translate/scripts/test-mt.php | 5 +- .../Translate/scripts/translator-stats-process.php | 10 +- MLEB/Translate/scripts/translator-stats.php | 10 +- MLEB/Translate/scripts/ttmserver-export.php | 127 +- .../Translate/scripts/updateTranslatorActivity.php | 10 + MLEB/Translate/scripts/yaml-tests.php | 5 +- MLEB/Translate/sonar-project.properties | 4 + MLEB/Translate/specials/SpecialAggregateGroups.php | 27 +- .../specials/SpecialExportTranslations.php | 27 +- .../specials/SpecialImportTranslations.php | 36 +- MLEB/Translate/specials/SpecialLanguageStats.php | 78 +- MLEB/Translate/specials/SpecialMagic.php | 243 - MLEB/Translate/specials/SpecialManageGroups.php | 642 +- .../specials/SpecialManageTranslatorSandbox.php | 43 +- .../specials/SpecialMessageGroupStats.php | 23 +- .../specials/SpecialSearchTranslations.php | 91 +- .../specials/SpecialSupportedLanguages.php | 284 +- MLEB/Translate/specials/SpecialTranslate.php | 56 +- .../Translate/specials/SpecialTranslationStash.php | 18 +- .../Translate/specials/SpecialTranslationStats.php | 36 +- MLEB/Translate/specials/SpecialTranslations.php | 16 +- MLEB/Translate/src/Jobs/GenericTranslateJob.php | 66 + .../src/MessageSync/MessageSourceChange.php | 561 ++ .../src/MessageValidator/ValidationResult.php | 105 + MLEB/Translate/src/MessageValidator/Validator.php | 21 + .../src/MessageValidator/ValidatorFactory.php | 118 + .../Validators/BraceBalanceValidator.php | 55 + .../Validators/EscapeCharacterValidator.php | 89 + .../Validators/GettextNewlineValidator.php | 47 + .../Validators/GettextPluralValidator.php | 106 + .../Validators/InsertableRegexValidator.php | 78 + .../Validators/InsertableRubyVariableValidator.php | 16 + .../Validators/IosVariableValidator.php | 21 + .../Validators/MatchSetValidator.php | 66 + .../Validators/MediaWikiLinkValidator.php | 72 + .../Validators/MediaWikiPageNameValidator.php | 39 + .../Validators/MediaWikiParameterValidator.php | 15 + .../Validators/MediaWikiPluralValidator.php | 145 + .../Validators/MediaWikiTimeListValidator.php | 82 + .../Validators/NewlineValidator.php | 100 + .../Validators/NumericalParameterValidator.php | 15 + .../Validators/PrintfValidator.php | 16 + .../Validators/PythonInterpolationValidator.php | 16 + .../Validators/ReplacementValidator.php | 52 + .../Validators/SmartFormatPluralValidator.php | 110 + .../Validators/UnicodePluralValidator.php | 110 + MLEB/Translate/src/ServiceWiring.php | 43 + MLEB/Translate/src/Services.php | 63 + .../src/Statistics/StatisticsUnavailable.php | 16 + .../src/Statistics/TranslatorActivity.php | 155 + .../src/Statistics/TranslatorActivityQuery.php | 122 + .../src/Statistics/UpdateTranslatorActivityJob.php | 40 + .../UpdateTranslatorActivityMaintenanceScript.php | 27 + ...ompleteExternalTranslationMaintenanceScript.php | 83 + .../Synchronization/GroupSynchronizationCache.php | 280 + .../GroupSynchronizationResponse.php | 47 + .../src/Synchronization/MessageUpdateParameter.php | 102 + MLEB/Translate/src/SystemUsers/FuzzyBot.php | 25 + .../src/SystemUsers/TranslateUserManager.php | 25 + MLEB/Translate/src/Utilities/GettextPlural.php | 203 + .../src/Utilities/ParsingPlaceholderFactory.php | 23 + MLEB/Translate/src/Utilities/SmartFormatPlural.php | 64 + .../StringComparators/SimpleStringComparator.php | 29 + .../StringComparators/StringComparator.php | 18 + .../src/Utilities/TranslateReplaceTitle.php | 75 + MLEB/Translate/src/Utilities/UnicodePlural.php | 193 + .../src/Validation/LegacyValidatorAdapter.php | 62 + MLEB/Translate/src/Validation/MessageValidator.php | 24 + MLEB/Translate/src/Validation/ValidationIssue.php | 54 + MLEB/Translate/src/Validation/ValidationIssues.php | 53 + MLEB/Translate/stringmangler/StringMangler.php | 67 +- MLEB/Translate/stringmangler/StringMatcher.php | 229 +- MLEB/Translate/tag/PageTranslationHooks.php | 456 +- MLEB/Translate/tag/SpecialPageMigration.php | 12 +- MLEB/Translate/tag/SpecialPagePreparation.php | 2 +- MLEB/Translate/tag/SpecialPageTranslation.php | 527 +- .../tag/SpecialPageTranslationDeletePage.php | 184 +- .../tag/SpecialPageTranslationMovePage.php | 209 +- MLEB/Translate/tag/TPParse.php | 27 +- MLEB/Translate/tag/TPSection.php | 31 +- MLEB/Translate/tag/TranslatablePage.php | 197 +- MLEB/Translate/tag/TranslatablePageMoveJob.php | 14 +- MLEB/Translate/tag/TranslateDeleteJob.php | 34 +- MLEB/Translate/tag/TranslateMoveJob.php | 221 - MLEB/Translate/tag/TranslateRenderJob.php | 26 +- MLEB/Translate/tag/TranslationsUpdateJob.php | 37 +- MLEB/Translate/tests/generateRandomSandboxData.php | 2 +- .../tests/parser/translateParserTests.txt | 16 +- MLEB/Translate/tests/phpunit/BlackListTest.php | 10 +- MLEB/Translate/tests/phpunit/HookDocTest.php | 6 +- MLEB/Translate/tests/phpunit/Makefile | 2 +- .../tests/phpunit/MediaWikiMessageCheckerTest.php | 121 - .../tests/phpunit/MessageCollectionTest.php | 54 +- .../tests/phpunit/MessageGroupBaseTest.php | 166 +- .../phpunit/MessageGroupStatesUpdaterJobTest.php | 19 +- MLEB/Translate/tests/phpunit/MessageGroupsTest.php | 24 +- .../tests/phpunit/MessageIndexRebuildJobTest.php | 10 +- MLEB/Translate/tests/phpunit/MessageIndexTest.php | 62 +- .../Validators/MediaWikiPluralValidatorTest.php | 109 + .../tests/phpunit/MessageValidatorTest.php | 239 + .../tests/phpunit/MockFileBasedMessageGroup.php | 23 - .../phpunit/MockMessageCollectionForExport.php | 41 - .../tests/phpunit/MockWikiMessageGroup.php | 22 - .../tests/phpunit/PageTranslationParserTest.php | 66 - .../tests/phpunit/PageTranslationTaggingTest.php | 129 - .../Translate/tests/phpunit/ResourcesOrderTest.php | 29 - MLEB/Translate/tests/phpunit/ServicesTest.php | 30 + MLEB/Translate/tests/phpunit/SolrTTMServerTest.php | 180 - MLEB/Translate/tests/phpunit/SpecialPagesTest.php | 86 - MLEB/Translate/tests/phpunit/StringMatcherTest.php | 24 +- MLEB/Translate/tests/phpunit/TPParseTest.php | 61 - MLEB/Translate/tests/phpunit/TPSectionTest.php | 123 - .../phpunit/TTMServerMessageUpdateJobTest.php | 22 +- MLEB/Translate/tests/phpunit/TTMServerTest.php | 18 +- .../tests/phpunit/TranslatablePageTest.php | 112 - .../Translate/tests/phpunit/TranslateHooksTest.php | 6 +- .../tests/phpunit/TranslateSandboxTest.php | 17 +- .../Translate/tests/phpunit/TranslateUtilsTest.php | 47 + MLEB/Translate/tests/phpunit/TranslateYamlTest.php | 4 +- .../tests/phpunit/TranslationFuzzyUpdaterTest.php | 33 +- .../tests/phpunit/TranslationStashStorageTest.php | 2 +- .../tests/phpunit/WikiPageMessageGroupTest.php | 42 + .../tests/phpunit/api/ApiGroupReviewTest.php | 4 +- .../phpunit/api/ApiManageMessageGroupsTest.php | 219 + .../api/ApiQueryManageMessageGroupsTest.php | 123 + .../phpunit/api/ApiQueryMessageCollectionTest.php | 61 + .../phpunit/api/ApiQueryMessageGroupsTest.php | 15 +- .../tests/phpunit/api/ApiTranslationReviewTest.php | 17 +- .../phpunit/data/AppleInfoPlistFfsTest1.strings | 6 + .../phpunit/data/MediaWikiExtensionTest-conf2.yaml | 16 +- .../phpunit/data/MediaWikiExtensionTest-conf3.yaml | 16 +- .../phpunit/data/MediaWikiExtensionTest-conf4.yaml | 16 +- .../tests/phpunit/data/MessageLoaderGroups.yaml | 7 + .../tests/phpunit/data/ValidatorGroup.yaml | 16 + .../tests/phpunit/data/check-blacklist.php | 7 + .../tests/phpunit/data/messageindexdata.ser | 1 + MLEB/Translate/tests/phpunit/ffs/AmdFFSTest.php | 8 +- .../tests/phpunit/ffs/AndroidXmlFFSTest.php | 17 +- MLEB/Translate/tests/phpunit/ffs/AppleFFSTest.php | 9 +- .../tests/phpunit/ffs/AppleInfoPlistFfsTest.php | 76 + MLEB/Translate/tests/phpunit/ffs/DtdFFSTest.php | 6 +- .../Translate/tests/phpunit/ffs/GettextFFSTest.php | 23 +- MLEB/Translate/tests/phpunit/ffs/IniFFSTest.php | 6 +- MLEB/Translate/tests/phpunit/ffs/JavaFFSTest.php | 6 +- MLEB/Translate/tests/phpunit/ffs/JsonFFSTest.php | 8 +- .../tests/phpunit/ffs/MediaWikiExtensionsTest.php | 2 +- MLEB/Translate/tests/phpunit/ffs/XliffFFSTest.php | 8 +- .../phpunit/helpers/TranslatablePageTestTrait.php | 61 + .../CombinedInsertablesSuggesterTest.php | 4 +- .../MediaWikiInsertablesSuggesterTest.php | 2 - .../NumericalParameterInsertablesSuggesterTest.php | 2 - .../insertables/RegexInsertablesSuggesterTest.php | 67 + .../TranslatablePageInsertablesSuggesterTest.php | 2 - .../AggregateMessageGroupLoaderTest.php | 40 + .../FileBasedMessageGroupLoaderTest.php | 85 + .../messagegroups/MessageGroupLoaderTest.php | 54 + .../TranslatablePageMessageGroupStoreTest.php | 89 + MLEB/Translate/tests/phpunit/messageindexdata.ser | 1 - .../phpunit/mocks/MockCacheMessageGroupLoader.php | 20 + .../phpunit/mocks/MockFileBasedMessageGroup.php | 23 + .../mocks/MockMessageCollectionForExport.php | 41 + .../tests/phpunit/mocks/MockValidators.php | 31 + .../tests/phpunit/mocks/MockWikiMessageGroup.php | 59 + .../phpunit/pagetranslation/FailDoubleOpen.ptfile | 3 - .../pagetranslation/FailEmptySection.ptfile | 4 - .../FailMultipleSectionMarkers.ptfile | 5 - .../phpunit/pagetranslation/FailNotAtomic.ptfile | 5 - .../pagetranslation/FailSectionMarkerPlace.ptfile | 3 - .../tests/phpunit/pagetranslation/FailTags.ptfile | 7 - .../tests/phpunit/pagetranslation/FailTags2.ptfile | 10 - .../phpunit/pagetranslation/FailUnclosed.ptfile | 2 - .../phpunit/pagetranslation/HeaderSection.ptfile | 7 - .../phpunit/pagetranslation/HeaderSection.ptsource | 7 - .../phpunit/pagetranslation/HeaderSection.pttarget | 4 - .../tests/phpunit/pagetranslation/Inline.ptfile | 1 - .../tests/phpunit/pagetranslation/Inline.ptsource | 1 - .../tests/phpunit/pagetranslation/Inline.pttarget | 1 - .../phpunit/pagetranslation/LoneHeader.ptfile | 5 - .../phpunit/pagetranslation/LoneHeader.ptsource | 6 - .../tests/phpunit/pagetranslation/Nowiki.ptfile | 3 - .../tests/phpunit/pagetranslation/Nowiki.pttarget | 3 - .../phpunit/pagetranslation/NowikiInside.ptfile | 4 - .../phpunit/pagetranslation/NowikiInside.pttarget | 3 - .../phpunit/pagetranslation/NowikiOnly.ptfile | 1 - .../phpunit/pagetranslation/NowikiOnly.pttest | 7 - .../tests/phpunit/pagetranslation/Simple.ptfile | 3 - .../tests/phpunit/pagetranslation/Simple.ptsource | 4 - .../tests/phpunit/pagetranslation/Simple.pttarget | 1 - .../tests/phpunit/pagetranslation/Simple.pttest | 3 - .../pagetranslation/SimpleWithMarker.ptfile | 4 - .../pagetranslation/SimpleWithMarker.pttarget | 1 - .../tests/phpunit/pagetranslation/Variables.ptfile | 6 - .../phpunit/pagetranslation/Variables.pttarget | 4 - .../phpunit/pagetranslation/Whitespace.ptfile | 17 - .../phpunit/pagetranslation/Whitespace.ptsource | 19 - .../phpunit/pagetranslation/Whitespace.pttarget | 14 - .../tests/phpunit/tag/PageTranslationHooksTest.php | 125 +- .../phpunit/tag/PageTranslationParserTest.php | 64 + .../phpunit/tag/PageTranslationTaggingTest.php | 131 + .../tag/TranslatablePageIntegrationTest.php | 39 + .../tag/pagetranslation/FailDoubleOpen.ptfile | 3 + .../pagetranslation/FailDoubleOpenNowrap.ptfile | 3 + .../tag/pagetranslation/FailEmptySection.ptfile | 4 + .../FailMultipleSectionMarkers.ptfile | 5 + .../tag/pagetranslation/FailNotAtomic.ptfile | 5 + .../pagetranslation/FailSectionMarkerPlace.ptfile | 3 + .../phpunit/tag/pagetranslation/FailTags.ptfile | 7 + .../phpunit/tag/pagetranslation/FailTags2.ptfile | 10 + .../tag/pagetranslation/FailUnclosed.ptfile | 2 + .../tag/pagetranslation/HeaderSection.ptfile | 7 + .../tag/pagetranslation/HeaderSection.ptsource | 7 + .../tag/pagetranslation/HeaderSection.pttarget | 4 + .../phpunit/tag/pagetranslation/Inline.ptfile | 1 + .../phpunit/tag/pagetranslation/Inline.ptsource | 1 + .../phpunit/tag/pagetranslation/Inline.pttarget | 1 + .../phpunit/tag/pagetranslation/LoneHeader.ptfile | 5 + .../tag/pagetranslation/LoneHeader.ptsource | 6 + .../phpunit/tag/pagetranslation/Nowiki.ptfile | 3 + .../phpunit/tag/pagetranslation/Nowiki.pttarget | 3 + .../tag/pagetranslation/NowikiInside.ptfile | 4 + .../tag/pagetranslation/NowikiInside.pttarget | 3 + .../phpunit/tag/pagetranslation/NowikiOnly.ptfile | 1 + .../phpunit/tag/pagetranslation/NowikiOnly.pttest | 7 + .../phpunit/tag/pagetranslation/Simple.ptfile | 3 + .../phpunit/tag/pagetranslation/Simple.ptsource | 4 + .../phpunit/tag/pagetranslation/Simple.pttarget | 1 + .../phpunit/tag/pagetranslation/Simple.pttest | 3 + .../tag/pagetranslation/SimpleWithMarker.ptfile | 4 + .../tag/pagetranslation/SimpleWithMarker.pttarget | 1 + .../phpunit/tag/pagetranslation/Variables.ptfile | 6 + .../phpunit/tag/pagetranslation/Variables.pttarget | 4 + .../phpunit/tag/pagetranslation/Whitespace.ptfile | 17 + .../tag/pagetranslation/Whitespace.ptsource | 19 + .../tag/pagetranslation/Whitespace.pttarget | 14 + .../TranslationAidDataProviderTest.php | 55 + MLEB/Translate/tests/phpunit/unit/Makefile | 9 + .../Validators/BaseValidatorTestCase.php | 38 + .../Validators/BraceBalanceValidatorTest.php | 45 + .../Validators/EscapeCharacterValidatorTest.php | 68 + .../Validators/GettextNewlineValidatorTest.php | 45 + .../Validators/GettextPluralValidatorTest.php | 54 + .../Validators/InsertableRegexValidatorTest.php | 42 + .../InsertableRubyVariableValidatorTest.php | 38 + .../Validators/IosVariableValidatorTest.php | 38 + .../Validators/MatchSetValidatorTest.php | 49 + .../Validators/MediaWikiLinkValidatorTest.php | 40 + .../Validators/MediaWikiPageNameValidatorTest.php | 38 + .../Validators/MediaWikiParameterValidatorTest.php | 53 + .../Validators/MediaWikiTimeListValidatorTest.php | 60 + .../Validators/NewlineValidatorTest.php | 45 + .../Validators/NumericalParameterValidatorTest.php | 45 + .../Validators/PrintfValidatorTest.php | 62 + .../PythonInterpolationValidatorTest.php | 45 + .../Validators/ReplacementValidatorTest.php | 47 + .../Validators/SmartFormatPluralValidatorTest.php | 75 + .../Validators/UnicodePluralValidatorTest.php | 45 + .../unit/Statistics/TranslatorActivityTest.php | 147 + .../GroupSynchronizationCacheTest.php | 193 + .../Synchronization/MessageUpdateParameterTest.php | 101 + .../phpunit/unit/Utilities/GettextPluralTest.php | 146 + .../Utilities/ParsingPlaceholderFactoryTest.php | 16 + .../unit/Utilities/SmartFormatPluralTest.php | 44 + .../phpunit/unit/Utilities/UnicodePluralTest.php | 174 + .../HtmlTagInsertablesSuggesterTest.php | 88 + .../tests/phpunit/unit/tag/TPParseTest.php | 194 + .../tests/phpunit/unit/tag/TPSectionTest.php | 114 + .../phpunit/unit/tag/TranslatablePageTest.php | 201 + .../phpunit/unit/utils/ArrayFlattenerTest.php | 275 + .../phpunit/unit/utils/MessageSourceChangeTest.php | 228 + .../tests/phpunit/utils/ArrayFlattenerTest.php | 249 - .../tests/phpunit/utils/MessageGroupCacheTest.php | 49 + .../tests/phpunit/utils/MessageGroupStatsTest.php | 41 +- .../phpunit/utils/MessageGroupWANCacheTest.php | 91 + .../tests/phpunit/utils/MessageWebImporterTest.php | 59 + MLEB/Translate/tests/qunit/.eslintrc.json | 3 +- .../ext.translate.special.pagemigration.test.js | 2 +- .../Translate/translationaids/DocumentationAid.php | 10 +- .../translationaids/GettextDocumentationAid.php | 29 +- MLEB/Translate/translationaids/InsertablesAid.php | 3 +- .../translationaids/MachineTranslationAid.php | 19 +- .../QueryAggregatorAwareTranslationAid.php | 21 - MLEB/Translate/translationaids/TTMServerAid.php | 170 +- .../translationaids/TranslationAidDataProvider.php | 44 +- .../translationaids/UpdatedDefinitionAid.php | 15 +- .../CrossLanguageTranslationSearchQuery.php | 110 +- MLEB/Translate/ttmserver/DatabaseTTMServer.php | 18 +- .../Translate/ttmserver/ElasticSearchTTMServer.php | 258 +- MLEB/Translate/ttmserver/FakeTTMServer.php | 5 +- MLEB/Translate/ttmserver/FuzzyLikeThis.php | 1 + MLEB/Translate/ttmserver/Interfaces.php | 16 +- MLEB/Translate/ttmserver/SolrTTMServer.php | 445 -- MLEB/Translate/ttmserver/TTMServer.php | 34 +- .../ttmserver/TTMServerMessageUpdateJob.php | 6 +- MLEB/Translate/ttmserver/schema.xml | 45 - MLEB/Translate/utils/ArrayFlattener.php | 30 +- .../utils/ExternalMessageSourceStateComparator.php | 317 +- .../utils/ExternalMessageSourceStateImporter.php | 96 +- MLEB/Translate/utils/FCFontFinder.php | 138 + MLEB/Translate/utils/Font.php | 138 - MLEB/Translate/utils/FuzzyBot.php | 25 - MLEB/Translate/utils/JsSelectToInput.php | 4 +- MLEB/Translate/utils/MessageChangeStorage.php | 120 +- MLEB/Translate/utils/MessageGroupCache.php | 162 +- MLEB/Translate/utils/MessageGroupStates.php | 8 +- .../utils/MessageGroupStatesUpdaterJob.php | 4 +- MLEB/Translate/utils/MessageGroupStats.php | 88 +- .../utils/MessageGroupStatsRebuildJob.php | 36 +- MLEB/Translate/utils/MessageGroupWANCache.php | 177 + MLEB/Translate/utils/MessageHandle.php | 51 +- MLEB/Translate/utils/MessageIndex.php | 160 +- MLEB/Translate/utils/MessageIndexException.php | 12 + MLEB/Translate/utils/MessageIndexRebuildJob.php | 48 +- MLEB/Translate/utils/MessageUpdateJob.php | 266 +- MLEB/Translate/utils/MessageWebImporter.php | 60 +- MLEB/Translate/utils/PHPVariableLoader.php | 29 + MLEB/Translate/utils/RcFilter.php | 253 - MLEB/Translate/utils/ResourceLoader.php | 29 - MLEB/Translate/utils/StatsBar.php | 2 +- MLEB/Translate/utils/StatsTable.php | 2 +- MLEB/Translate/utils/ToolBox.php | 44 - MLEB/Translate/utils/TranslateLogFormatter.php | 2 +- MLEB/Translate/utils/TranslateMetadata.php | 63 +- MLEB/Translate/utils/TranslatePreferences.php | 71 + MLEB/Translate/utils/TranslateRcFilter.php | 253 + MLEB/Translate/utils/TranslateSandbox.php | 105 +- MLEB/Translate/utils/TranslateSandboxEmailJob.php | 31 +- MLEB/Translate/utils/TranslateToolbox.php | 74 + MLEB/Translate/utils/TranslateYaml.php | 8 +- MLEB/Translate/utils/TranslationHelpers.php | 14 +- MLEB/Translate/utils/TuxMessageTable.php | 8 +- MLEB/Translate/utils/UserToggles.php | 101 - MLEB/Translate/utils/lc.php | 42 + MLEB/Translate/webservices/ApertiumWebService.php | 4 +- .../webservices/GoogleTranslateWebService.php | 112 + MLEB/Translate/webservices/MicrosoftWebService.php | 7 +- MLEB/Translate/webservices/QueryAggregator.php | 17 +- .../Translate/webservices/QueryAggregatorAware.php | 1 + .../webservices/TranslationWebService.php | 25 +- MLEB/Translate/webservices/YandexWebService.php | 4 +- MLEB/UniversalLanguageSelector/.eslintrc.json | 9 +- MLEB/UniversalLanguageSelector/.phan/config.php | 26 + MLEB/UniversalLanguageSelector/.phpcs.xml | 4 +- MLEB/UniversalLanguageSelector/Gruntfile.js | 21 +- MLEB/UniversalLanguageSelector/README | 2 +- MLEB/UniversalLanguageSelector/RELEASE-NOTES | 16 +- .../UniversalLanguageSelector.hooks.php | 522 -- .../api/ApiLanguageSearch.php | 60 - .../api/ApiULSLocalization.php | 73 - MLEB/UniversalLanguageSelector/composer.json | 18 +- MLEB/UniversalLanguageSelector/composer.lock | 1574 ++++ .../data/LanguageNameIndexer.php | 40 +- .../data/LanguageNameSearchData.php | 6709 ++++++++++++---- .../fontrepo/fonts/Fedorovsk/FedorovskUnicode.ttf | Bin 0 -> 320596 bytes .../fontrepo/fonts/Fedorovsk/FedorovskUnicode.woff | Bin 0 -> 176804 bytes .../fonts/Fedorovsk/FedorovskUnicode.woff2 | Bin 0 -> 139268 bytes .../data/fontrepo/fonts/Fedorovsk/font.ini | 6 + .../data/fontrepo/fonts/Kadiri/Kadiri.ttf | Bin 0 -> 152436 bytes .../data/fontrepo/fonts/Kadiri/Kadiri.woff | Bin 0 -> 40140 bytes .../data/fontrepo/fonts/Kadiri/Kadiri.woff2 | Bin 0 -> 27060 bytes .../data/fontrepo/fonts/Kadiri/font.ini | 6 + .../data/fontrepo/fonts/Menaion/MenaionUnicode.ttf | Bin 0 -> 435904 bytes .../fontrepo/fonts/Menaion/MenaionUnicode.woff | Bin 0 -> 228240 bytes .../fontrepo/fonts/Menaion/MenaionUnicode.woff2 | Bin 0 -> 172288 bytes .../data/fontrepo/fonts/Menaion/font.ini | 6 + .../fontrepo/fonts/Monomakh/MonomakhUnicode.ttf | Bin 0 -> 558980 bytes .../fontrepo/fonts/Monomakh/MonomakhUnicode.woff | Bin 0 -> 204656 bytes .../fontrepo/fonts/Monomakh/MonomakhUnicode.woff2 | Bin 0 -> 140268 bytes .../data/fontrepo/fonts/Monomakh/font.ini | 6 + .../data/fontrepo/fonts/Ponomar/PonomarUnicode.ttf | Bin 0 -> 502948 bytes .../fontrepo/fonts/Ponomar/PonomarUnicode.woff | Bin 0 -> 257748 bytes .../fontrepo/fonts/Ponomar/PonomarUnicode.woff2 | Bin 0 -> 184280 bytes .../data/fontrepo/fonts/Ponomar/font.ini | 6 + .../fontrepo/fonts/PustakaBali/PustakaBali.ttf | Bin 0 -> 157900 bytes .../fontrepo/fonts/PustakaBali/PustakaBali.woff | Bin 0 -> 41804 bytes .../fontrepo/fonts/PustakaBali/PustakaBali.woff2 | Bin 0 -> 29056 bytes .../data/fontrepo/fonts/PustakaBali/font.ini | 6 + .../data/fontrepo/fonts/Vimala/Vimala.ttf | Bin 0 -> 150380 bytes .../data/fontrepo/fonts/Vimala/Vimala.woff | Bin 0 -> 40928 bytes .../data/fontrepo/fonts/Vimala/Vimala.woff2 | Bin 0 -> 28400 bytes .../data/fontrepo/fonts/Vimala/font.ini | 6 + .../data/langsamples.json | 2 + MLEB/UniversalLanguageSelector/extension.json | 210 +- MLEB/UniversalLanguageSelector/i18n/ace.json | 2 +- MLEB/UniversalLanguageSelector/i18n/af.json | 4 +- MLEB/UniversalLanguageSelector/i18n/ais.json | 60 - MLEB/UniversalLanguageSelector/i18n/alt.json | 12 + MLEB/UniversalLanguageSelector/i18n/an.json | 4 +- MLEB/UniversalLanguageSelector/i18n/api/ais.json | 16 - MLEB/UniversalLanguageSelector/i18n/api/ar.json | 9 +- .../i18n/api/be-tarask.json | 4 +- MLEB/UniversalLanguageSelector/i18n/api/de.json | 1 + MLEB/UniversalLanguageSelector/i18n/api/diq.json | 12 +- MLEB/UniversalLanguageSelector/i18n/api/en.json | 6 +- MLEB/UniversalLanguageSelector/i18n/api/eo.json | 11 +- MLEB/UniversalLanguageSelector/i18n/api/es.json | 7 +- MLEB/UniversalLanguageSelector/i18n/api/eu.json | 2 +- MLEB/UniversalLanguageSelector/i18n/api/fr.json | 21 +- MLEB/UniversalLanguageSelector/i18n/api/fy.json | 16 +- MLEB/UniversalLanguageSelector/i18n/api/gl.json | 5 +- MLEB/UniversalLanguageSelector/i18n/api/he.json | 6 +- MLEB/UniversalLanguageSelector/i18n/api/hu.json | 4 +- MLEB/UniversalLanguageSelector/i18n/api/ja.json | 13 +- MLEB/UniversalLanguageSelector/i18n/api/kab.json | 11 + MLEB/UniversalLanguageSelector/i18n/api/ko.json | 6 +- MLEB/UniversalLanguageSelector/i18n/api/mk.json | 6 +- MLEB/UniversalLanguageSelector/i18n/api/ms.json | 11 + MLEB/UniversalLanguageSelector/i18n/api/nb.json | 6 +- MLEB/UniversalLanguageSelector/i18n/api/nl.json | 13 +- MLEB/UniversalLanguageSelector/i18n/api/nqo.json | 9 + MLEB/UniversalLanguageSelector/i18n/api/pt-br.json | 7 +- MLEB/UniversalLanguageSelector/i18n/api/pt.json | 6 +- MLEB/UniversalLanguageSelector/i18n/api/qqq.json | 10 +- .../i18n/api/roa-tara.json | 6 +- MLEB/UniversalLanguageSelector/i18n/api/ru.json | 4 +- MLEB/UniversalLanguageSelector/i18n/api/sdh.json | 8 + MLEB/UniversalLanguageSelector/i18n/api/sv.json | 7 +- MLEB/UniversalLanguageSelector/i18n/api/szy.json | 16 + MLEB/UniversalLanguageSelector/i18n/api/ta.json | 9 + MLEB/UniversalLanguageSelector/i18n/api/tl.json | 3 + MLEB/UniversalLanguageSelector/i18n/api/tr.json | 23 +- .../i18n/api/tt-cyrl.json | 3 + MLEB/UniversalLanguageSelector/i18n/api/uk.json | 10 +- .../i18n/api/zh-hant.json | 10 +- MLEB/UniversalLanguageSelector/i18n/ar.json | 23 +- MLEB/UniversalLanguageSelector/i18n/as.json | 7 +- MLEB/UniversalLanguageSelector/i18n/ast.json | 13 +- MLEB/UniversalLanguageSelector/i18n/awa.json | 8 +- MLEB/UniversalLanguageSelector/i18n/az.json | 2 +- MLEB/UniversalLanguageSelector/i18n/azb.json | 6 +- MLEB/UniversalLanguageSelector/i18n/ba.json | 4 +- MLEB/UniversalLanguageSelector/i18n/ban.json | 14 + MLEB/UniversalLanguageSelector/i18n/be-tarask.json | 4 +- MLEB/UniversalLanguageSelector/i18n/be.json | 4 +- MLEB/UniversalLanguageSelector/i18n/bg.json | 14 +- MLEB/UniversalLanguageSelector/i18n/bn.json | 2 +- MLEB/UniversalLanguageSelector/i18n/bqi.json | 37 + MLEB/UniversalLanguageSelector/i18n/br.json | 4 +- MLEB/UniversalLanguageSelector/i18n/bs.json | 5 +- MLEB/UniversalLanguageSelector/i18n/ca.json | 12 +- MLEB/UniversalLanguageSelector/i18n/cdo.json | 4 +- MLEB/UniversalLanguageSelector/i18n/ce.json | 4 +- MLEB/UniversalLanguageSelector/i18n/ckb.json | 4 +- MLEB/UniversalLanguageSelector/i18n/cs.json | 10 +- MLEB/UniversalLanguageSelector/i18n/cu.json | 4 +- MLEB/UniversalLanguageSelector/i18n/cy.json | 4 +- MLEB/UniversalLanguageSelector/i18n/da.json | 15 +- MLEB/UniversalLanguageSelector/i18n/de.json | 11 +- MLEB/UniversalLanguageSelector/i18n/diq.json | 24 +- MLEB/UniversalLanguageSelector/i18n/dsb.json | 4 +- MLEB/UniversalLanguageSelector/i18n/en.json | 9 +- MLEB/UniversalLanguageSelector/i18n/eo.json | 8 +- MLEB/UniversalLanguageSelector/i18n/es-formal.json | 4 +- MLEB/UniversalLanguageSelector/i18n/es.json | 17 +- MLEB/UniversalLanguageSelector/i18n/eu.json | 14 +- MLEB/UniversalLanguageSelector/i18n/fa.json | 17 +- MLEB/UniversalLanguageSelector/i18n/fi.json | 7 +- MLEB/UniversalLanguageSelector/i18n/fit.json | 33 + MLEB/UniversalLanguageSelector/i18n/fr.json | 56 +- MLEB/UniversalLanguageSelector/i18n/fy.json | 68 +- MLEB/UniversalLanguageSelector/i18n/gcr.json | 9 + MLEB/UniversalLanguageSelector/i18n/gl.json | 10 +- MLEB/UniversalLanguageSelector/i18n/gn.json | 4 +- MLEB/UniversalLanguageSelector/i18n/gom-latn.json | 3 +- MLEB/UniversalLanguageSelector/i18n/gsw.json | 4 +- MLEB/UniversalLanguageSelector/i18n/gu.json | 4 +- MLEB/UniversalLanguageSelector/i18n/hak.json | 4 +- MLEB/UniversalLanguageSelector/i18n/he.json | 13 +- MLEB/UniversalLanguageSelector/i18n/hi.json | 6 +- MLEB/UniversalLanguageSelector/i18n/hr.json | 13 +- MLEB/UniversalLanguageSelector/i18n/hsb.json | 4 +- MLEB/UniversalLanguageSelector/i18n/hu.json | 18 +- MLEB/UniversalLanguageSelector/i18n/hy.json | 3 +- MLEB/UniversalLanguageSelector/i18n/hyw.json | 22 + MLEB/UniversalLanguageSelector/i18n/id.json | 8 +- MLEB/UniversalLanguageSelector/i18n/inh.json | 6 +- MLEB/UniversalLanguageSelector/i18n/io.json | 6 +- MLEB/UniversalLanguageSelector/i18n/is.json | 6 +- MLEB/UniversalLanguageSelector/i18n/it.json | 10 +- MLEB/UniversalLanguageSelector/i18n/ja.json | 20 +- MLEB/UniversalLanguageSelector/i18n/jv.json | 6 +- MLEB/UniversalLanguageSelector/i18n/ka.json | 2 +- MLEB/UniversalLanguageSelector/i18n/kab.json | 10 +- MLEB/UniversalLanguageSelector/i18n/kiu.json | 8 + MLEB/UniversalLanguageSelector/i18n/kjh.json | 8 + MLEB/UniversalLanguageSelector/i18n/ko.json | 18 +- MLEB/UniversalLanguageSelector/i18n/krc.json | 4 +- MLEB/UniversalLanguageSelector/i18n/ksh.json | 4 +- MLEB/UniversalLanguageSelector/i18n/ku-latn.json | 4 +- MLEB/UniversalLanguageSelector/i18n/lb.json | 6 +- MLEB/UniversalLanguageSelector/i18n/lez.json | 4 +- MLEB/UniversalLanguageSelector/i18n/lfn.json | 4 +- MLEB/UniversalLanguageSelector/i18n/li.json | 4 +- MLEB/UniversalLanguageSelector/i18n/lij.json | 64 +- MLEB/UniversalLanguageSelector/i18n/lki.json | 2 +- MLEB/UniversalLanguageSelector/i18n/lrc.json | 4 +- MLEB/UniversalLanguageSelector/i18n/lt.json | 17 +- MLEB/UniversalLanguageSelector/i18n/lv.json | 16 +- MLEB/UniversalLanguageSelector/i18n/lzh.json | 4 +- MLEB/UniversalLanguageSelector/i18n/min.json | 14 +- MLEB/UniversalLanguageSelector/i18n/mk.json | 14 +- MLEB/UniversalLanguageSelector/i18n/ml.json | 8 +- MLEB/UniversalLanguageSelector/i18n/ms.json | 9 +- MLEB/UniversalLanguageSelector/i18n/mwl.json | 4 +- MLEB/UniversalLanguageSelector/i18n/my.json | 4 +- MLEB/UniversalLanguageSelector/i18n/nah.json | 6 +- MLEB/UniversalLanguageSelector/i18n/nap.json | 6 +- MLEB/UniversalLanguageSelector/i18n/nb.json | 9 +- MLEB/UniversalLanguageSelector/i18n/nds-nl.json | 103 +- MLEB/UniversalLanguageSelector/i18n/ne.json | 17 +- MLEB/UniversalLanguageSelector/i18n/nl.json | 29 +- MLEB/UniversalLanguageSelector/i18n/nn.json | 4 +- MLEB/UniversalLanguageSelector/i18n/nqo.json | 54 + MLEB/UniversalLanguageSelector/i18n/or.json | 2 +- MLEB/UniversalLanguageSelector/i18n/os.json | 2 +- MLEB/UniversalLanguageSelector/i18n/pa.json | 4 +- MLEB/UniversalLanguageSelector/i18n/pl.json | 13 +- MLEB/UniversalLanguageSelector/i18n/ps.json | 4 +- MLEB/UniversalLanguageSelector/i18n/pt-br.json | 21 +- MLEB/UniversalLanguageSelector/i18n/pt.json | 26 +- MLEB/UniversalLanguageSelector/i18n/qqq.json | 17 +- MLEB/UniversalLanguageSelector/i18n/ro.json | 4 +- MLEB/UniversalLanguageSelector/i18n/ru.json | 22 +- MLEB/UniversalLanguageSelector/i18n/sah.json | 4 +- MLEB/UniversalLanguageSelector/i18n/sco.json | 7 +- MLEB/UniversalLanguageSelector/i18n/sd.json | 15 +- MLEB/UniversalLanguageSelector/i18n/sdh.json | 9 +- MLEB/UniversalLanguageSelector/i18n/se.json | 4 +- MLEB/UniversalLanguageSelector/i18n/si.json | 4 +- MLEB/UniversalLanguageSelector/i18n/sk.json | 9 +- MLEB/UniversalLanguageSelector/i18n/sl.json | 6 +- MLEB/UniversalLanguageSelector/i18n/sq.json | 2 +- MLEB/UniversalLanguageSelector/i18n/sr-ec.json | 12 +- MLEB/UniversalLanguageSelector/i18n/sr-el.json | 7 +- MLEB/UniversalLanguageSelector/i18n/sv.json | 14 +- MLEB/UniversalLanguageSelector/i18n/sw.json | 11 +- MLEB/UniversalLanguageSelector/i18n/szy.json | 60 + MLEB/UniversalLanguageSelector/i18n/ta.json | 8 +- MLEB/UniversalLanguageSelector/i18n/tcy.json | 4 +- MLEB/UniversalLanguageSelector/i18n/te.json | 6 +- MLEB/UniversalLanguageSelector/i18n/tg-cyrl.json | 4 +- MLEB/UniversalLanguageSelector/i18n/th.json | 15 +- MLEB/UniversalLanguageSelector/i18n/ti.json | 28 + MLEB/UniversalLanguageSelector/i18n/tl.json | 6 +- MLEB/UniversalLanguageSelector/i18n/tly.json | 4 +- MLEB/UniversalLanguageSelector/i18n/tr.json | 36 +- MLEB/UniversalLanguageSelector/i18n/trv.json | 10 + MLEB/UniversalLanguageSelector/i18n/tt-cyrl.json | 22 +- MLEB/UniversalLanguageSelector/i18n/uk.json | 18 +- MLEB/UniversalLanguageSelector/i18n/ur.json | 4 +- MLEB/UniversalLanguageSelector/i18n/uz.json | 3 +- MLEB/UniversalLanguageSelector/i18n/vec.json | 12 +- MLEB/UniversalLanguageSelector/i18n/vi.json | 4 +- MLEB/UniversalLanguageSelector/i18n/wuu.json | 4 +- MLEB/UniversalLanguageSelector/i18n/xsy.json | 10 + MLEB/UniversalLanguageSelector/i18n/yi.json | 4 +- MLEB/UniversalLanguageSelector/i18n/yo.json | 4 +- MLEB/UniversalLanguageSelector/i18n/yue.json | 3 +- MLEB/UniversalLanguageSelector/i18n/zh-hans.json | 15 +- MLEB/UniversalLanguageSelector/i18n/zh-hant.json | 23 +- .../ResourceLoaderULSJsonMessageModule.php | 7 - .../includes/ULSJsonMessageLoader.php | 4 +- .../includes/UniversalLanguageSelectorHooks.php | 576 ++ .../includes/api/ApiLanguageSearch.php | 60 + .../includes/api/ApiULSLocalization.php | 73 + .../includes/api/ApiULSSetLanguage.php | 79 + .../lib/jquery.ime/css/jquery.ime.css | 30 +- .../lib/jquery.ime/jquery.ime.js | 945 ++- .../lib/jquery.ime/rules/af/af-tilde.js | 24 + .../lib/jquery.ime/rules/ak/ak-qx.js | 16 +- .../lib/jquery.ime/rules/ak/ak-tilde.js | 23 + .../lib/jquery.ime/rules/bci/bci-tilde.js | 28 + .../lib/jquery.ime/rules/bm/bm-tilde.js | 31 + .../lib/jquery.ime/rules/bo/bo-sambhota.js | 6 +- .../lib/jquery.ime/rules/byn/byn-geezim.js | 3 +- .../lib/jquery.ime/rules/dag/dag-alt.js | 3 +- .../lib/jquery.ime/rules/dag/dag-tilde.js | 32 + .../lib/jquery.ime/rules/din/din-fqsx.js | 4 +- .../lib/jquery.ime/rules/din/din-tilde.js | 28 + .../lib/jquery.ime/rules/eo/eo-transliteration.js | 5 +- .../lib/jquery.ime/rules/ff/ff-alt.js | 2 +- .../lib/jquery.ime/rules/ff/ff-tilde.js | 32 + .../lib/jquery.ime/rules/gaa/gaa-cqx.js | 10 +- .../lib/jquery.ime/rules/gaa/gaa-tilde.js | 25 + .../lib/jquery.ime/rules/kab/kab-tilde.js | 41 + .../lib/jquery.ime/rules/kbp/kbp-tilde.js | 35 + .../lib/jquery.ime/rules/ki/ki-tilde.js | 22 + .../lib/jquery.ime/rules/km/km-nidakyk.js | 7 + .../lib/jquery.ime/rules/ks/ks-kbd.js | 4 +- .../lib/jquery.ime/rules/lg/lg-tilde.js | 20 + .../lib/jquery.ime/rules/ln/ln-tilde.js | 25 + .../lib/jquery.ime/rules/lut/lut-tulalip.js | 74 +- .../lib/jquery.ime/rules/mg/mg-tilde.js | 25 + .../lib/jquery.ime/rules/mn/mn-todo.js | 224 +- .../lib/jquery.ime/rules/mn/mn-todoali.js | 224 +- .../lib/jquery.ime/rules/mn/mn-trad.js | 224 +- .../lib/jquery.ime/rules/mn/mn-tradali.js | 222 +- .../lib/jquery.ime/rules/mn/phagspa.js | 224 +- .../lib/jquery.ime/rules/mnc/mnc-ali.js | 224 +- .../lib/jquery.ime/rules/mnc/mnc.js | 224 +- .../lib/jquery.ime/rules/my/my-mm3.js | 262 +- .../jquery.ime/rules/nqo/nqo-standard-qwerty.js | 93 + .../jquery.ime/rules/nqo/nqo-transliteration.js | 102 + .../lib/jquery.ime/rules/nso/nso-tilde.js | 24 + .../lib/jquery.ime/rules/or/or-transliteration.js | 4 +- .../lib/jquery.ime/rules/pms/pms.js | 36 +- .../lib/jquery.ime/rules/roa-tara/roa-tara.js | 8 +- .../lib/jquery.ime/rules/ses/ses-tilde.js | 40 + .../lib/jquery.ime/rules/sg/sg-tilde.js | 24 + .../lib/jquery.ime/rules/si/si-singlish.js | 2 +- .../lib/jquery.ime/rules/sjo/sjo.js | 224 +- .../lib/jquery.ime/rules/st/st-tilde.js | 22 + .../lib/jquery.ime/rules/te/te-transliteration.js | 8 +- .../lib/jquery.ime/rules/ti/ti-geezim.js | 3 +- .../lib/jquery.ime/rules/tig/tig-geezim.js | 3 +- .../jquery.ime/rules/vai/vai-transliteration.js | 322 + .../lib/jquery.ime/rules/ve/ve-tilde.js | 28 + .../lib/jquery.ime/rules/vec/vec-GVU.js | 16 +- .../lib/jquery.ime/rules/wo/wo-tilde.js | 28 + .../lib/jquery.ime/rules/yo/yo-alt.js | 8 +- .../rules/zh/zh-pinyin-transliteration.js | 60 + .../lib/jquery.uls/css/jquery.uls.css | 7 +- .../lib/jquery.uls/css/jquery.uls.grid.css | 2 - .../lib/jquery.uls/css/jquery.uls.lcd.css | 14 +- .../lib/jquery.uls/css/jquery.uls.mobile.css | 6 +- .../lib/jquery.uls/i18n/af.json | 7 +- .../lib/jquery.uls/i18n/ais.json | 11 - .../lib/jquery.uls/i18n/am.json | 13 +- .../lib/jquery.uls/i18n/ar.json | 2 +- .../lib/jquery.uls/i18n/arz.json | 3 +- .../lib/jquery.uls/i18n/as.json | 12 +- .../lib/jquery.uls/i18n/awa.json | 6 +- .../lib/jquery.uls/i18n/azb.json | 4 +- .../lib/jquery.uls/i18n/ban.json | 21 + .../lib/jquery.uls/i18n/bcc.json | 5 +- .../lib/jquery.uls/i18n/bcl.json | 4 +- .../lib/jquery.uls/i18n/be-tarask.json | 4 +- .../lib/jquery.uls/i18n/be.json | 4 +- .../lib/jquery.uls/i18n/bg.json | 6 +- .../lib/jquery.uls/i18n/bn.json | 2 +- .../lib/jquery.uls/i18n/ca.json | 4 +- .../lib/jquery.uls/i18n/ckb.json | 2 +- .../lib/jquery.uls/i18n/cop.json | 4 +- .../lib/jquery.uls/i18n/cs.json | 4 +- .../lib/jquery.uls/i18n/cv.json | 4 +- .../lib/jquery.uls/i18n/cy.json | 4 +- .../lib/jquery.uls/i18n/da.json | 4 +- .../lib/jquery.uls/i18n/de.json | 4 +- .../lib/jquery.uls/i18n/diq.json | 12 +- .../lib/jquery.uls/i18n/dty.json | 4 +- .../lib/jquery.uls/i18n/ee.json | 21 + .../lib/jquery.uls/i18n/el.json | 4 +- .../lib/jquery.uls/i18n/en-gb.json | 4 +- .../lib/jquery.uls/i18n/eo.json | 6 +- .../lib/jquery.uls/i18n/es.json | 4 +- .../lib/jquery.uls/i18n/eu.json | 4 +- .../lib/jquery.uls/i18n/fa.json | 7 +- .../lib/jquery.uls/i18n/fi.json | 4 +- .../lib/jquery.uls/i18n/fit.json | 21 + .../lib/jquery.uls/i18n/fr.json | 4 +- .../lib/jquery.uls/i18n/fy.json | 10 +- .../lib/jquery.uls/i18n/gcr.json | 4 +- .../lib/jquery.uls/i18n/gd.json | 4 +- .../lib/jquery.uls/i18n/gl.json | 4 +- .../lib/jquery.uls/i18n/gn.json | 4 +- .../lib/jquery.uls/i18n/haw.json | 9 +- .../lib/jquery.uls/i18n/he.json | 4 +- .../lib/jquery.uls/i18n/hi.json | 4 +- .../lib/jquery.uls/i18n/hr.json | 4 +- .../lib/jquery.uls/i18n/hu.json | 4 +- .../lib/jquery.uls/i18n/hy.json | 4 +- .../lib/jquery.uls/i18n/id.json | 6 +- .../lib/jquery.uls/i18n/inh.json | 4 +- .../lib/jquery.uls/i18n/io.json | 4 +- .../lib/jquery.uls/i18n/it.json | 4 +- .../lib/jquery.uls/i18n/ja.json | 6 +- .../lib/jquery.uls/i18n/kab.json | 8 +- .../lib/jquery.uls/i18n/kiu.json | 21 + .../lib/jquery.uls/i18n/kjh.json | 21 + .../lib/jquery.uls/i18n/kjp.json | 2 +- .../lib/jquery.uls/i18n/kk-cyrl.json | 4 +- .../lib/jquery.uls/i18n/kn.json | 8 +- .../lib/jquery.uls/i18n/ko.json | 4 +- .../lib/jquery.uls/i18n/krc.json | 4 +- .../lib/jquery.uls/i18n/ksw.json | 21 + .../lib/jquery.uls/i18n/ku-latn.json | 6 +- .../lib/jquery.uls/i18n/li.json | 6 +- .../lib/jquery.uls/i18n/lrc.json | 24 +- .../lib/jquery.uls/i18n/lt.json | 8 +- .../lib/jquery.uls/i18n/lv.json | 4 +- .../lib/jquery.uls/i18n/min.json | 5 +- .../lib/jquery.uls/i18n/ml.json | 4 +- .../lib/jquery.uls/i18n/mr.json | 4 +- .../lib/jquery.uls/i18n/ms.json | 10 +- .../lib/jquery.uls/i18n/mt.json | 4 +- .../lib/jquery.uls/i18n/mwl.json | 4 +- .../lib/jquery.uls/i18n/my.json | 1 + .../lib/jquery.uls/i18n/nah.json | 6 +- .../lib/jquery.uls/i18n/nap.json | 4 +- .../lib/jquery.uls/i18n/nb.json | 8 +- .../lib/jquery.uls/i18n/nl-informal.json | 4 +- .../lib/jquery.uls/i18n/nl.json | 4 +- .../lib/jquery.uls/i18n/nn.json | 4 +- .../lib/jquery.uls/i18n/nqo.json | 22 + .../lib/jquery.uls/i18n/om.json | 2 + .../lib/jquery.uls/i18n/or.json | 6 +- .../lib/jquery.uls/i18n/pl.json | 4 +- .../lib/jquery.uls/i18n/ps.json | 1 + .../lib/jquery.uls/i18n/pt-br.json | 6 +- .../lib/jquery.uls/i18n/pt.json | 10 +- .../lib/jquery.uls/i18n/ro.json | 2 +- .../lib/jquery.uls/i18n/sc.json | 6 +- .../lib/jquery.uls/i18n/sco.json | 4 +- .../lib/jquery.uls/i18n/sd.json | 4 +- .../lib/jquery.uls/i18n/sk.json | 4 +- .../lib/jquery.uls/i18n/sl.json | 4 +- .../lib/jquery.uls/i18n/sq.json | 4 +- .../lib/jquery.uls/i18n/sr-ec.json | 4 +- .../lib/jquery.uls/i18n/sr-el.json | 4 +- .../lib/jquery.uls/i18n/sv.json | 4 +- .../lib/jquery.uls/i18n/sw.json | 4 +- .../lib/jquery.uls/i18n/szy.json | 11 + .../lib/jquery.uls/i18n/ta.json | 10 +- .../lib/jquery.uls/i18n/tcy.json | 4 +- .../lib/jquery.uls/i18n/te.json | 2 +- .../lib/jquery.uls/i18n/ti.json | 17 + .../lib/jquery.uls/i18n/tr.json | 4 +- .../lib/jquery.uls/i18n/tt-cyrl.json | 7 +- .../lib/jquery.uls/i18n/ug-arab.json | 5 +- .../lib/jquery.uls/i18n/uk.json | 6 +- .../lib/jquery.uls/i18n/ur.json | 4 +- .../lib/jquery.uls/i18n/uz.json | 2 +- .../lib/jquery.uls/i18n/vec.json | 9 +- .../lib/jquery.uls/i18n/war.json | 4 +- .../lib/jquery.uls/i18n/zea.json | 4 +- .../lib/jquery.uls/i18n/zh-hans.json | 4 +- .../lib/jquery.uls/i18n/zh-hant.json | 4 +- .../lib/jquery.uls/images/clear.png | Bin 179 -> 0 bytes .../lib/jquery.uls/images/clear.svg | 1 - .../lib/jquery.uls/images/close.png | Bin 0 -> 258 bytes .../lib/jquery.uls/images/close.svg | 8 + .../lib/jquery.uls/images/language.png | Bin 721 -> 447 bytes .../lib/jquery.uls/images/language.svg | 7 +- .../lib/jquery.uls/images/search.png | Bin 709 -> 364 bytes .../lib/jquery.uls/images/search.svg | 9 +- .../lib/jquery.uls/src/jquery.uls.core.js | 9 +- .../lib/jquery.uls/src/jquery.uls.data.js | 243 +- .../jquery.uls/src/jquery.uls.languagefilter.js | 7 +- .../lib/jquery.uls/src/jquery.uls.lcd.js | 18 +- .../maintenance/ULSCompactLinksDisablePref.php | 11 +- MLEB/UniversalLanguageSelector/package-lock.json | 5359 +++++++++++++ MLEB/UniversalLanguageSelector/package.json | 37 +- .../resources/css/ext.uls-vector.less | 17 +- .../resources/css/ext.uls.compactlinks.less | 2 +- .../resources/css/ext.uls.dialog.less | 40 + .../resources/css/ext.uls.displaysettings.less | 2 +- .../resources/css/ext.uls.inputsettings.less | 11 +- .../resources/css/ext.uls.interface.less | 6 +- .../resources/css/ext.uls.interlanguage.less | 3 +- .../resources/css/ext.uls.languagesettings.less | 22 +- .../resources/css/ext.uls.less | 6 +- .../resources/css/ext.uls.pt-monobook.less | 4 +- .../resources/css/ext.uls.pt.less | 43 +- .../resources/css/ext.uls.setlang.less | 24 + .../resources/images/back-grey-ltr.png | Bin 629 -> 0 bytes .../resources/images/back-grey-rtl.png | Bin 405 -> 0 bytes .../resources/images/close.png | Bin 168 -> 0 bytes .../resources/images/cog-sprite.png | Bin 475 -> 0 bytes .../resources/images/cog.png | Bin 297 -> 0 bytes .../resources/images/compact-links-trigger.png | Bin 673 -> 0 bytes .../resources/images/display.png | Bin 348 -> 0 bytes .../resources/images/display.svg | 2 +- .../resources/images/help.png | Bin 379 -> 0 bytes .../resources/images/help.svg | 2 +- .../resources/images/input.png | Bin 562 -> 0 bytes .../resources/images/input.svg | 2 +- .../resources/images/remove-input.png | Bin 373 -> 0 bytes .../resources/images/remove-input.svg | 4 +- .../resources/js/ext.uls.common.js | 2 +- .../resources/js/ext.uls.compactlinks.js | 3 +- .../resources/js/ext.uls.dialog.js | 205 + .../resources/js/ext.uls.displaysettings.js | 31 +- .../resources/js/ext.uls.eventlogger.js | 407 +- .../resources/js/ext.uls.ime.js | 12 +- .../resources/js/ext.uls.inputsettings.js | 23 +- .../resources/js/ext.uls.interface.js | 32 +- .../resources/js/ext.uls.languagesettings.js | 14 +- .../resources/js/ext.uls.preferences.js | 8 +- .../resources/js/ext.uls.setlang.js | 149 + .../resources/js/ext.uls.webfonts.js | 4 +- .../resources/js/ext.uls.webfonts.mobile.js | 4 +- .../resources/js/ext.uls.webfonts.repository.js | 73 +- .../scripts/compile-font-repo.php | 2 +- .../scripts/generate-font-test-page.php | 2 +- .../scripts/update-jquery-webfonts.sh | 2 +- .../UniversalLanguageSelector/tests/all-fonts.html | 646 +- .../tests/phpunit/FontRepoCompilerTest.php | 3 +- .../tests/phpunit/LanguageSearchTest.php | 8 +- .../ResourceLoaderULSJsonMessageModuleTest.php | 1 - .../tests/phpunit/ResourceLoaderULSModuleTest.php | 1 - .../tests/phpunit/ULSJsonMessageLoaderTest.php | 5 +- MLEB/UniversalLanguageSelector/tests/webfonts.html | 6 +- MLEB/cldr/.phan/config.php | 18 + MLEB/cldr/.phpcs.xml | 4 +- MLEB/cldr/CldrCurrencies.php | 12 +- MLEB/cldr/CldrCurrency/Symbols.php | 1016 +-- MLEB/cldr/CldrNames/CldrNamesAf.php | 94 +- MLEB/cldr/CldrNames/CldrNamesAk.php | 1 - MLEB/cldr/CldrNames/CldrNamesAm.php | 12 +- MLEB/cldr/CldrNames/CldrNamesAr.php | 23 +- MLEB/cldr/CldrNames/CldrNamesAs.php | 17 +- MLEB/cldr/CldrNames/CldrNamesAst.php | 1 - MLEB/cldr/CldrNames/CldrNamesAz.php | 20 +- MLEB/cldr/CldrNames/CldrNamesBe.php | 68 +- MLEB/cldr/CldrNames/CldrNamesBg.php | 36 +- MLEB/cldr/CldrNames/CldrNamesBm.php | 1 - MLEB/cldr/CldrNames/CldrNamesBn.php | 14 +- MLEB/cldr/CldrNames/CldrNamesBr.php | 34 +- MLEB/cldr/CldrNames/CldrNamesBs.php | 21 +- MLEB/cldr/CldrNames/CldrNamesCa.php | 156 +- MLEB/cldr/CldrNames/CldrNamesCe.php | 1 - MLEB/cldr/CldrNames/CldrNamesCeb.php | 497 ++ MLEB/cldr/CldrNames/CldrNamesChr.php | 15 +- MLEB/cldr/CldrNames/CldrNamesCkb.php | 8 +- MLEB/cldr/CldrNames/CldrNamesCs.php | 10 +- MLEB/cldr/CldrNames/CldrNamesCy.php | 34 +- MLEB/cldr/CldrNames/CldrNamesDa.php | 16 +- MLEB/cldr/CldrNames/CldrNamesDe.php | 10 +- MLEB/cldr/CldrNames/CldrNamesDe_ch.php | 7 +- MLEB/cldr/CldrNames/CldrNamesDsb.php | 1 - MLEB/cldr/CldrNames/CldrNamesDz.php | 1 - MLEB/cldr/CldrNames/CldrNamesEe.php | 3 +- MLEB/cldr/CldrNames/CldrNamesEl.php | 10 +- MLEB/cldr/CldrNames/CldrNamesEn.php | 11 +- MLEB/cldr/CldrNames/CldrNamesEn_ca.php | 24 +- MLEB/cldr/CldrNames/CldrNamesEn_gb.php | 40 +- MLEB/cldr/CldrNames/CldrNamesEo.php | 2 - MLEB/cldr/CldrNames/CldrNamesEs.php | 17 +- MLEB/cldr/CldrNames/CldrNamesEs_419.php | 73 +- MLEB/cldr/CldrNames/CldrNamesEt.php | 20 +- MLEB/cldr/CldrNames/CldrNamesEu.php | 330 +- MLEB/cldr/CldrNames/CldrNamesFa.php | 38 +- MLEB/cldr/CldrNames/CldrNamesFf.php | 1 - MLEB/cldr/CldrNames/CldrNamesFi.php | 8 +- MLEB/cldr/CldrNames/CldrNamesFo.php | 8 +- MLEB/cldr/CldrNames/CldrNamesFr.php | 14 +- MLEB/cldr/CldrNames/CldrNamesFur.php | 1 - MLEB/cldr/CldrNames/CldrNamesFy.php | 1 - MLEB/cldr/CldrNames/CldrNamesGa.php | 423 +- MLEB/cldr/CldrNames/CldrNamesGd.php | 31 +- MLEB/cldr/CldrNames/CldrNamesGl.php | 342 +- MLEB/cldr/CldrNames/CldrNamesGsw.php | 1 - MLEB/cldr/CldrNames/CldrNamesGu.php | 16 +- MLEB/cldr/CldrNames/CldrNamesHa.php | 474 +- MLEB/cldr/CldrNames/CldrNamesHe.php | 22 +- MLEB/cldr/CldrNames/CldrNamesHi.php | 14 +- MLEB/cldr/CldrNames/CldrNamesHr.php | 25 +- MLEB/cldr/CldrNames/CldrNamesHsb.php | 1 - MLEB/cldr/CldrNames/CldrNamesHu.php | 26 +- MLEB/cldr/CldrNames/CldrNamesHy.php | 21 +- MLEB/cldr/CldrNames/CldrNamesIa.php | 130 +- MLEB/cldr/CldrNames/CldrNamesId.php | 159 +- MLEB/cldr/CldrNames/CldrNamesIg.php | 446 +- MLEB/cldr/CldrNames/CldrNamesIs.php | 16 +- MLEB/cldr/CldrNames/CldrNamesIt.php | 227 +- MLEB/cldr/CldrNames/CldrNamesJa.php | 9 +- MLEB/cldr/CldrNames/CldrNamesJv.php | 445 +- MLEB/cldr/CldrNames/CldrNamesKa.php | 8 +- MLEB/cldr/CldrNames/CldrNamesKab.php | 7 +- MLEB/cldr/CldrNames/CldrNamesKi.php | 1 - MLEB/cldr/CldrNames/CldrNamesKk_cyrl.php | 10 +- MLEB/cldr/CldrNames/CldrNamesKl.php | 1 - MLEB/cldr/CldrNames/CldrNamesKm.php | 13 +- MLEB/cldr/CldrNames/CldrNamesKn.php | 26 +- MLEB/cldr/CldrNames/CldrNamesKo.php | 10 +- MLEB/cldr/CldrNames/CldrNamesKs.php | 501 +- MLEB/cldr/CldrNames/CldrNamesKsh.php | 1 - MLEB/cldr/CldrNames/CldrNamesKu_latn.php | 23 +- MLEB/cldr/CldrNames/CldrNamesKy.php | 15 +- MLEB/cldr/CldrNames/CldrNamesLb.php | 2 +- MLEB/cldr/CldrNames/CldrNamesLg.php | 1 - MLEB/cldr/CldrNames/CldrNamesLn.php | 1 - MLEB/cldr/CldrNames/CldrNamesLo.php | 32 +- MLEB/cldr/CldrNames/CldrNamesLrc.php | 2 - MLEB/cldr/CldrNames/CldrNamesLt.php | 9 +- MLEB/cldr/CldrNames/CldrNamesLv.php | 17 +- MLEB/cldr/CldrNames/CldrNamesMai.php | 60 + MLEB/cldr/CldrNames/CldrNamesMg.php | 1 - MLEB/cldr/CldrNames/CldrNamesMi.php | 54 +- MLEB/cldr/CldrNames/CldrNamesMk.php | 28 +- MLEB/cldr/CldrNames/CldrNamesMl.php | 13 +- MLEB/cldr/CldrNames/CldrNamesMn.php | 332 +- MLEB/cldr/CldrNames/CldrNamesMni.php | 57 + MLEB/cldr/CldrNames/CldrNamesMr.php | 9 +- MLEB/cldr/CldrNames/CldrNamesMs.php | 17 +- MLEB/cldr/CldrNames/CldrNamesMt.php | 297 +- MLEB/cldr/CldrNames/CldrNamesMy.php | 11 +- MLEB/cldr/CldrNames/CldrNamesMzn.php | 1 - MLEB/cldr/CldrNames/CldrNamesNb.php | 15 +- MLEB/cldr/CldrNames/CldrNamesNe.php | 24 +- MLEB/cldr/CldrNames/CldrNamesNl.php | 13 +- MLEB/cldr/CldrNames/CldrNamesNn.php | 3 +- MLEB/cldr/CldrNames/CldrNamesOr.php | 11 +- MLEB/cldr/CldrNames/CldrNamesPa.php | 18 +- MLEB/cldr/CldrNames/CldrNamesPl.php | 44 +- MLEB/cldr/CldrNames/CldrNamesPrg.php | 1 - MLEB/cldr/CldrNames/CldrNamesPs.php | 906 +-- MLEB/cldr/CldrNames/CldrNamesPt.php | 134 +- MLEB/cldr/CldrNames/CldrNamesPt_br.php | 26 +- MLEB/cldr/CldrNames/CldrNamesQu.php | 482 +- MLEB/cldr/CldrNames/CldrNamesRm.php | 1 - MLEB/cldr/CldrNames/CldrNamesRn.php | 1 - MLEB/cldr/CldrNames/CldrNamesRo.php | 13 +- MLEB/cldr/CldrNames/CldrNamesRu.php | 66 +- MLEB/cldr/CldrNames/CldrNamesRw.php | 1 + MLEB/cldr/CldrNames/CldrNamesSat.php | 55 + MLEB/cldr/CldrNames/CldrNamesSd.php | 18 +- MLEB/cldr/CldrNames/CldrNamesSe.php | 1 - MLEB/cldr/CldrNames/CldrNamesSes.php | 1 - MLEB/cldr/CldrNames/CldrNamesSg.php | 1 - MLEB/cldr/CldrNames/CldrNamesShi.php | 1 - MLEB/cldr/CldrNames/CldrNamesShi_latn.php | 1 - MLEB/cldr/CldrNames/CldrNamesSi.php | 17 +- MLEB/cldr/CldrNames/CldrNamesSk.php | 14 +- MLEB/cldr/CldrNames/CldrNamesSl.php | 14 +- MLEB/cldr/CldrNames/CldrNamesSmn.php | 667 ++ MLEB/cldr/CldrNames/CldrNamesSn.php | 1 - MLEB/cldr/CldrNames/CldrNamesSo.php | 774 +- MLEB/cldr/CldrNames/CldrNamesSq.php | 12 +- MLEB/cldr/CldrNames/CldrNamesSr_ec.php | 22 +- MLEB/cldr/CldrNames/CldrNamesSu.php | 67 + MLEB/cldr/CldrNames/CldrNamesSv.php | 28 +- MLEB/cldr/CldrNames/CldrNamesSw.php | 13 +- MLEB/cldr/CldrNames/CldrNamesTa.php | 22 +- MLEB/cldr/CldrNames/CldrNamesTe.php | 16 +- MLEB/cldr/CldrNames/CldrNamesTg_cyrl.php | 18 +- MLEB/cldr/CldrNames/CldrNamesTh.php | 13 +- MLEB/cldr/CldrNames/CldrNamesTi.php | 2 +- MLEB/cldr/CldrNames/CldrNamesTk.php | 27 +- MLEB/cldr/CldrNames/CldrNamesTo.php | 24 +- MLEB/cldr/CldrNames/CldrNamesTr.php | 44 +- MLEB/cldr/CldrNames/CldrNamesTt.php | 11 +- MLEB/cldr/CldrNames/CldrNamesTzm.php | 1 - MLEB/cldr/CldrNames/CldrNamesUg.php | 2 +- MLEB/cldr/CldrNames/CldrNamesUk.php | 22 +- MLEB/cldr/CldrNames/CldrNamesUr.php | 32 +- MLEB/cldr/CldrNames/CldrNamesUz.php | 19 +- MLEB/cldr/CldrNames/CldrNamesUz_cyrl.php | 2 +- MLEB/cldr/CldrNames/CldrNamesVi.php | 172 +- MLEB/cldr/CldrNames/CldrNamesWo.php | 4 +- MLEB/cldr/CldrNames/CldrNamesXh.php | 1 + MLEB/cldr/CldrNames/CldrNamesYi.php | 2 - MLEB/cldr/CldrNames/CldrNamesYo.php | 358 +- MLEB/cldr/CldrNames/CldrNamesYue.php | 7 +- MLEB/cldr/CldrNames/CldrNamesZgh.php | 1 - MLEB/cldr/CldrNames/CldrNamesZh_hans.php | 14 +- MLEB/cldr/CldrNames/CldrNamesZh_hant.php | 8 +- MLEB/cldr/CldrNames/CldrNamesZu.php | 19 +- MLEB/cldr/Gruntfile.js | 3 + MLEB/cldr/LICENSE | 2 +- MLEB/cldr/LocalNames/LocalNamesDe.php | 57 +- MLEB/cldr/LocalNames/LocalNamesEn.php | 48 +- MLEB/cldr/LocalNames/LocalNamesEt.php | 80 +- MLEB/cldr/LocalNames/LocalNamesFa.php | 24 +- MLEB/cldr/LocalNames/LocalNamesJa.php | 4 +- MLEB/cldr/LocalNames/LocalNamesSje.php | 6 + MLEB/cldr/Makefile | 2 +- MLEB/cldr/README | 10 +- MLEB/cldr/RELEASE-NOTES | 8 +- MLEB/cldr/cldr.php | 21 - MLEB/cldr/composer.json | 18 +- MLEB/cldr/extension.json | 16 +- MLEB/cldr/i18n/af.json | 4 +- MLEB/cldr/i18n/bg.json | 4 +- MLEB/cldr/i18n/fy.json | 4 +- MLEB/cldr/i18n/kea.json | 4 +- MLEB/cldr/i18n/lb.json | 3 +- MLEB/cldr/i18n/li.json | 4 +- MLEB/cldr/i18n/lt.json | 4 +- MLEB/cldr/i18n/pt-br.json | 3 +- MLEB/cldr/i18n/pt.json | 3 +- MLEB/cldr/i18n/sh.json | 8 + MLEB/cldr/i18n/te.json | 4 +- MLEB/cldr/i18n/th.json | 8 + MLEB/cldr/i18n/yue.json | 4 +- MLEB/cldr/includes/CLDRParser.php | 350 + MLEB/cldr/includes/CountryNames.php | 4 +- MLEB/cldr/includes/CurrencyNames.php | 4 +- MLEB/cldr/includes/LanguageNames.php | 20 +- MLEB/cldr/includes/TimeUnits.php | 23 +- MLEB/cldr/package-lock.json | 2903 +++++++ MLEB/cldr/package.json | 8 +- MLEB/cldr/rebuild.php | 352 +- 2095 files changed, 99264 insertions(+), 32127 deletions(-) delete mode 100644 MLEB/Babel/.eslintrc create mode 100644 MLEB/Babel/.eslintrc.json create mode 100644 MLEB/Babel/.phan/config.php delete mode 100644 MLEB/Babel/Babel.php delete mode 100644 MLEB/Babel/codes.cdb create mode 100644 MLEB/Babel/codes.php delete mode 100644 MLEB/Babel/i18n/ais.json create mode 100644 MLEB/Babel/i18n/ann.json create mode 100644 MLEB/Babel/i18n/api/af.json create mode 100644 MLEB/Babel/i18n/api/ar.json create mode 100644 MLEB/Babel/i18n/api/ary.json create mode 100644 MLEB/Babel/i18n/api/ast.json create mode 100644 MLEB/Babel/i18n/api/avk.json create mode 100644 MLEB/Babel/i18n/api/bcl.json create mode 100644 MLEB/Babel/i18n/api/be-tarask.json create mode 100644 MLEB/Babel/i18n/api/be.json create mode 100644 MLEB/Babel/i18n/api/bqi.json create mode 100644 MLEB/Babel/i18n/api/br.json create mode 100644 MLEB/Babel/i18n/api/ca.json create mode 100644 MLEB/Babel/i18n/api/cs.json create mode 100644 MLEB/Babel/i18n/api/csb.json create mode 100644 MLEB/Babel/i18n/api/da.json create mode 100644 MLEB/Babel/i18n/api/de.json create mode 100644 MLEB/Babel/i18n/api/diq.json create mode 100644 MLEB/Babel/i18n/api/el.json create mode 100644 MLEB/Babel/i18n/api/en-gb.json create mode 100644 MLEB/Babel/i18n/api/en.json create mode 100644 MLEB/Babel/i18n/api/eo.json create mode 100644 MLEB/Babel/i18n/api/es.json create mode 100644 MLEB/Babel/i18n/api/eu.json create mode 100644 MLEB/Babel/i18n/api/fa.json create mode 100644 MLEB/Babel/i18n/api/fr.json create mode 100644 MLEB/Babel/i18n/api/gcr.json create mode 100644 MLEB/Babel/i18n/api/gl.json create mode 100644 MLEB/Babel/i18n/api/gu.json create mode 100644 MLEB/Babel/i18n/api/he.json create mode 100644 MLEB/Babel/i18n/api/hi.json create mode 100644 MLEB/Babel/i18n/api/hu.json create mode 100644 MLEB/Babel/i18n/api/ia.json create mode 100644 MLEB/Babel/i18n/api/id.json create mode 100644 MLEB/Babel/i18n/api/ilo.json create mode 100644 MLEB/Babel/i18n/api/it.json create mode 100644 MLEB/Babel/i18n/api/ja.json create mode 100644 MLEB/Babel/i18n/api/jv.json create mode 100644 MLEB/Babel/i18n/api/ka.json create mode 100644 MLEB/Babel/i18n/api/kjp.json create mode 100644 MLEB/Babel/i18n/api/kk-cyrl.json create mode 100644 MLEB/Babel/i18n/api/ko.json create mode 100644 MLEB/Babel/i18n/api/lb.json create mode 100644 MLEB/Babel/i18n/api/li.json create mode 100644 MLEB/Babel/i18n/api/lij.json create mode 100644 MLEB/Babel/i18n/api/lt.json create mode 100644 MLEB/Babel/i18n/api/lv.json create mode 100644 MLEB/Babel/i18n/api/mk.json create mode 100644 MLEB/Babel/i18n/api/ml.json create mode 100644 MLEB/Babel/i18n/api/mni.json create mode 100644 MLEB/Babel/i18n/api/mnw.json create mode 100644 MLEB/Babel/i18n/api/mr.json create mode 100644 MLEB/Babel/i18n/api/mrh.json create mode 100644 MLEB/Babel/i18n/api/mui.json create mode 100644 MLEB/Babel/i18n/api/nah.json create mode 100644 MLEB/Babel/i18n/api/nap.json create mode 100644 MLEB/Babel/i18n/api/nb.json create mode 100644 MLEB/Babel/i18n/api/nia.json create mode 100644 MLEB/Babel/i18n/api/nl.json create mode 100644 MLEB/Babel/i18n/api/ny.json create mode 100644 MLEB/Babel/i18n/api/pl.json create mode 100644 MLEB/Babel/i18n/api/pt-br.json create mode 100644 MLEB/Babel/i18n/api/pt.json create mode 100644 MLEB/Babel/i18n/api/qqq.json create mode 100644 MLEB/Babel/i18n/api/ro.json create mode 100644 MLEB/Babel/i18n/api/roa-tara.json create mode 100644 MLEB/Babel/i18n/api/ru.json create mode 100644 MLEB/Babel/i18n/api/sah.json create mode 100644 MLEB/Babel/i18n/api/sat.json create mode 100644 MLEB/Babel/i18n/api/sd.json create mode 100644 MLEB/Babel/i18n/api/sdc.json create mode 100644 MLEB/Babel/i18n/api/sh.json create mode 100644 MLEB/Babel/i18n/api/sk.json create mode 100644 MLEB/Babel/i18n/api/sty.json create mode 100644 MLEB/Babel/i18n/api/sv.json create mode 100644 MLEB/Babel/i18n/api/szy.json create mode 100644 MLEB/Babel/i18n/api/th.json create mode 100644 MLEB/Babel/i18n/api/tr.json create mode 100644 MLEB/Babel/i18n/api/uk.json create mode 100644 MLEB/Babel/i18n/api/wa.json create mode 100644 MLEB/Babel/i18n/api/yue.json create mode 100644 MLEB/Babel/i18n/api/zh-hans.json create mode 100644 MLEB/Babel/i18n/api/zh-hant.json create mode 100644 MLEB/Babel/i18n/cak.json create mode 100644 MLEB/Babel/i18n/hyw.json create mode 100644 MLEB/Babel/i18n/ksw.json create mode 100644 MLEB/Babel/i18n/mrh.json create mode 100644 MLEB/Babel/i18n/nia.json create mode 100644 MLEB/Babel/i18n/sjd.json create mode 100644 MLEB/Babel/i18n/szy.json create mode 100644 MLEB/Babel/i18n/zgh.json delete mode 100644 MLEB/Babel/names.cdb create mode 100644 MLEB/Babel/names.php create mode 100644 MLEB/Babel/package-lock.json create mode 100644 MLEB/Babel/sql/babel-babel_lang-length-type.sql create mode 100644 MLEB/Babel/sql/babel-babel_lang-length.sqlite.sql create mode 100644 MLEB/Babel/sql/babel-babel_level-type.sql delete mode 100644 MLEB/Babel/tests/phan/config.php delete mode 100644 MLEB/Babel/txt2cdb.php create mode 100644 MLEB/Babel/txt2php.php create mode 100644 MLEB/CleanChanges/.phan/config.php delete mode 100644 MLEB/CleanChanges/CleanChanges.php delete mode 100644 MLEB/CleanChanges/CleanChanges_body.php delete mode 100644 MLEB/CleanChanges/Filters.php create mode 100644 MLEB/CleanChanges/i18n/sh.json create mode 100644 MLEB/CleanChanges/includes/CCFilters.php create mode 100644 MLEB/CleanChanges/includes/NCL.php create mode 100644 MLEB/CleanChanges/package-lock.json create mode 100644 MLEB/LocalisationUpdate/.eslintrc.json create mode 100644 MLEB/LocalisationUpdate/.phan/config.php create mode 100644 MLEB/LocalisationUpdate/includes/Fetcher/Fetcher.php create mode 100644 MLEB/LocalisationUpdate/includes/Fetcher/FetcherFactory.php create mode 100644 MLEB/LocalisationUpdate/includes/Fetcher/FileSystemFetcher.php create mode 100644 MLEB/LocalisationUpdate/includes/Fetcher/GitHubFetcher.php create mode 100644 MLEB/LocalisationUpdate/includes/Fetcher/HttpFetcher.php create mode 100644 MLEB/LocalisationUpdate/includes/Finder.php delete mode 100644 MLEB/LocalisationUpdate/includes/QuickArrayReader.php create mode 100644 MLEB/LocalisationUpdate/includes/Reader/JSONReader.php create mode 100644 MLEB/LocalisationUpdate/includes/Reader/Reader.php create mode 100644 MLEB/LocalisationUpdate/includes/Reader/ReaderFactory.php delete mode 100644 MLEB/LocalisationUpdate/includes/fetcher/Fetcher.php delete mode 100644 MLEB/LocalisationUpdate/includes/fetcher/FetcherFactory.php delete mode 100644 MLEB/LocalisationUpdate/includes/fetcher/FileSystemFetcher.php delete mode 100644 MLEB/LocalisationUpdate/includes/fetcher/GitHubFetcher.php delete mode 100644 MLEB/LocalisationUpdate/includes/fetcher/HttpFetcher.php delete mode 100644 MLEB/LocalisationUpdate/includes/finder/Finder.php delete mode 100644 MLEB/LocalisationUpdate/includes/reader/JSONReader.php delete mode 100644 MLEB/LocalisationUpdate/includes/reader/PHPReader.php delete mode 100644 MLEB/LocalisationUpdate/includes/reader/Reader.php delete mode 100644 MLEB/LocalisationUpdate/includes/reader/ReaderFactory.php create mode 100644 MLEB/LocalisationUpdate/package-lock.json delete mode 100644 MLEB/LocalisationUpdate/tests/phan/config.php create mode 100644 MLEB/Translate/.mailmap create mode 100644 MLEB/Translate/.phan/config.php create mode 100644 MLEB/Translate/.phan/stubs/languagedetector.php create mode 100644 MLEB/Translate/.phan/stubs/metayaml.php create mode 100644 MLEB/Translate/.phan/stubs/namespaces.php create mode 100644 MLEB/Translate/.phan/stubs/phplot.php create mode 100644 MLEB/Translate/.phan/stubs/spyc.php delete mode 100644 MLEB/Translate/Autoload.php delete mode 100644 MLEB/Translate/MediaWikiMessageChecker.php delete mode 100644 MLEB/Translate/MessageChecks.php create mode 100644 MLEB/Translate/MessageValidator.php delete mode 100644 MLEB/Translate/Resources.php delete mode 100644 MLEB/Translate/Translate.php create mode 100644 MLEB/Translate/api/ApiManageMessageGroups.php create mode 100644 MLEB/Translate/api/ApiQueryManageMessageGroups.php delete mode 100644 MLEB/Translate/api/ApiQueryTranslationAids.php create mode 100644 MLEB/Translate/api/ApiTranslationAids.php create mode 100644 MLEB/Translate/data/plural-cldr.json delete mode 100644 MLEB/Translate/extension-wip.json create mode 100644 MLEB/Translate/extension.json create mode 100644 MLEB/Translate/ffs/AppleInfoPlistFfs.php create mode 100644 MLEB/Translate/ffs/GettextPluralException.php delete mode 100644 MLEB/Translate/ffs/IntuitionTextdomains.php delete mode 100644 MLEB/Translate/ffs/MediaWikiComplexMessages.php delete mode 100644 MLEB/Translate/ffs/MediaWikiExtensions.php create mode 100644 MLEB/Translate/ffs/PremadeIntuitionTextdomains.php create mode 100644 MLEB/Translate/ffs/PremadeMediawikiExtensionGroups.php create mode 100644 MLEB/Translate/i18n/api/eo.json create mode 100644 MLEB/Translate/i18n/api/fit.json create mode 100644 MLEB/Translate/i18n/api/io.json create mode 100644 MLEB/Translate/i18n/api/nds-nl.json create mode 100644 MLEB/Translate/i18n/api/sdc.json create mode 100644 MLEB/Translate/i18n/api/tg-cyrl.json create mode 100644 MLEB/Translate/i18n/api/vec.json delete mode 100644 MLEB/Translate/i18n/core/ais.json create mode 100644 MLEB/Translate/i18n/core/ban.json create mode 100644 MLEB/Translate/i18n/core/bbc-latn.json create mode 100644 MLEB/Translate/i18n/core/bjn.json create mode 100644 MLEB/Translate/i18n/core/cnr-latn.json create mode 100644 MLEB/Translate/i18n/core/cop.json create mode 100644 MLEB/Translate/i18n/core/ff.json create mode 100644 MLEB/Translate/i18n/core/fit.json create mode 100644 MLEB/Translate/i18n/core/fon.json create mode 100644 MLEB/Translate/i18n/core/kea.json create mode 100644 MLEB/Translate/i18n/core/ksw.json create mode 100644 MLEB/Translate/i18n/core/mrh.json create mode 100644 MLEB/Translate/i18n/core/nqo.json create mode 100644 MLEB/Translate/i18n/core/ny.json create mode 100644 MLEB/Translate/i18n/core/pcd.json create mode 100644 MLEB/Translate/i18n/core/rej.json create mode 100644 MLEB/Translate/i18n/core/sdc.json create mode 100644 MLEB/Translate/i18n/core/smn.json create mode 100644 MLEB/Translate/i18n/core/szy.json create mode 100644 MLEB/Translate/i18n/core/ti.json create mode 100644 MLEB/Translate/i18n/core/tn.json create mode 100644 MLEB/Translate/i18n/core/trv.json create mode 100644 MLEB/Translate/i18n/core/xh.json create mode 100644 MLEB/Translate/i18n/core/xsy.json create mode 100644 MLEB/Translate/i18n/core/za.json delete mode 100644 MLEB/Translate/i18n/pagetranslation/ais.json create mode 100644 MLEB/Translate/i18n/pagetranslation/ann.json create mode 100644 MLEB/Translate/i18n/pagetranslation/ary.json create mode 100644 MLEB/Translate/i18n/pagetranslation/ban.json create mode 100644 MLEB/Translate/i18n/pagetranslation/bjn.json create mode 100644 MLEB/Translate/i18n/pagetranslation/cnr-latn.json create mode 100644 MLEB/Translate/i18n/pagetranslation/es-formal.json create mode 100644 MLEB/Translate/i18n/pagetranslation/ff.json create mode 100644 MLEB/Translate/i18n/pagetranslation/fit.json create mode 100644 MLEB/Translate/i18n/pagetranslation/kiu.json create mode 100644 MLEB/Translate/i18n/pagetranslation/ksw.json create mode 100644 MLEB/Translate/i18n/pagetranslation/lld.json create mode 100644 MLEB/Translate/i18n/pagetranslation/mrh.json create mode 100644 MLEB/Translate/i18n/pagetranslation/nan.json create mode 100644 MLEB/Translate/i18n/pagetranslation/nqo.json create mode 100644 MLEB/Translate/i18n/pagetranslation/pcd.json create mode 100644 MLEB/Translate/i18n/pagetranslation/rej.json create mode 100644 MLEB/Translate/i18n/pagetranslation/sdc.json create mode 100644 MLEB/Translate/i18n/pagetranslation/sdh.json create mode 100644 MLEB/Translate/i18n/pagetranslation/smn.json create mode 100644 MLEB/Translate/i18n/pagetranslation/szy.json create mode 100644 MLEB/Translate/i18n/pagetranslation/ti.json create mode 100644 MLEB/Translate/i18n/pagetranslation/tly.json create mode 100644 MLEB/Translate/i18n/pagetranslation/trv.json create mode 100644 MLEB/Translate/i18n/pagetranslation/wa.json create mode 100644 MLEB/Translate/i18n/pagetranslation/xsy.json create mode 100644 MLEB/Translate/i18n/sandbox/be.json create mode 100644 MLEB/Translate/i18n/sandbox/eo.json create mode 100644 MLEB/Translate/i18n/sandbox/fit.json create mode 100644 MLEB/Translate/i18n/sandbox/io.json create mode 100644 MLEB/Translate/i18n/sandbox/mt.json create mode 100644 MLEB/Translate/i18n/sandbox/sh.json create mode 100644 MLEB/Translate/i18n/sandbox/sw.json create mode 100644 MLEB/Translate/i18n/sandbox/yo.json delete mode 100644 MLEB/Translate/i18n/search/ais.json create mode 100644 MLEB/Translate/i18n/search/fit.json create mode 100644 MLEB/Translate/i18n/search/gcr.json create mode 100644 MLEB/Translate/i18n/search/io.json create mode 100644 MLEB/Translate/i18n/search/nah.json create mode 100644 MLEB/Translate/i18n/search/szy.json create mode 100644 MLEB/Translate/i18n/search/ti.json create mode 100644 MLEB/Translate/i18n/search/vec.json create mode 100644 MLEB/Translate/insertables/HtmlTagInsertablesSuggester.php create mode 100644 MLEB/Translate/insertables/RegexInsertablesSuggester.php create mode 100644 MLEB/Translate/messagegroups/loaders/AggregateMessageGroupLoader.php create mode 100644 MLEB/Translate/messagegroups/loaders/CachedMessageGroupLoader.php create mode 100644 MLEB/Translate/messagegroups/loaders/FileBasedMessageGroupLoader.php create mode 100644 MLEB/Translate/messagegroups/loaders/MessageGroupLoader.php create mode 100644 MLEB/Translate/messagegroups/loaders/TranslatablePageMessageGroupStore.php create mode 100644 MLEB/Translate/messagegroups/loaders/WorkflowStatesMessageGroupLoader.php create mode 100644 MLEB/Translate/package-lock.json create mode 100644 MLEB/Translate/resources/css/ext.translate.edit.documentation.less delete mode 100644 MLEB/Translate/resources/css/ext.translate.legacy.css create mode 100644 MLEB/Translate/resources/css/ext.translate.messagerenamedialog.less delete mode 100644 MLEB/Translate/resources/css/ext.translate.messagewebimporter.css create mode 100644 MLEB/Translate/resources/css/ext.translate.special.translations.css delete mode 100644 MLEB/Translate/resources/css/ext.translate.tag.languages.css create mode 100644 MLEB/Translate/resources/css/ext.translate.tag.languages.less create mode 100644 MLEB/Translate/resources/images/ellipsis.svg create mode 100644 MLEB/Translate/resources/images/label-error.svg create mode 100644 MLEB/Translate/resources/js/ext.translate.edit.documentation.js delete mode 100644 MLEB/Translate/resources/js/ext.translate.hooks.js create mode 100644 MLEB/Translate/resources/js/ext.translate.messagerenamedialog.js create mode 100644 MLEB/Translate/resources/js/ext.translate.special.managegroups.js delete mode 100644 MLEB/Translate/resources/js/jquery.autosize.js create mode 100644 MLEB/Translate/resources/lib/jquery.autosize.js create mode 100644 MLEB/Translate/scripts/completeExternalTranslation.php delete mode 100644 MLEB/Translate/scripts/create-language-models.php create mode 100644 MLEB/Translate/scripts/export-rename-language.php delete mode 100644 MLEB/Translate/scripts/magic-export.php delete mode 100644 MLEB/Translate/scripts/mwcore-export.php create mode 100644 MLEB/Translate/scripts/removeOrphanedActors.php create mode 100644 MLEB/Translate/scripts/updateTranslatorActivity.php create mode 100644 MLEB/Translate/sonar-project.properties delete mode 100644 MLEB/Translate/specials/SpecialMagic.php create mode 100644 MLEB/Translate/src/Jobs/GenericTranslateJob.php create mode 100644 MLEB/Translate/src/MessageSync/MessageSourceChange.php create mode 100644 MLEB/Translate/src/MessageValidator/ValidationResult.php create mode 100644 MLEB/Translate/src/MessageValidator/Validator.php create mode 100644 MLEB/Translate/src/MessageValidator/ValidatorFactory.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/BraceBalanceValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/EscapeCharacterValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/GettextNewlineValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/GettextPluralValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/InsertableRegexValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/InsertableRubyVariableValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/IosVariableValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/MatchSetValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/MediaWikiLinkValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/MediaWikiPageNameValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/MediaWikiParameterValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/MediaWikiPluralValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/MediaWikiTimeListValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/NewlineValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/NumericalParameterValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/PrintfValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/PythonInterpolationValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/ReplacementValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/SmartFormatPluralValidator.php create mode 100644 MLEB/Translate/src/MessageValidator/Validators/UnicodePluralValidator.php create mode 100644 MLEB/Translate/src/ServiceWiring.php create mode 100644 MLEB/Translate/src/Services.php create mode 100644 MLEB/Translate/src/Statistics/StatisticsUnavailable.php create mode 100644 MLEB/Translate/src/Statistics/TranslatorActivity.php create mode 100644 MLEB/Translate/src/Statistics/TranslatorActivityQuery.php create mode 100644 MLEB/Translate/src/Statistics/UpdateTranslatorActivityJob.php create mode 100644 MLEB/Translate/src/Statistics/UpdateTranslatorActivityMaintenanceScript.php create mode 100644 MLEB/Translate/src/Synchronization/CompleteExternalTranslationMaintenanceScript.php create mode 100644 MLEB/Translate/src/Synchronization/GroupSynchronizationCache.php create mode 100644 MLEB/Translate/src/Synchronization/GroupSynchronizationResponse.php create mode 100644 MLEB/Translate/src/Synchronization/MessageUpdateParameter.php create mode 100644 MLEB/Translate/src/SystemUsers/FuzzyBot.php create mode 100644 MLEB/Translate/src/SystemUsers/TranslateUserManager.php create mode 100644 MLEB/Translate/src/Utilities/GettextPlural.php create mode 100644 MLEB/Translate/src/Utilities/ParsingPlaceholderFactory.php create mode 100644 MLEB/Translate/src/Utilities/SmartFormatPlural.php create mode 100644 MLEB/Translate/src/Utilities/StringComparators/SimpleStringComparator.php create mode 100644 MLEB/Translate/src/Utilities/StringComparators/StringComparator.php create mode 100644 MLEB/Translate/src/Utilities/TranslateReplaceTitle.php create mode 100644 MLEB/Translate/src/Utilities/UnicodePlural.php create mode 100644 MLEB/Translate/src/Validation/LegacyValidatorAdapter.php create mode 100644 MLEB/Translate/src/Validation/MessageValidator.php create mode 100644 MLEB/Translate/src/Validation/ValidationIssue.php create mode 100644 MLEB/Translate/src/Validation/ValidationIssues.php delete mode 100644 MLEB/Translate/tag/TranslateMoveJob.php delete mode 100644 MLEB/Translate/tests/phpunit/MediaWikiMessageCheckerTest.php create mode 100644 MLEB/Translate/tests/phpunit/MessageValidator/Validators/MediaWikiPluralValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/MessageValidatorTest.php delete mode 100644 MLEB/Translate/tests/phpunit/MockFileBasedMessageGroup.php delete mode 100644 MLEB/Translate/tests/phpunit/MockMessageCollectionForExport.php delete mode 100644 MLEB/Translate/tests/phpunit/MockWikiMessageGroup.php delete mode 100644 MLEB/Translate/tests/phpunit/PageTranslationParserTest.php delete mode 100644 MLEB/Translate/tests/phpunit/PageTranslationTaggingTest.php delete mode 100644 MLEB/Translate/tests/phpunit/ResourcesOrderTest.php create mode 100644 MLEB/Translate/tests/phpunit/ServicesTest.php delete mode 100644 MLEB/Translate/tests/phpunit/SolrTTMServerTest.php delete mode 100644 MLEB/Translate/tests/phpunit/SpecialPagesTest.php delete mode 100644 MLEB/Translate/tests/phpunit/TPParseTest.php delete mode 100644 MLEB/Translate/tests/phpunit/TPSectionTest.php delete mode 100644 MLEB/Translate/tests/phpunit/TranslatablePageTest.php create mode 100644 MLEB/Translate/tests/phpunit/TranslateUtilsTest.php create mode 100644 MLEB/Translate/tests/phpunit/WikiPageMessageGroupTest.php create mode 100644 MLEB/Translate/tests/phpunit/api/ApiManageMessageGroupsTest.php create mode 100644 MLEB/Translate/tests/phpunit/api/ApiQueryManageMessageGroupsTest.php create mode 100644 MLEB/Translate/tests/phpunit/api/ApiQueryMessageCollectionTest.php create mode 100644 MLEB/Translate/tests/phpunit/data/AppleInfoPlistFfsTest1.strings create mode 100644 MLEB/Translate/tests/phpunit/data/MessageLoaderGroups.yaml create mode 100644 MLEB/Translate/tests/phpunit/data/ValidatorGroup.yaml create mode 100644 MLEB/Translate/tests/phpunit/data/check-blacklist.php create mode 100644 MLEB/Translate/tests/phpunit/data/messageindexdata.ser create mode 100644 MLEB/Translate/tests/phpunit/ffs/AppleInfoPlistFfsTest.php create mode 100644 MLEB/Translate/tests/phpunit/helpers/TranslatablePageTestTrait.php create mode 100644 MLEB/Translate/tests/phpunit/insertables/RegexInsertablesSuggesterTest.php create mode 100644 MLEB/Translate/tests/phpunit/messagegroups/AggregateMessageGroupLoaderTest.php create mode 100644 MLEB/Translate/tests/phpunit/messagegroups/FileBasedMessageGroupLoaderTest.php create mode 100644 MLEB/Translate/tests/phpunit/messagegroups/MessageGroupLoaderTest.php create mode 100644 MLEB/Translate/tests/phpunit/messagegroups/TranslatablePageMessageGroupStoreTest.php delete mode 100644 MLEB/Translate/tests/phpunit/messageindexdata.ser create mode 100644 MLEB/Translate/tests/phpunit/mocks/MockCacheMessageGroupLoader.php create mode 100644 MLEB/Translate/tests/phpunit/mocks/MockFileBasedMessageGroup.php create mode 100644 MLEB/Translate/tests/phpunit/mocks/MockMessageCollectionForExport.php create mode 100644 MLEB/Translate/tests/phpunit/mocks/MockValidators.php create mode 100644 MLEB/Translate/tests/phpunit/mocks/MockWikiMessageGroup.php delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/FailDoubleOpen.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/FailEmptySection.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/FailMultipleSectionMarkers.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/FailNotAtomic.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/FailSectionMarkerPlace.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/FailTags.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/FailTags2.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/FailUnclosed.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/HeaderSection.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/HeaderSection.ptsource delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/HeaderSection.pttarget delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Inline.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Inline.ptsource delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Inline.pttarget delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/LoneHeader.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/LoneHeader.ptsource delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Nowiki.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Nowiki.pttarget delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/NowikiInside.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/NowikiInside.pttarget delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/NowikiOnly.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/NowikiOnly.pttest delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Simple.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Simple.ptsource delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Simple.pttarget delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Simple.pttest delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/SimpleWithMarker.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/SimpleWithMarker.pttarget delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Variables.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Variables.pttarget delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Whitespace.ptfile delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Whitespace.ptsource delete mode 100644 MLEB/Translate/tests/phpunit/pagetranslation/Whitespace.pttarget create mode 100644 MLEB/Translate/tests/phpunit/tag/PageTranslationParserTest.php create mode 100644 MLEB/Translate/tests/phpunit/tag/PageTranslationTaggingTest.php create mode 100644 MLEB/Translate/tests/phpunit/tag/TranslatablePageIntegrationTest.php create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/FailDoubleOpen.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/FailDoubleOpenNowrap.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/FailEmptySection.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/FailMultipleSectionMarkers.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/FailNotAtomic.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/FailSectionMarkerPlace.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/FailTags.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/FailTags2.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/FailUnclosed.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/HeaderSection.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/HeaderSection.ptsource create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/HeaderSection.pttarget create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Inline.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Inline.ptsource create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Inline.pttarget create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/LoneHeader.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/LoneHeader.ptsource create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Nowiki.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Nowiki.pttarget create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/NowikiInside.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/NowikiInside.pttarget create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/NowikiOnly.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/NowikiOnly.pttest create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Simple.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Simple.ptsource create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Simple.pttarget create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Simple.pttest create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/SimpleWithMarker.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/SimpleWithMarker.pttarget create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Variables.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Variables.pttarget create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Whitespace.ptfile create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Whitespace.ptsource create mode 100644 MLEB/Translate/tests/phpunit/tag/pagetranslation/Whitespace.pttarget create mode 100644 MLEB/Translate/tests/phpunit/translationaids/TranslationAidDataProviderTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/Makefile create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/BaseValidatorTestCase.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/BraceBalanceValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/EscapeCharacterValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/GettextNewlineValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/GettextPluralValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/InsertableRegexValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/InsertableRubyVariableValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/IosVariableValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/MatchSetValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/MediaWikiLinkValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/MediaWikiPageNameValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/MediaWikiParameterValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/MediaWikiTimeListValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/NewlineValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/NumericalParameterValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/PrintfValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/PythonInterpolationValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/ReplacementValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/SmartFormatPluralValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/MessageValidator/Validators/UnicodePluralValidatorTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/Statistics/TranslatorActivityTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/Synchronization/GroupSynchronizationCacheTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/Synchronization/MessageUpdateParameterTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/Utilities/GettextPluralTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/Utilities/ParsingPlaceholderFactoryTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/Utilities/SmartFormatPluralTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/Utilities/UnicodePluralTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/insertables/HtmlTagInsertablesSuggesterTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/tag/TPParseTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/tag/TPSectionTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/tag/TranslatablePageTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/utils/ArrayFlattenerTest.php create mode 100644 MLEB/Translate/tests/phpunit/unit/utils/MessageSourceChangeTest.php delete mode 100644 MLEB/Translate/tests/phpunit/utils/ArrayFlattenerTest.php create mode 100644 MLEB/Translate/tests/phpunit/utils/MessageGroupCacheTest.php create mode 100644 MLEB/Translate/tests/phpunit/utils/MessageGroupWANCacheTest.php create mode 100644 MLEB/Translate/tests/phpunit/utils/MessageWebImporterTest.php delete mode 100644 MLEB/Translate/ttmserver/SolrTTMServer.php delete mode 100644 MLEB/Translate/ttmserver/schema.xml create mode 100644 MLEB/Translate/utils/FCFontFinder.php delete mode 100644 MLEB/Translate/utils/Font.php delete mode 100644 MLEB/Translate/utils/FuzzyBot.php create mode 100644 MLEB/Translate/utils/MessageGroupWANCache.php create mode 100644 MLEB/Translate/utils/MessageIndexException.php create mode 100644 MLEB/Translate/utils/PHPVariableLoader.php delete mode 100644 MLEB/Translate/utils/RcFilter.php delete mode 100644 MLEB/Translate/utils/ResourceLoader.php delete mode 100644 MLEB/Translate/utils/ToolBox.php create mode 100644 MLEB/Translate/utils/TranslatePreferences.php create mode 100644 MLEB/Translate/utils/TranslateRcFilter.php create mode 100644 MLEB/Translate/utils/TranslateToolbox.php delete mode 100644 MLEB/Translate/utils/UserToggles.php create mode 100644 MLEB/Translate/utils/lc.php create mode 100644 MLEB/Translate/webservices/GoogleTranslateWebService.php create mode 100644 MLEB/UniversalLanguageSelector/.phan/config.php delete mode 100644 MLEB/UniversalLanguageSelector/UniversalLanguageSelector.hooks.php delete mode 100644 MLEB/UniversalLanguageSelector/api/ApiLanguageSearch.php delete mode 100644 MLEB/UniversalLanguageSelector/api/ApiULSLocalization.php create mode 100644 MLEB/UniversalLanguageSelector/composer.lock create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Fedorovsk/FedorovskUnicode.ttf create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Fedorovsk/FedorovskUnicode.woff create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Fedorovsk/FedorovskUnicode.woff2 create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Fedorovsk/font.ini create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Kadiri/Kadiri.ttf create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Kadiri/Kadiri.woff create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Kadiri/Kadiri.woff2 create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Kadiri/font.ini create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Menaion/MenaionUnicode.ttf create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Menaion/MenaionUnicode.woff create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Menaion/MenaionUnicode.woff2 create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Menaion/font.ini create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Monomakh/MonomakhUnicode.ttf create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Monomakh/MonomakhUnicode.woff create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Monomakh/MonomakhUnicode.woff2 create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Monomakh/font.ini create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Ponomar/PonomarUnicode.ttf create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Ponomar/PonomarUnicode.woff create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Ponomar/PonomarUnicode.woff2 create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Ponomar/font.ini create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/PustakaBali/PustakaBali.ttf create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/PustakaBali/PustakaBali.woff create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/PustakaBali/PustakaBali.woff2 create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/PustakaBali/font.ini create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Vimala/Vimala.ttf create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Vimala/Vimala.woff create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Vimala/Vimala.woff2 create mode 100644 MLEB/UniversalLanguageSelector/data/fontrepo/fonts/Vimala/font.ini delete mode 100644 MLEB/UniversalLanguageSelector/i18n/ais.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/alt.json delete mode 100644 MLEB/UniversalLanguageSelector/i18n/api/ais.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/api/kab.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/api/ms.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/api/nqo.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/api/sdh.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/api/szy.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/api/ta.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/ban.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/bqi.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/fit.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/gcr.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/hyw.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/kiu.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/kjh.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/nqo.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/szy.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/ti.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/trv.json create mode 100644 MLEB/UniversalLanguageSelector/i18n/xsy.json create mode 100644 MLEB/UniversalLanguageSelector/includes/UniversalLanguageSelectorHooks.php create mode 100644 MLEB/UniversalLanguageSelector/includes/api/ApiLanguageSearch.php create mode 100644 MLEB/UniversalLanguageSelector/includes/api/ApiULSLocalization.php create mode 100644 MLEB/UniversalLanguageSelector/includes/api/ApiULSSetLanguage.php create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/af/af-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/ak/ak-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/bci/bci-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/bm/bm-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/dag/dag-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/din/din-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/ff/ff-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/gaa/gaa-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/kab/kab-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/kbp/kbp-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/ki/ki-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/lg/lg-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/ln/ln-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/mg/mg-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/nqo/nqo-standard-qwerty.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/nqo/nqo-transliteration.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/nso/nso-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/ses/ses-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/sg/sg-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/st/st-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/vai/vai-transliteration.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/ve/ve-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/wo/wo-tilde.js create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.ime/rules/zh/zh-pinyin-transliteration.js delete mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/i18n/ais.json create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/i18n/ban.json create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/i18n/ee.json create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/i18n/fit.json create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/i18n/kiu.json create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/i18n/kjh.json create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/i18n/ksw.json create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/i18n/nqo.json create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/i18n/szy.json create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/i18n/ti.json delete mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/images/clear.png delete mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/images/clear.svg create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/images/close.png create mode 100644 MLEB/UniversalLanguageSelector/lib/jquery.uls/images/close.svg create mode 100644 MLEB/UniversalLanguageSelector/package-lock.json create mode 100644 MLEB/UniversalLanguageSelector/resources/css/ext.uls.dialog.less create mode 100644 MLEB/UniversalLanguageSelector/resources/css/ext.uls.setlang.less delete mode 100644 MLEB/UniversalLanguageSelector/resources/images/back-grey-ltr.png delete mode 100644 MLEB/UniversalLanguageSelector/resources/images/back-grey-rtl.png delete mode 100644 MLEB/UniversalLanguageSelector/resources/images/close.png delete mode 100644 MLEB/UniversalLanguageSelector/resources/images/cog-sprite.png delete mode 100644 MLEB/UniversalLanguageSelector/resources/images/cog.png delete mode 100644 MLEB/UniversalLanguageSelector/resources/images/compact-links-trigger.png delete mode 100644 MLEB/UniversalLanguageSelector/resources/images/display.png delete mode 100644 MLEB/UniversalLanguageSelector/resources/images/help.png delete mode 100644 MLEB/UniversalLanguageSelector/resources/images/input.png delete mode 100644 MLEB/UniversalLanguageSelector/resources/images/remove-input.png create mode 100644 MLEB/UniversalLanguageSelector/resources/js/ext.uls.dialog.js create mode 100644 MLEB/UniversalLanguageSelector/resources/js/ext.uls.setlang.js create mode 100644 MLEB/cldr/.phan/config.php create mode 100644 MLEB/cldr/CldrNames/CldrNamesCeb.php create mode 100644 MLEB/cldr/CldrNames/CldrNamesMai.php create mode 100644 MLEB/cldr/CldrNames/CldrNamesMni.php create mode 100644 MLEB/cldr/CldrNames/CldrNamesSat.php create mode 100644 MLEB/cldr/CldrNames/CldrNamesSmn.php create mode 100644 MLEB/cldr/CldrNames/CldrNamesSu.php create mode 100644 MLEB/cldr/LocalNames/LocalNamesSje.php delete mode 100644 MLEB/cldr/cldr.php create mode 100644 MLEB/cldr/i18n/sh.json create mode 100644 MLEB/cldr/i18n/th.json create mode 100644 MLEB/cldr/includes/CLDRParser.php create mode 100644 MLEB/cldr/package-lock.json diff --git a/MLEB/Babel/.eslintrc b/MLEB/Babel/.eslintrc deleted file mode 100644 index 48432407..00000000 --- a/MLEB/Babel/.eslintrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "wikimedia", - "env": { - "browser": true, - "jquery": true - }, - "globals": { - "mediaWiki": false - } -} diff --git a/MLEB/Babel/.eslintrc.json b/MLEB/Babel/.eslintrc.json new file mode 100644 index 00000000..c6ad99e8 --- /dev/null +++ b/MLEB/Babel/.eslintrc.json @@ -0,0 +1,11 @@ +{ + "root": true, + "extends": "wikimedia", + "env": { + "browser": true, + "jquery": true + }, + "globals": { + "mediaWiki": false + } +} diff --git a/MLEB/Babel/.phan/config.php b/MLEB/Babel/.phan/config.php new file mode 100644 index 00000000..76efd06d --- /dev/null +++ b/MLEB/Babel/.phan/config.php @@ -0,0 +1,3 @@ + + diff --git a/MLEB/Babel/Babel.php b/MLEB/Babel/Babel.php deleted file mode 100644 index 52f34336..00000000 --- a/MLEB/Babel/Babel.php +++ /dev/null @@ -1,30 +0,0 @@ - - * @copyright Copyright © 2008 - 2011 Robert Leverington. - * @license GPL-2.0-or-later - */ - -if ( function_exists( 'wfLoadExtension' ) ) { - wfLoadExtension( 'Babel' ); - // Keep i18n globals so mergeMessageFileList.php doesn't break - $GLOBALS['wgMessagesDirs']['Babel'] = __DIR__ . '/i18n'; - $GLOBALS['wgExtensionMessagesFiles']['BabelMagic'] = __DIR__ . '/Babel.i18n.magic.php'; - wfWarn( - 'Deprecated PHP entry point used for Babel extension. Please use wfLoadExtension instead, ' . - 'see https://www.mediawiki.org/wiki/Extension_registration for more details.' - ); - return; -} else { - die( 'This version of the Babel extension requires MediaWiki 1.25+' ); -} diff --git a/MLEB/Babel/Gruntfile.js b/MLEB/Babel/Gruntfile.js index 8fc9572b..4f629505 100644 --- a/MLEB/Babel/Gruntfile.js +++ b/MLEB/Babel/Gruntfile.js @@ -8,20 +8,18 @@ module.exports = function ( grunt ) { var conf = grunt.file.readJSON( 'extension.json' ); grunt.loadNpmTasks( 'grunt-banana-checker' ); - grunt.loadNpmTasks( 'grunt-jsonlint' ); grunt.loadNpmTasks( 'grunt-eslint' ); grunt.loadNpmTasks( 'grunt-stylelint' ); grunt.initConfig( { - banana: conf.MessagesDirs, - jsonlint: { - all: [ - '*.json', - '**/*.json', - '!node_modules/**', - '!vendor/**' - ] - }, + banana: Object.assign( + conf.MessagesDirs, + { + options: { + requireLowerCase: 'initial' + } + } + ), stylelint: { all: [ '**/*.css', @@ -31,15 +29,17 @@ module.exports = function ( grunt ) { ] }, eslint: { + options: { + extensions: [ '.js', '.json' ], + cache: true + }, all: [ - '*.js', - 'modules/**/*.js', - '!node_modules/**', - '!vendor/**' + '**/*.js{,on}', + '!{vendor,node_modules}/**' ] } } ); - grunt.registerTask( 'test', [ 'jsonlint', 'banana', 'eslint', 'stylelint' ] ); + grunt.registerTask( 'test', [ 'eslint', 'stylelint', 'banana' ] ); grunt.registerTask( 'default', 'test' ); }; diff --git a/MLEB/Babel/RELEASE-NOTES b/MLEB/Babel/RELEASE-NOTES index 71e49621..352dd154 100644 --- a/MLEB/Babel/RELEASE-NOTES +++ b/MLEB/Babel/RELEASE-NOTES @@ -1,5 +1,5 @@ -== Babel 2019.01 == -Released at 2019-01-22. +== Babel 2020.07 == +Released at 2020-07-24. -=== Highlights === -* Maintenance and localization updates only. +=== Noteworthy changes === +* Localisation and maintenance updates. diff --git a/MLEB/Babel/babel.sql b/MLEB/Babel/babel.sql index f786d7f1..49ff6db4 100644 --- a/MLEB/Babel/babel.sql +++ b/MLEB/Babel/babel.sql @@ -1,10 +1,10 @@ CREATE TABLE /*_*/babel ( -- user id - babel_user int UNSIGNED not null, + babel_user int UNSIGNED NOT NULL, -- language code - babel_lang varchar(10) not null, + babel_lang varbinary(35) NOT NULL, -- level (1-5, N) - babel_level VARCHAR(2) NOT NULL, + babel_level varbinary(2) NOT NULL, PRIMARY KEY ( babel_user, babel_lang ) ) /*$wgDBTableOptions*/; diff --git a/MLEB/Babel/codes.cdb b/MLEB/Babel/codes.cdb deleted file mode 100644 index 887e5609..00000000 Binary files a/MLEB/Babel/codes.cdb and /dev/null differ diff --git a/MLEB/Babel/codes.php b/MLEB/Babel/codes.php new file mode 100644 index 00000000..ea0bcfb7 --- /dev/null +++ b/MLEB/Babel/codes.php @@ -0,0 +1,8047 @@ + 'aaa', + 'aab' => 'aab', + 'aac' => 'aac', + 'aad' => 'aad', + 'aae' => 'aae', + 'aaf' => 'aaf', + 'aag' => 'aag', + 'aah' => 'aah', + 'aai' => 'aai', + 'aak' => 'aak', + 'aal' => 'aal', + 'aan' => 'aan', + 'aao' => 'aao', + 'aap' => 'aap', + 'aaq' => 'aaq', + 'aa' => 'aa', + 'aar' => 'aa', + 'aas' => 'aas', + 'aat' => 'aat', + 'aau' => 'aau', + 'aaw' => 'aaw', + 'aax' => 'aax', + 'aaz' => 'aaz', + 'aba' => 'aba', + 'abb' => 'abb', + 'abc' => 'abc', + 'abd' => 'abd', + 'abe' => 'abe', + 'abf' => 'abf', + 'abg' => 'abg', + 'abh' => 'abh', + 'abi' => 'abi', + 'abj' => 'abj', + 'ab' => 'ab', + 'abk' => 'ab', + 'abl' => 'abl', + 'abm' => 'abm', + 'abn' => 'abn', + 'abo' => 'abo', + 'abp' => 'abp', + 'abq' => 'abq', + 'abr' => 'abr', + 'abs' => 'abs', + 'abt' => 'abt', + 'abu' => 'abu', + 'abv' => 'abv', + 'abw' => 'abw', + 'abx' => 'abx', + 'aby' => 'aby', + 'abz' => 'abz', + 'aca' => 'aca', + 'acb' => 'acb', + 'acd' => 'acd', + 'ace' => 'ace', + 'acf' => 'acf', + 'ach' => 'ach', + 'aci' => 'aci', + 'ack' => 'ack', + 'acl' => 'acl', + 'acm' => 'acm', + 'acn' => 'acn', + 'acp' => 'acp', + 'acq' => 'acq', + 'acr' => 'acr', + 'acs' => 'acs', + 'act' => 'act', + 'acu' => 'acu', + 'acv' => 'acv', + 'acw' => 'acw', + 'acx' => 'acx', + 'acy' => 'acy', + 'acz' => 'acz', + 'ada' => 'ada', + 'adb' => 'adb', + 'add' => 'add', + 'ade' => 'ade', + 'adf' => 'adf', + 'adg' => 'adg', + 'adh' => 'adh', + 'adi' => 'adi', + 'adj' => 'adj', + 'adl' => 'adl', + 'adn' => 'adn', + 'ado' => 'ado', + 'adq' => 'adq', + 'adr' => 'adr', + 'ads' => 'ads', + 'adt' => 'adt', + 'adu' => 'adu', + 'adw' => 'adw', + 'adx' => 'adx', + 'ady' => 'ady', + 'adz' => 'adz', + 'aea' => 'aea', + 'aeb' => 'aeb', + 'aec' => 'aec', + 'aed' => 'aed', + 'aee' => 'aee', + 'aek' => 'aek', + 'ael' => 'ael', + 'aem' => 'aem', + 'aen' => 'aen', + 'aeq' => 'aeq', + 'aer' => 'aer', + 'aes' => 'aes', + 'aeu' => 'aeu', + 'aew' => 'aew', + 'aey' => 'aey', + 'aez' => 'aez', + 'afb' => 'afb', + 'afd' => 'afd', + 'afe' => 'afe', + 'afg' => 'afg', + 'afh' => 'afh', + 'afi' => 'afi', + 'afk' => 'afk', + 'afn' => 'afn', + 'afo' => 'afo', + 'afp' => 'afp', + 'af' => 'af', + 'afr' => 'af', + 'afs' => 'afs', + 'aft' => 'aft', + 'afu' => 'afu', + 'afz' => 'afz', + 'aga' => 'aga', + 'agb' => 'agb', + 'agc' => 'agc', + 'agd' => 'agd', + 'age' => 'age', + 'agf' => 'agf', + 'agg' => 'agg', + 'agh' => 'agh', + 'agi' => 'agi', + 'agj' => 'agj', + 'agk' => 'agk', + 'agl' => 'agl', + 'agm' => 'agm', + 'agn' => 'agn', + 'ago' => 'ago', + 'agq' => 'agq', + 'agr' => 'agr', + 'ags' => 'ags', + 'agt' => 'agt', + 'agu' => 'agu', + 'agv' => 'agv', + 'agw' => 'agw', + 'agx' => 'agx', + 'agy' => 'agy', + 'agz' => 'agz', + 'aha' => 'aha', + 'ahb' => 'ahb', + 'ahg' => 'ahg', + 'ahh' => 'ahh', + 'ahi' => 'ahi', + 'ahk' => 'ahk', + 'ahl' => 'ahl', + 'ahm' => 'ahm', + 'ahn' => 'ahn', + 'aho' => 'aho', + 'ahp' => 'ahp', + 'ahr' => 'ahr', + 'ahs' => 'ahs', + 'aht' => 'aht', + 'aia' => 'aia', + 'aib' => 'aib', + 'aic' => 'aic', + 'aid' => 'aid', + 'aie' => 'aie', + 'aif' => 'aif', + 'aig' => 'aig', + 'aih' => 'aih', + 'aii' => 'aii', + 'aij' => 'aij', + 'aik' => 'aik', + 'ail' => 'ail', + 'aim' => 'aim', + 'ain' => 'ain', + 'aio' => 'aio', + 'aip' => 'aip', + 'aiq' => 'aiq', + 'air' => 'air', + 'ais' => 'ais', + 'ait' => 'ait', + 'aiw' => 'aiw', + 'aix' => 'aix', + 'aiy' => 'aiy', + 'aja' => 'aja', + 'ajg' => 'ajg', + 'aji' => 'aji', + 'ajn' => 'ajn', + 'ajp' => 'ajp', + 'ajt' => 'ajt', + 'aju' => 'aju', + 'ajw' => 'ajw', + 'ajz' => 'ajz', + 'ak' => 'ak', + 'aka' => 'ak', + 'akb' => 'akb', + 'akc' => 'akc', + 'akd' => 'akd', + 'ake' => 'ake', + 'akf' => 'akf', + 'akg' => 'akg', + 'akh' => 'akh', + 'aki' => 'aki', + 'akj' => 'akj', + 'akk' => 'akk', + 'akl' => 'akl', + 'akm' => 'akm', + 'ako' => 'ako', + 'akp' => 'akp', + 'akq' => 'akq', + 'akr' => 'akr', + 'aks' => 'aks', + 'akt' => 'akt', + 'aku' => 'aku', + 'akv' => 'akv', + 'akw' => 'akw', + 'akx' => 'akx', + 'aky' => 'aky', + 'akz' => 'akz', + 'ala' => 'ala', + 'alc' => 'alc', + 'ald' => 'ald', + 'ale' => 'ale', + 'alf' => 'alf', + 'alh' => 'alh', + 'ali' => 'ali', + 'alj' => 'alj', + 'alk' => 'alk', + 'all' => 'all', + 'alm' => 'alm', + 'aln' => 'aln', + 'alo' => 'alo', + 'alp' => 'alp', + 'alq' => 'alq', + 'alr' => 'alr', + 'als' => 'als', + 'alt' => 'alt', + 'alu' => 'alu', + 'alw' => 'alw', + 'alx' => 'alx', + 'aly' => 'aly', + 'alz' => 'alz', + 'ama' => 'ama', + 'amb' => 'amb', + 'amc' => 'amc', + 'ame' => 'ame', + 'amf' => 'amf', + 'amg' => 'amg', + 'am' => 'am', + 'amh' => 'am', + 'ami' => 'ami', + 'amj' => 'amj', + 'amk' => 'amk', + 'aml' => 'aml', + 'amm' => 'amm', + 'amn' => 'amn', + 'amo' => 'amo', + 'amp' => 'amp', + 'amq' => 'amq', + 'amr' => 'amr', + 'ams' => 'ams', + 'amt' => 'amt', + 'amu' => 'amu', + 'amv' => 'amv', + 'amw' => 'amw', + 'amx' => 'amx', + 'amy' => 'amy', + 'amz' => 'amz', + 'ana' => 'ana', + 'anb' => 'anb', + 'anc' => 'anc', + 'and' => 'and', + 'ane' => 'ane', + 'anf' => 'anf', + 'ang' => 'ang', + 'anh' => 'anh', + 'ani' => 'ani', + 'anj' => 'anj', + 'ank' => 'ank', + 'anl' => 'anl', + 'anm' => 'anm', + 'ann' => 'ann', + 'ano' => 'ano', + 'anp' => 'anp', + 'anq' => 'anq', + 'anr' => 'anr', + 'ans' => 'ans', + 'ant' => 'ant', + 'anu' => 'anu', + 'anv' => 'anv', + 'anw' => 'anw', + 'anx' => 'anx', + 'any' => 'any', + 'anz' => 'anz', + 'aoa' => 'aoa', + 'aob' => 'aob', + 'aoc' => 'aoc', + 'aod' => 'aod', + 'aoe' => 'aoe', + 'aof' => 'aof', + 'aog' => 'aog', + 'aoh' => 'aoh', + 'aoi' => 'aoi', + 'aoj' => 'aoj', + 'aok' => 'aok', + 'aol' => 'aol', + 'aom' => 'aom', + 'aon' => 'aon', + 'aor' => 'aor', + 'aos' => 'aos', + 'aot' => 'aot', + 'aou' => 'aou', + 'aox' => 'aox', + 'aoz' => 'aoz', + 'apb' => 'apb', + 'apc' => 'apc', + 'apd' => 'apd', + 'ape' => 'ape', + 'apf' => 'apf', + 'apg' => 'apg', + 'aph' => 'aph', + 'api' => 'api', + 'apj' => 'apj', + 'apk' => 'apk', + 'apl' => 'apl', + 'apm' => 'apm', + 'apn' => 'apn', + 'apo' => 'apo', + 'app' => 'app', + 'apq' => 'apq', + 'apr' => 'apr', + 'aps' => 'aps', + 'apt' => 'apt', + 'apu' => 'apu', + 'apv' => 'apv', + 'apw' => 'apw', + 'apx' => 'apx', + 'apy' => 'apy', + 'apz' => 'apz', + 'aqc' => 'aqc', + 'aqd' => 'aqd', + 'aqg' => 'aqg', + 'aqm' => 'aqm', + 'aqn' => 'aqn', + 'aqp' => 'aqp', + 'aqr' => 'aqr', + 'aqt' => 'aqt', + 'aqz' => 'aqz', + 'ar' => 'ar', + 'ara' => 'ar', + 'arb' => 'arb', + 'arc' => 'arc', + 'ard' => 'ard', + 'are' => 'are', + 'an' => 'an', + 'arg' => 'an', + 'arh' => 'arh', + 'ari' => 'ari', + 'arj' => 'arj', + 'ark' => 'ark', + 'arl' => 'arl', + 'arn' => 'arn', + 'aro' => 'aro', + 'arp' => 'arp', + 'arq' => 'arq', + 'arr' => 'arr', + 'ars' => 'ars', + 'aru' => 'aru', + 'arv' => 'arv', + 'arw' => 'arw', + 'arx' => 'arx', + 'ary' => 'ary', + 'arz' => 'arz', + 'asa' => 'asa', + 'asb' => 'asb', + 'asc' => 'asc', + 'asd' => 'asd', + 'ase' => 'ase', + 'asf' => 'asf', + 'asg' => 'asg', + 'ash' => 'ash', + 'asi' => 'asi', + 'asj' => 'asj', + 'ask' => 'ask', + 'asl' => 'asl', + 'as' => 'as', + 'asm' => 'as', + 'asn' => 'asn', + 'aso' => 'aso', + 'asp' => 'asp', + 'asq' => 'asq', + 'asr' => 'asr', + 'ass' => 'ass', + 'ast' => 'ast', + 'asu' => 'asu', + 'asv' => 'asv', + 'asw' => 'asw', + 'asx' => 'asx', + 'asy' => 'asy', + 'asz' => 'asz', + 'ata' => 'ata', + 'atb' => 'atb', + 'atc' => 'atc', + 'atd' => 'atd', + 'ate' => 'ate', + 'atg' => 'atg', + 'ati' => 'ati', + 'atj' => 'atj', + 'atk' => 'atk', + 'atl' => 'atl', + 'atm' => 'atm', + 'atn' => 'atn', + 'ato' => 'ato', + 'atp' => 'atp', + 'atq' => 'atq', + 'atr' => 'atr', + 'ats' => 'ats', + 'att' => 'att', + 'atu' => 'atu', + 'atv' => 'atv', + 'atw' => 'atw', + 'atx' => 'atx', + 'aty' => 'aty', + 'atz' => 'atz', + 'aua' => 'aua', + 'aub' => 'aub', + 'auc' => 'auc', + 'aud' => 'aud', + 'aug' => 'aug', + 'auh' => 'auh', + 'aui' => 'aui', + 'auj' => 'auj', + 'auk' => 'auk', + 'aul' => 'aul', + 'aum' => 'aum', + 'aun' => 'aun', + 'auo' => 'auo', + 'aup' => 'aup', + 'auq' => 'auq', + 'aur' => 'aur', + 'aut' => 'aut', + 'auu' => 'auu', + 'auw' => 'auw', + 'aux' => 'aux', + 'auy' => 'auy', + 'auz' => 'auz', + 'av' => 'av', + 'ava' => 'av', + 'avb' => 'avb', + 'avd' => 'avd', + 'ae' => 'ae', + 'ave' => 'ae', + 'avi' => 'avi', + 'avk' => 'avk', + 'avl' => 'avl', + 'avm' => 'avm', + 'avn' => 'avn', + 'avo' => 'avo', + 'avs' => 'avs', + 'avt' => 'avt', + 'avu' => 'avu', + 'avv' => 'avv', + 'awa' => 'awa', + 'awb' => 'awb', + 'awc' => 'awc', + 'awe' => 'awe', + 'awg' => 'awg', + 'awh' => 'awh', + 'awi' => 'awi', + 'awk' => 'awk', + 'awm' => 'awm', + 'awn' => 'awn', + 'awo' => 'awo', + 'awr' => 'awr', + 'aws' => 'aws', + 'awt' => 'awt', + 'awu' => 'awu', + 'awv' => 'awv', + 'aww' => 'aww', + 'awx' => 'awx', + 'awy' => 'awy', + 'axb' => 'axb', + 'axe' => 'axe', + 'axg' => 'axg', + 'axk' => 'axk', + 'axl' => 'axl', + 'axm' => 'axm', + 'axx' => 'axx', + 'aya' => 'aya', + 'ayb' => 'ayb', + 'ayc' => 'ayc', + 'ayd' => 'ayd', + 'aye' => 'aye', + 'ayg' => 'ayg', + 'ayh' => 'ayh', + 'ayi' => 'ayi', + 'ayk' => 'ayk', + 'ayl' => 'ayl', + 'ay' => 'ay', + 'aym' => 'ay', + 'ayn' => 'ayn', + 'ayo' => 'ayo', + 'ayp' => 'ayp', + 'ayq' => 'ayq', + 'ayr' => 'ayr', + 'ays' => 'ays', + 'ayt' => 'ayt', + 'ayu' => 'ayu', + 'ayy' => 'ayy', + 'ayz' => 'ayz', + 'aza' => 'aza', + 'azb' => 'azb', + 'azd' => 'azd', + 'az' => 'az', + 'aze' => 'az', + 'azg' => 'azg', + 'azj' => 'azj', + 'azm' => 'azm', + 'azn' => 'azn', + 'azo' => 'azo', + 'azt' => 'azt', + 'azz' => 'azz', + 'baa' => 'baa', + 'bab' => 'bab', + 'bac' => 'bac', + 'bae' => 'bae', + 'baf' => 'baf', + 'bag' => 'bag', + 'bah' => 'bah', + 'baj' => 'baj', + 'ba' => 'ba', + 'bak' => 'ba', + 'bal' => 'bal', + 'bm' => 'bm', + 'bam' => 'bm', + 'ban' => 'ban', + 'bao' => 'bao', + 'bap' => 'bap', + 'bar' => 'bar', + 'bas' => 'bas', + 'bau' => 'bau', + 'bav' => 'bav', + 'baw' => 'baw', + 'bax' => 'bax', + 'bay' => 'bay', + 'bba' => 'bba', + 'bbb' => 'bbb', + 'bbc' => 'bbc', + 'bbd' => 'bbd', + 'bbe' => 'bbe', + 'bbf' => 'bbf', + 'bbg' => 'bbg', + 'bbh' => 'bbh', + 'bbi' => 'bbi', + 'bbj' => 'bbj', + 'bbk' => 'bbk', + 'bbl' => 'bbl', + 'bbm' => 'bbm', + 'bbn' => 'bbn', + 'bbo' => 'bbo', + 'bbp' => 'bbp', + 'bbq' => 'bbq', + 'bbr' => 'bbr', + 'bbs' => 'bbs', + 'bbt' => 'bbt', + 'bbu' => 'bbu', + 'bbv' => 'bbv', + 'bbw' => 'bbw', + 'bbx' => 'bbx', + 'bby' => 'bby', + 'bbz' => 'bbz', + 'bca' => 'bca', + 'bcb' => 'bcb', + 'bcc' => 'bcc', + 'bcd' => 'bcd', + 'bce' => 'bce', + 'bcf' => 'bcf', + 'bcg' => 'bcg', + 'bch' => 'bch', + 'bci' => 'bci', + 'bcj' => 'bcj', + 'bck' => 'bck', + 'bcl' => 'bcl', + 'bcm' => 'bcm', + 'bcn' => 'bcn', + 'bco' => 'bco', + 'bcp' => 'bcp', + 'bcq' => 'bcq', + 'bcr' => 'bcr', + 'bcs' => 'bcs', + 'bct' => 'bct', + 'bcu' => 'bcu', + 'bcv' => 'bcv', + 'bcw' => 'bcw', + 'bcy' => 'bcy', + 'bcz' => 'bcz', + 'bda' => 'bda', + 'bdb' => 'bdb', + 'bdc' => 'bdc', + 'bdd' => 'bdd', + 'bde' => 'bde', + 'bdf' => 'bdf', + 'bdg' => 'bdg', + 'bdh' => 'bdh', + 'bdi' => 'bdi', + 'bdj' => 'bdj', + 'bdk' => 'bdk', + 'bdl' => 'bdl', + 'bdm' => 'bdm', + 'bdn' => 'bdn', + 'bdo' => 'bdo', + 'bdp' => 'bdp', + 'bdq' => 'bdq', + 'bdr' => 'bdr', + 'bds' => 'bds', + 'bdt' => 'bdt', + 'bdu' => 'bdu', + 'bdv' => 'bdv', + 'bdw' => 'bdw', + 'bdx' => 'bdx', + 'bdy' => 'bdy', + 'bdz' => 'bdz', + 'bea' => 'bea', + 'beb' => 'beb', + 'bec' => 'bec', + 'bed' => 'bed', + 'bee' => 'bee', + 'bef' => 'bef', + 'beg' => 'beg', + 'beh' => 'beh', + 'bei' => 'bei', + 'bej' => 'bej', + 'bek' => 'bek', + 'be' => 'be', + 'bel' => 'be', + 'bem' => 'bem', + 'bn' => 'bn', + 'ben' => 'bn', + 'beo' => 'beo', + 'bep' => 'bep', + 'beq' => 'beq', + 'bes' => 'bes', + 'bet' => 'bet', + 'beu' => 'beu', + 'bev' => 'bev', + 'bew' => 'bew', + 'bex' => 'bex', + 'bey' => 'bey', + 'bez' => 'bez', + 'bfa' => 'bfa', + 'bfb' => 'bfb', + 'bfc' => 'bfc', + 'bfd' => 'bfd', + 'bfe' => 'bfe', + 'bff' => 'bff', + 'bfg' => 'bfg', + 'bfh' => 'bfh', + 'bfi' => 'bfi', + 'bfj' => 'bfj', + 'bfk' => 'bfk', + 'bfl' => 'bfl', + 'bfm' => 'bfm', + 'bfn' => 'bfn', + 'bfo' => 'bfo', + 'bfp' => 'bfp', + 'bfq' => 'bfq', + 'bfr' => 'bfr', + 'bfs' => 'bfs', + 'bft' => 'bft', + 'bfu' => 'bfu', + 'bfw' => 'bfw', + 'bfx' => 'bfx', + 'bfy' => 'bfy', + 'bfz' => 'bfz', + 'bga' => 'bga', + 'bgb' => 'bgb', + 'bgc' => 'bgc', + 'bgd' => 'bgd', + 'bge' => 'bge', + 'bgf' => 'bgf', + 'bgg' => 'bgg', + 'bgi' => 'bgi', + 'bgj' => 'bgj', + 'bgk' => 'bgk', + 'bgl' => 'bgl', + 'bgn' => 'bgn', + 'bgo' => 'bgo', + 'bgp' => 'bgp', + 'bgq' => 'bgq', + 'bgr' => 'bgr', + 'bgs' => 'bgs', + 'bgt' => 'bgt', + 'bgu' => 'bgu', + 'bgv' => 'bgv', + 'bgw' => 'bgw', + 'bgx' => 'bgx', + 'bgy' => 'bgy', + 'bgz' => 'bgz', + 'bha' => 'bha', + 'bhb' => 'bhb', + 'bhc' => 'bhc', + 'bhd' => 'bhd', + 'bhe' => 'bhe', + 'bhf' => 'bhf', + 'bhg' => 'bhg', + 'bhh' => 'bhh', + 'bhi' => 'bhi', + 'bhj' => 'bhj', + 'bhl' => 'bhl', + 'bhm' => 'bhm', + 'bhn' => 'bhn', + 'bho' => 'bho', + 'bhp' => 'bhp', + 'bhq' => 'bhq', + 'bhr' => 'bhr', + 'bhs' => 'bhs', + 'bht' => 'bht', + 'bhu' => 'bhu', + 'bhv' => 'bhv', + 'bhw' => 'bhw', + 'bhx' => 'bhx', + 'bhy' => 'bhy', + 'bhz' => 'bhz', + 'bia' => 'bia', + 'bib' => 'bib', + 'bic' => 'bic', + 'bid' => 'bid', + 'bie' => 'bie', + 'bif' => 'bif', + 'big' => 'big', + 'bij' => 'bij', + 'bik' => 'bik', + 'bil' => 'bil', + 'bim' => 'bim', + 'bin' => 'bin', + 'bio' => 'bio', + 'bip' => 'bip', + 'biq' => 'biq', + 'bir' => 'bir', + 'bi' => 'bi', + 'bis' => 'bi', + 'bit' => 'bit', + 'biu' => 'biu', + 'biv' => 'biv', + 'biw' => 'biw', + 'bix' => 'bix', + 'biy' => 'biy', + 'biz' => 'biz', + 'bja' => 'bja', + 'bjb' => 'bjb', + 'bjc' => 'bjc', + 'bje' => 'bje', + 'bjf' => 'bjf', + 'bjg' => 'bjg', + 'bjh' => 'bjh', + 'bji' => 'bji', + 'bjj' => 'bjj', + 'bjk' => 'bjk', + 'bjl' => 'bjl', + 'bjm' => 'bjm', + 'bjn' => 'bjn', + 'bjo' => 'bjo', + 'bjp' => 'bjp', + 'bjr' => 'bjr', + 'bjs' => 'bjs', + 'bjt' => 'bjt', + 'bju' => 'bju', + 'bjv' => 'bjv', + 'bjw' => 'bjw', + 'bjx' => 'bjx', + 'bjy' => 'bjy', + 'bjz' => 'bjz', + 'bka' => 'bka', + 'bkc' => 'bkc', + 'bkd' => 'bkd', + 'bkf' => 'bkf', + 'bkg' => 'bkg', + 'bkh' => 'bkh', + 'bki' => 'bki', + 'bkj' => 'bkj', + 'bkk' => 'bkk', + 'bkl' => 'bkl', + 'bkm' => 'bkm', + 'bkn' => 'bkn', + 'bko' => 'bko', + 'bkp' => 'bkp', + 'bkq' => 'bkq', + 'bkr' => 'bkr', + 'bks' => 'bks', + 'bkt' => 'bkt', + 'bku' => 'bku', + 'bkv' => 'bkv', + 'bkw' => 'bkw', + 'bkx' => 'bkx', + 'bky' => 'bky', + 'bkz' => 'bkz', + 'bla' => 'bla', + 'blb' => 'blb', + 'blc' => 'blc', + 'bld' => 'bld', + 'ble' => 'ble', + 'blf' => 'blf', + 'blg' => 'blg', + 'blh' => 'blh', + 'bli' => 'bli', + 'blj' => 'blj', + 'blk' => 'blk', + 'bll' => 'bll', + 'blm' => 'blm', + 'bln' => 'bln', + 'blo' => 'blo', + 'blp' => 'blp', + 'blq' => 'blq', + 'blr' => 'blr', + 'bls' => 'bls', + 'blt' => 'blt', + 'blv' => 'blv', + 'blw' => 'blw', + 'blx' => 'blx', + 'bly' => 'bly', + 'blz' => 'blz', + 'bma' => 'bma', + 'bmb' => 'bmb', + 'bmc' => 'bmc', + 'bmd' => 'bmd', + 'bme' => 'bme', + 'bmf' => 'bmf', + 'bmg' => 'bmg', + 'bmh' => 'bmh', + 'bmi' => 'bmi', + 'bmj' => 'bmj', + 'bmk' => 'bmk', + 'bml' => 'bml', + 'bmm' => 'bmm', + 'bmn' => 'bmn', + 'bmo' => 'bmo', + 'bmp' => 'bmp', + 'bmq' => 'bmq', + 'bmr' => 'bmr', + 'bms' => 'bms', + 'bmt' => 'bmt', + 'bmu' => 'bmu', + 'bmv' => 'bmv', + 'bmw' => 'bmw', + 'bmx' => 'bmx', + 'bmz' => 'bmz', + 'bna' => 'bna', + 'bnb' => 'bnb', + 'bnc' => 'bnc', + 'bnd' => 'bnd', + 'bne' => 'bne', + 'bnf' => 'bnf', + 'bng' => 'bng', + 'bni' => 'bni', + 'bnj' => 'bnj', + 'bnk' => 'bnk', + 'bnl' => 'bnl', + 'bnm' => 'bnm', + 'bnn' => 'bnn', + 'bno' => 'bno', + 'bnp' => 'bnp', + 'bnq' => 'bnq', + 'bnr' => 'bnr', + 'bns' => 'bns', + 'bnu' => 'bnu', + 'bnv' => 'bnv', + 'bnw' => 'bnw', + 'bnx' => 'bnx', + 'bny' => 'bny', + 'bnz' => 'bnz', + 'boa' => 'boa', + 'bob' => 'bob', + 'bo' => 'bo', + 'bod' => 'bo', + 'boe' => 'boe', + 'bof' => 'bof', + 'bog' => 'bog', + 'boh' => 'boh', + 'boi' => 'boi', + 'boj' => 'boj', + 'bok' => 'bok', + 'bol' => 'bol', + 'bom' => 'bom', + 'bon' => 'bon', + 'boo' => 'boo', + 'bop' => 'bop', + 'boq' => 'boq', + 'bor' => 'bor', + 'bs' => 'bs', + 'bos' => 'bs', + 'bot' => 'bot', + 'bou' => 'bou', + 'bov' => 'bov', + 'bow' => 'bow', + 'box' => 'box', + 'boy' => 'boy', + 'boz' => 'boz', + 'bpa' => 'bpa', + 'bpb' => 'bpb', + 'bpd' => 'bpd', + 'bpg' => 'bpg', + 'bph' => 'bph', + 'bpi' => 'bpi', + 'bpj' => 'bpj', + 'bpk' => 'bpk', + 'bpl' => 'bpl', + 'bpm' => 'bpm', + 'bpn' => 'bpn', + 'bpo' => 'bpo', + 'bpp' => 'bpp', + 'bpq' => 'bpq', + 'bpr' => 'bpr', + 'bps' => 'bps', + 'bpt' => 'bpt', + 'bpu' => 'bpu', + 'bpv' => 'bpv', + 'bpw' => 'bpw', + 'bpx' => 'bpx', + 'bpy' => 'bpy', + 'bpz' => 'bpz', + 'bqa' => 'bqa', + 'bqb' => 'bqb', + 'bqc' => 'bqc', + 'bqd' => 'bqd', + 'bqf' => 'bqf', + 'bqg' => 'bqg', + 'bqh' => 'bqh', + 'bqi' => 'bqi', + 'bqj' => 'bqj', + 'bqk' => 'bqk', + 'bql' => 'bql', + 'bqm' => 'bqm', + 'bqn' => 'bqn', + 'bqo' => 'bqo', + 'bqp' => 'bqp', + 'bqq' => 'bqq', + 'bqr' => 'bqr', + 'bqs' => 'bqs', + 'bqt' => 'bqt', + 'bqu' => 'bqu', + 'bqv' => 'bqv', + 'bqw' => 'bqw', + 'bqx' => 'bqx', + 'bqy' => 'bqy', + 'bqz' => 'bqz', + 'bra' => 'bra', + 'brb' => 'brb', + 'brc' => 'brc', + 'brd' => 'brd', + 'br' => 'br', + 'bre' => 'br', + 'brf' => 'brf', + 'brg' => 'brg', + 'brh' => 'brh', + 'bri' => 'bri', + 'brj' => 'brj', + 'brk' => 'brk', + 'brl' => 'brl', + 'brm' => 'brm', + 'brn' => 'brn', + 'bro' => 'bro', + 'brp' => 'brp', + 'brq' => 'brq', + 'brr' => 'brr', + 'brs' => 'brs', + 'brt' => 'brt', + 'bru' => 'bru', + 'brv' => 'brv', + 'brw' => 'brw', + 'brx' => 'brx', + 'bry' => 'bry', + 'brz' => 'brz', + 'bsa' => 'bsa', + 'bsb' => 'bsb', + 'bsc' => 'bsc', + 'bse' => 'bse', + 'bsf' => 'bsf', + 'bsg' => 'bsg', + 'bsh' => 'bsh', + 'bsi' => 'bsi', + 'bsj' => 'bsj', + 'bsk' => 'bsk', + 'bsl' => 'bsl', + 'bsm' => 'bsm', + 'bsn' => 'bsn', + 'bso' => 'bso', + 'bsp' => 'bsp', + 'bsq' => 'bsq', + 'bsr' => 'bsr', + 'bss' => 'bss', + 'bst' => 'bst', + 'bsu' => 'bsu', + 'bsv' => 'bsv', + 'bsw' => 'bsw', + 'bsx' => 'bsx', + 'bsy' => 'bsy', + 'bta' => 'bta', + 'btc' => 'btc', + 'btd' => 'btd', + 'bte' => 'bte', + 'btf' => 'btf', + 'btg' => 'btg', + 'bth' => 'bth', + 'bti' => 'bti', + 'btj' => 'btj', + 'btm' => 'btm', + 'btn' => 'btn', + 'bto' => 'bto', + 'btp' => 'btp', + 'btq' => 'btq', + 'btr' => 'btr', + 'bts' => 'bts', + 'btt' => 'btt', + 'btu' => 'btu', + 'btv' => 'btv', + 'btw' => 'btw', + 'btx' => 'btx', + 'bty' => 'bty', + 'btz' => 'btz', + 'bua' => 'bua', + 'bub' => 'bub', + 'buc' => 'buc', + 'bud' => 'bud', + 'bue' => 'bue', + 'buf' => 'buf', + 'bug' => 'bug', + 'buh' => 'buh', + 'bui' => 'bui', + 'buj' => 'buj', + 'buk' => 'buk', + 'bg' => 'bg', + 'bul' => 'bg', + 'bum' => 'bum', + 'bun' => 'bun', + 'buo' => 'buo', + 'bup' => 'bup', + 'buq' => 'buq', + 'bus' => 'bus', + 'but' => 'but', + 'buu' => 'buu', + 'buv' => 'buv', + 'buw' => 'buw', + 'bux' => 'bux', + 'buy' => 'buy', + 'buz' => 'buz', + 'bva' => 'bva', + 'bvb' => 'bvb', + 'bvc' => 'bvc', + 'bvd' => 'bvd', + 'bve' => 'bve', + 'bvf' => 'bvf', + 'bvg' => 'bvg', + 'bvh' => 'bvh', + 'bvi' => 'bvi', + 'bvj' => 'bvj', + 'bvk' => 'bvk', + 'bvl' => 'bvl', + 'bvm' => 'bvm', + 'bvn' => 'bvn', + 'bvo' => 'bvo', + 'bvp' => 'bvp', + 'bvq' => 'bvq', + 'bvr' => 'bvr', + 'bvt' => 'bvt', + 'bvu' => 'bvu', + 'bvv' => 'bvv', + 'bvw' => 'bvw', + 'bvx' => 'bvx', + 'bvy' => 'bvy', + 'bvz' => 'bvz', + 'bwa' => 'bwa', + 'bwb' => 'bwb', + 'bwc' => 'bwc', + 'bwd' => 'bwd', + 'bwe' => 'bwe', + 'bwf' => 'bwf', + 'bwg' => 'bwg', + 'bwh' => 'bwh', + 'bwi' => 'bwi', + 'bwj' => 'bwj', + 'bwk' => 'bwk', + 'bwl' => 'bwl', + 'bwm' => 'bwm', + 'bwn' => 'bwn', + 'bwo' => 'bwo', + 'bwp' => 'bwp', + 'bwq' => 'bwq', + 'bwr' => 'bwr', + 'bws' => 'bws', + 'bwt' => 'bwt', + 'bwu' => 'bwu', + 'bww' => 'bww', + 'bwx' => 'bwx', + 'bwy' => 'bwy', + 'bwz' => 'bwz', + 'bxa' => 'bxa', + 'bxb' => 'bxb', + 'bxc' => 'bxc', + 'bxd' => 'bxd', + 'bxe' => 'bxe', + 'bxf' => 'bxf', + 'bxg' => 'bxg', + 'bxh' => 'bxh', + 'bxi' => 'bxi', + 'bxj' => 'bxj', + 'bxk' => 'bxk', + 'bxl' => 'bxl', + 'bxm' => 'bxm', + 'bxn' => 'bxn', + 'bxo' => 'bxo', + 'bxp' => 'bxp', + 'bxq' => 'bxq', + 'bxr' => 'bxr', + 'bxs' => 'bxs', + 'bxu' => 'bxu', + 'bxv' => 'bxv', + 'bxw' => 'bxw', + 'bxz' => 'bxz', + 'bya' => 'bya', + 'byb' => 'byb', + 'byc' => 'byc', + 'byd' => 'byd', + 'bye' => 'bye', + 'byf' => 'byf', + 'byg' => 'byg', + 'byh' => 'byh', + 'byi' => 'byi', + 'byj' => 'byj', + 'byk' => 'byk', + 'byl' => 'byl', + 'bym' => 'bym', + 'byn' => 'byn', + 'byo' => 'byo', + 'byp' => 'byp', + 'byq' => 'byq', + 'byr' => 'byr', + 'bys' => 'bys', + 'byt' => 'byt', + 'byv' => 'byv', + 'byw' => 'byw', + 'byx' => 'byx', + 'byz' => 'byz', + 'bza' => 'bza', + 'bzb' => 'bzb', + 'bzc' => 'bzc', + 'bzd' => 'bzd', + 'bze' => 'bze', + 'bzf' => 'bzf', + 'bzg' => 'bzg', + 'bzh' => 'bzh', + 'bzi' => 'bzi', + 'bzj' => 'bzj', + 'bzk' => 'bzk', + 'bzl' => 'bzl', + 'bzm' => 'bzm', + 'bzn' => 'bzn', + 'bzo' => 'bzo', + 'bzp' => 'bzp', + 'bzq' => 'bzq', + 'bzr' => 'bzr', + 'bzs' => 'bzs', + 'bzt' => 'bzt', + 'bzu' => 'bzu', + 'bzv' => 'bzv', + 'bzw' => 'bzw', + 'bzx' => 'bzx', + 'bzy' => 'bzy', + 'bzz' => 'bzz', + 'caa' => 'caa', + 'cab' => 'cab', + 'cac' => 'cac', + 'cad' => 'cad', + 'cae' => 'cae', + 'caf' => 'caf', + 'cag' => 'cag', + 'cah' => 'cah', + 'caj' => 'caj', + 'cak' => 'cak', + 'cal' => 'cal', + 'cam' => 'cam', + 'can' => 'can', + 'cao' => 'cao', + 'cap' => 'cap', + 'caq' => 'caq', + 'car' => 'car', + 'cas' => 'cas', + 'ca' => 'ca', + 'cat' => 'ca', + 'cav' => 'cav', + 'caw' => 'caw', + 'cax' => 'cax', + 'cay' => 'cay', + 'caz' => 'caz', + 'cbb' => 'cbb', + 'cbc' => 'cbc', + 'cbd' => 'cbd', + 'cbg' => 'cbg', + 'cbi' => 'cbi', + 'cbj' => 'cbj', + 'cbk' => 'cbk', + 'cbl' => 'cbl', + 'cbn' => 'cbn', + 'cbo' => 'cbo', + 'cbq' => 'cbq', + 'cbr' => 'cbr', + 'cbs' => 'cbs', + 'cbt' => 'cbt', + 'cbu' => 'cbu', + 'cbv' => 'cbv', + 'cbw' => 'cbw', + 'cby' => 'cby', + 'cca' => 'cca', + 'ccc' => 'ccc', + 'ccd' => 'ccd', + 'cce' => 'cce', + 'ccg' => 'ccg', + 'cch' => 'cch', + 'ccj' => 'ccj', + 'ccl' => 'ccl', + 'ccm' => 'ccm', + 'cco' => 'cco', + 'ccp' => 'ccp', + 'ccr' => 'ccr', + 'cda' => 'cda', + 'cde' => 'cde', + 'cdf' => 'cdf', + 'cdg' => 'cdg', + 'cdh' => 'cdh', + 'cdi' => 'cdi', + 'cdj' => 'cdj', + 'cdm' => 'cdm', + 'cdn' => 'cdn', + 'cdo' => 'cdo', + 'cdr' => 'cdr', + 'cds' => 'cds', + 'cdy' => 'cdy', + 'cdz' => 'cdz', + 'cea' => 'cea', + 'ceb' => 'ceb', + 'ceg' => 'ceg', + 'cek' => 'cek', + 'cen' => 'cen', + 'cs' => 'cs', + 'ces' => 'cs', + 'cet' => 'cet', + 'cfa' => 'cfa', + 'cfd' => 'cfd', + 'cfg' => 'cfg', + 'cfm' => 'cfm', + 'cga' => 'cga', + 'cgc' => 'cgc', + 'cgg' => 'cgg', + 'cgk' => 'cgk', + 'ch' => 'ch', + 'cha' => 'ch', + 'chb' => 'chb', + 'chc' => 'chc', + 'chd' => 'chd', + 'ce' => 'ce', + 'che' => 'ce', + 'chf' => 'chf', + 'chg' => 'chg', + 'chh' => 'chh', + 'chj' => 'chj', + 'chk' => 'chk', + 'chl' => 'chl', + 'chm' => 'chm', + 'chn' => 'chn', + 'cho' => 'cho', + 'chp' => 'chp', + 'chq' => 'chq', + 'chr' => 'chr', + 'cht' => 'cht', + 'cu' => 'cu', + 'chu' => 'cu', + 'cv' => 'cv', + 'chv' => 'cv', + 'chw' => 'chw', + 'chx' => 'chx', + 'chy' => 'chy', + 'chz' => 'chz', + 'cia' => 'cia', + 'cib' => 'cib', + 'cic' => 'cic', + 'cid' => 'cid', + 'cie' => 'cie', + 'cih' => 'cih', + 'cik' => 'cik', + 'cim' => 'cim', + 'cin' => 'cin', + 'cip' => 'cip', + 'cir' => 'cir', + 'ciw' => 'ciw', + 'ciy' => 'ciy', + 'cja' => 'cja', + 'cje' => 'cje', + 'cjh' => 'cjh', + 'cji' => 'cji', + 'cjk' => 'cjk', + 'cjm' => 'cjm', + 'cjn' => 'cjn', + 'cjo' => 'cjo', + 'cjp' => 'cjp', + 'cjs' => 'cjs', + 'cjv' => 'cjv', + 'cjy' => 'cjy', + 'ckb' => 'ckb', + 'ckh' => 'ckh', + 'ckl' => 'ckl', + 'ckn' => 'ckn', + 'cko' => 'cko', + 'ckq' => 'ckq', + 'ckr' => 'ckr', + 'cks' => 'cks', + 'ckt' => 'ckt', + 'cku' => 'cku', + 'ckv' => 'ckv', + 'ckx' => 'ckx', + 'cky' => 'cky', + 'ckz' => 'ckz', + 'cla' => 'cla', + 'clc' => 'clc', + 'cld' => 'cld', + 'cle' => 'cle', + 'clh' => 'clh', + 'cli' => 'cli', + 'clj' => 'clj', + 'clk' => 'clk', + 'cll' => 'cll', + 'clm' => 'clm', + 'clo' => 'clo', + 'clt' => 'clt', + 'clu' => 'clu', + 'clw' => 'clw', + 'cly' => 'cly', + 'cma' => 'cma', + 'cme' => 'cme', + 'cmg' => 'cmg', + 'cmi' => 'cmi', + 'cml' => 'cml', + 'cmm' => 'cmm', + 'cmn' => 'cmn', + 'cmo' => 'cmo', + 'cmr' => 'cmr', + 'cms' => 'cms', + 'cmt' => 'cmt', + 'cna' => 'cna', + 'cnb' => 'cnb', + 'cnc' => 'cnc', + 'cng' => 'cng', + 'cnh' => 'cnh', + 'cni' => 'cni', + 'cnk' => 'cnk', + 'cnl' => 'cnl', + 'cno' => 'cno', + 'cnr' => 'cnr', + 'cns' => 'cns', + 'cnt' => 'cnt', + 'cnu' => 'cnu', + 'cnw' => 'cnw', + 'cnx' => 'cnx', + 'coa' => 'coa', + 'cob' => 'cob', + 'coc' => 'coc', + 'cod' => 'cod', + 'coe' => 'coe', + 'cof' => 'cof', + 'cog' => 'cog', + 'coh' => 'coh', + 'coj' => 'coj', + 'cok' => 'cok', + 'col' => 'col', + 'com' => 'com', + 'con' => 'con', + 'coo' => 'coo', + 'cop' => 'cop', + 'coq' => 'coq', + 'kw' => 'kw', + 'cor' => 'kw', + 'co' => 'co', + 'cos' => 'co', + 'cot' => 'cot', + 'cou' => 'cou', + 'cov' => 'cov', + 'cow' => 'cow', + 'cox' => 'cox', + 'coz' => 'coz', + 'cpa' => 'cpa', + 'cpb' => 'cpb', + 'cpc' => 'cpc', + 'cpg' => 'cpg', + 'cpi' => 'cpi', + 'cpn' => 'cpn', + 'cpo' => 'cpo', + 'cps' => 'cps', + 'cpu' => 'cpu', + 'cpx' => 'cpx', + 'cpy' => 'cpy', + 'cqd' => 'cqd', + 'cra' => 'cra', + 'crb' => 'crb', + 'crc' => 'crc', + 'crd' => 'crd', + 'cr' => 'cr', + 'cre' => 'cr', + 'crf' => 'crf', + 'crg' => 'crg', + 'crh' => 'crh', + 'cri' => 'cri', + 'crj' => 'crj', + 'crk' => 'crk', + 'crl' => 'crl', + 'crm' => 'crm', + 'crn' => 'crn', + 'cro' => 'cro', + 'crq' => 'crq', + 'crr' => 'crr', + 'crs' => 'crs', + 'crt' => 'crt', + 'crv' => 'crv', + 'crw' => 'crw', + 'crx' => 'crx', + 'cry' => 'cry', + 'crz' => 'crz', + 'csa' => 'csa', + 'csb' => 'csb', + 'csc' => 'csc', + 'csd' => 'csd', + 'cse' => 'cse', + 'csf' => 'csf', + 'csg' => 'csg', + 'csh' => 'csh', + 'csi' => 'csi', + 'csj' => 'csj', + 'csk' => 'csk', + 'csl' => 'csl', + 'csm' => 'csm', + 'csn' => 'csn', + 'cso' => 'cso', + 'csq' => 'csq', + 'csr' => 'csr', + 'css' => 'css', + 'cst' => 'cst', + 'csv' => 'csv', + 'csw' => 'csw', + 'csy' => 'csy', + 'csz' => 'csz', + 'cta' => 'cta', + 'ctc' => 'ctc', + 'ctd' => 'ctd', + 'cte' => 'cte', + 'ctg' => 'ctg', + 'cth' => 'cth', + 'ctl' => 'ctl', + 'ctm' => 'ctm', + 'ctn' => 'ctn', + 'cto' => 'cto', + 'ctp' => 'ctp', + 'cts' => 'cts', + 'ctt' => 'ctt', + 'ctu' => 'ctu', + 'ctz' => 'ctz', + 'cua' => 'cua', + 'cub' => 'cub', + 'cuc' => 'cuc', + 'cug' => 'cug', + 'cuh' => 'cuh', + 'cui' => 'cui', + 'cuj' => 'cuj', + 'cuk' => 'cuk', + 'cul' => 'cul', + 'cuo' => 'cuo', + 'cup' => 'cup', + 'cuq' => 'cuq', + 'cur' => 'cur', + 'cut' => 'cut', + 'cuu' => 'cuu', + 'cuv' => 'cuv', + 'cuw' => 'cuw', + 'cux' => 'cux', + 'cuy' => 'cuy', + 'cvg' => 'cvg', + 'cvn' => 'cvn', + 'cwa' => 'cwa', + 'cwb' => 'cwb', + 'cwd' => 'cwd', + 'cwe' => 'cwe', + 'cwg' => 'cwg', + 'cwt' => 'cwt', + 'cya' => 'cya', + 'cyb' => 'cyb', + 'cy' => 'cy', + 'cym' => 'cy', + 'cyo' => 'cyo', + 'czh' => 'czh', + 'czk' => 'czk', + 'czn' => 'czn', + 'czo' => 'czo', + 'czt' => 'czt', + 'daa' => 'daa', + 'dac' => 'dac', + 'dad' => 'dad', + 'dae' => 'dae', + 'dag' => 'dag', + 'dah' => 'dah', + 'dai' => 'dai', + 'daj' => 'daj', + 'dak' => 'dak', + 'dal' => 'dal', + 'dam' => 'dam', + 'da' => 'da', + 'dan' => 'da', + 'dao' => 'dao', + 'daq' => 'daq', + 'dar' => 'dar', + 'das' => 'das', + 'dau' => 'dau', + 'dav' => 'dav', + 'daw' => 'daw', + 'dax' => 'dax', + 'daz' => 'daz', + 'dba' => 'dba', + 'dbb' => 'dbb', + 'dbd' => 'dbd', + 'dbe' => 'dbe', + 'dbf' => 'dbf', + 'dbg' => 'dbg', + 'dbi' => 'dbi', + 'dbj' => 'dbj', + 'dbl' => 'dbl', + 'dbm' => 'dbm', + 'dbn' => 'dbn', + 'dbo' => 'dbo', + 'dbp' => 'dbp', + 'dbq' => 'dbq', + 'dbr' => 'dbr', + 'dbt' => 'dbt', + 'dbu' => 'dbu', + 'dbv' => 'dbv', + 'dbw' => 'dbw', + 'dby' => 'dby', + 'dcc' => 'dcc', + 'dcr' => 'dcr', + 'dda' => 'dda', + 'ddd' => 'ddd', + 'dde' => 'dde', + 'ddg' => 'ddg', + 'ddi' => 'ddi', + 'ddj' => 'ddj', + 'ddn' => 'ddn', + 'ddo' => 'ddo', + 'ddr' => 'ddr', + 'dds' => 'dds', + 'ddw' => 'ddw', + 'dec' => 'dec', + 'ded' => 'ded', + 'dee' => 'dee', + 'def' => 'def', + 'deg' => 'deg', + 'deh' => 'deh', + 'dei' => 'dei', + 'dek' => 'dek', + 'del' => 'del', + 'dem' => 'dem', + 'den' => 'den', + 'dep' => 'dep', + 'deq' => 'deq', + 'der' => 'der', + 'des' => 'des', + 'de' => 'de', + 'deu' => 'de', + 'dev' => 'dev', + 'dez' => 'dez', + 'dga' => 'dga', + 'dgb' => 'dgb', + 'dgc' => 'dgc', + 'dgd' => 'dgd', + 'dge' => 'dge', + 'dgg' => 'dgg', + 'dgh' => 'dgh', + 'dgi' => 'dgi', + 'dgk' => 'dgk', + 'dgl' => 'dgl', + 'dgn' => 'dgn', + 'dgo' => 'dgo', + 'dgr' => 'dgr', + 'dgs' => 'dgs', + 'dgt' => 'dgt', + 'dgu' => 'dgu', + 'dgw' => 'dgw', + 'dgx' => 'dgx', + 'dgz' => 'dgz', + 'dhd' => 'dhd', + 'dhg' => 'dhg', + 'dhi' => 'dhi', + 'dhl' => 'dhl', + 'dhm' => 'dhm', + 'dhn' => 'dhn', + 'dho' => 'dho', + 'dhr' => 'dhr', + 'dhs' => 'dhs', + 'dhu' => 'dhu', + 'dhv' => 'dhv', + 'dhw' => 'dhw', + 'dhx' => 'dhx', + 'dia' => 'dia', + 'dib' => 'dib', + 'dic' => 'dic', + 'did' => 'did', + 'dif' => 'dif', + 'dig' => 'dig', + 'dih' => 'dih', + 'dii' => 'dii', + 'dij' => 'dij', + 'dik' => 'dik', + 'dil' => 'dil', + 'dim' => 'dim', + 'din' => 'din', + 'dio' => 'dio', + 'dip' => 'dip', + 'diq' => 'diq', + 'dir' => 'dir', + 'dis' => 'dis', + 'dit' => 'dit', + 'diu' => 'diu', + 'dv' => 'dv', + 'div' => 'dv', + 'diw' => 'diw', + 'dix' => 'dix', + 'diy' => 'diy', + 'diz' => 'diz', + 'dja' => 'dja', + 'djb' => 'djb', + 'djc' => 'djc', + 'djd' => 'djd', + 'dje' => 'dje', + 'djf' => 'djf', + 'dji' => 'dji', + 'djj' => 'djj', + 'djk' => 'djk', + 'djm' => 'djm', + 'djn' => 'djn', + 'djo' => 'djo', + 'djr' => 'djr', + 'dju' => 'dju', + 'djw' => 'djw', + 'dka' => 'dka', + 'dkk' => 'dkk', + 'dkr' => 'dkr', + 'dks' => 'dks', + 'dkx' => 'dkx', + 'dlg' => 'dlg', + 'dlk' => 'dlk', + 'dlm' => 'dlm', + 'dln' => 'dln', + 'dma' => 'dma', + 'dmb' => 'dmb', + 'dmc' => 'dmc', + 'dmd' => 'dmd', + 'dme' => 'dme', + 'dmg' => 'dmg', + 'dmk' => 'dmk', + 'dml' => 'dml', + 'dmm' => 'dmm', + 'dmo' => 'dmo', + 'dmr' => 'dmr', + 'dms' => 'dms', + 'dmu' => 'dmu', + 'dmv' => 'dmv', + 'dmw' => 'dmw', + 'dmx' => 'dmx', + 'dmy' => 'dmy', + 'dna' => 'dna', + 'dnd' => 'dnd', + 'dne' => 'dne', + 'dng' => 'dng', + 'dni' => 'dni', + 'dnj' => 'dnj', + 'dnk' => 'dnk', + 'dnn' => 'dnn', + 'dno' => 'dno', + 'dnr' => 'dnr', + 'dnt' => 'dnt', + 'dnu' => 'dnu', + 'dnv' => 'dnv', + 'dnw' => 'dnw', + 'dny' => 'dny', + 'doa' => 'doa', + 'dob' => 'dob', + 'doc' => 'doc', + 'doe' => 'doe', + 'dof' => 'dof', + 'doh' => 'doh', + 'doi' => 'doi', + 'dok' => 'dok', + 'dol' => 'dol', + 'don' => 'don', + 'doo' => 'doo', + 'dop' => 'dop', + 'doq' => 'doq', + 'dor' => 'dor', + 'dos' => 'dos', + 'dot' => 'dot', + 'dov' => 'dov', + 'dow' => 'dow', + 'dox' => 'dox', + 'doy' => 'doy', + 'doz' => 'doz', + 'dpp' => 'dpp', + 'drb' => 'drb', + 'drc' => 'drc', + 'drd' => 'drd', + 'dre' => 'dre', + 'drg' => 'drg', + 'dri' => 'dri', + 'drl' => 'drl', + 'drn' => 'drn', + 'dro' => 'dro', + 'drq' => 'drq', + 'drr' => 'drr', + 'drs' => 'drs', + 'drt' => 'drt', + 'dru' => 'dru', + 'dry' => 'dry', + 'dsb' => 'dsb', + 'dse' => 'dse', + 'dsh' => 'dsh', + 'dsi' => 'dsi', + 'dsl' => 'dsl', + 'dsn' => 'dsn', + 'dso' => 'dso', + 'dsq' => 'dsq', + 'dta' => 'dta', + 'dtb' => 'dtb', + 'dtd' => 'dtd', + 'dth' => 'dth', + 'dti' => 'dti', + 'dtk' => 'dtk', + 'dtm' => 'dtm', + 'dtn' => 'dtn', + 'dto' => 'dto', + 'dtp' => 'dtp', + 'dtr' => 'dtr', + 'dts' => 'dts', + 'dtt' => 'dtt', + 'dtu' => 'dtu', + 'dty' => 'dty', + 'dua' => 'dua', + 'dub' => 'dub', + 'duc' => 'duc', + 'dud' => 'dud', + 'due' => 'due', + 'duf' => 'duf', + 'dug' => 'dug', + 'duh' => 'duh', + 'dui' => 'dui', + 'duk' => 'duk', + 'dul' => 'dul', + 'dum' => 'dum', + 'dun' => 'dun', + 'duo' => 'duo', + 'dup' => 'dup', + 'duq' => 'duq', + 'dur' => 'dur', + 'dus' => 'dus', + 'duu' => 'duu', + 'duv' => 'duv', + 'duw' => 'duw', + 'dux' => 'dux', + 'duy' => 'duy', + 'duz' => 'duz', + 'dva' => 'dva', + 'dwa' => 'dwa', + 'dwr' => 'dwr', + 'dws' => 'dws', + 'dwu' => 'dwu', + 'dww' => 'dww', + 'dwy' => 'dwy', + 'dwz' => 'dwz', + 'dya' => 'dya', + 'dyb' => 'dyb', + 'dyd' => 'dyd', + 'dyg' => 'dyg', + 'dyi' => 'dyi', + 'dym' => 'dym', + 'dyn' => 'dyn', + 'dyo' => 'dyo', + 'dyu' => 'dyu', + 'dyy' => 'dyy', + 'dza' => 'dza', + 'dze' => 'dze', + 'dzg' => 'dzg', + 'dzl' => 'dzl', + 'dzn' => 'dzn', + 'dz' => 'dz', + 'dzo' => 'dz', + 'eaa' => 'eaa', + 'ebg' => 'ebg', + 'ebk' => 'ebk', + 'ebo' => 'ebo', + 'ebr' => 'ebr', + 'ebu' => 'ebu', + 'ecr' => 'ecr', + 'ecs' => 'ecs', + 'ecy' => 'ecy', + 'eee' => 'eee', + 'efa' => 'efa', + 'efe' => 'efe', + 'efi' => 'efi', + 'ega' => 'ega', + 'egl' => 'egl', + 'ego' => 'ego', + 'egy' => 'egy', + 'ehu' => 'ehu', + 'eip' => 'eip', + 'eit' => 'eit', + 'eiv' => 'eiv', + 'eja' => 'eja', + 'eka' => 'eka', + 'ekc' => 'ekc', + 'eke' => 'eke', + 'ekg' => 'ekg', + 'eki' => 'eki', + 'ekk' => 'ekk', + 'ekl' => 'ekl', + 'ekm' => 'ekm', + 'eko' => 'eko', + 'ekp' => 'ekp', + 'ekr' => 'ekr', + 'eky' => 'eky', + 'ele' => 'ele', + 'elh' => 'elh', + 'eli' => 'eli', + 'elk' => 'elk', + 'el' => 'el', + 'ell' => 'el', + 'elm' => 'elm', + 'elo' => 'elo', + 'elu' => 'elu', + 'elx' => 'elx', + 'ema' => 'ema', + 'emb' => 'emb', + 'eme' => 'eme', + 'emg' => 'emg', + 'emi' => 'emi', + 'emk' => 'emk', + 'emm' => 'emm', + 'emn' => 'emn', + 'emp' => 'emp', + 'ems' => 'ems', + 'emu' => 'emu', + 'emw' => 'emw', + 'emx' => 'emx', + 'emy' => 'emy', + 'ena' => 'ena', + 'enb' => 'enb', + 'enc' => 'enc', + 'end' => 'end', + 'enf' => 'enf', + 'en' => 'en', + 'eng' => 'en', + 'enh' => 'enh', + 'enl' => 'enl', + 'enm' => 'enm', + 'enn' => 'enn', + 'eno' => 'eno', + 'enq' => 'enq', + 'enr' => 'enr', + 'enu' => 'enu', + 'env' => 'env', + 'enw' => 'enw', + 'enx' => 'enx', + 'eot' => 'eot', + 'epi' => 'epi', + 'eo' => 'eo', + 'epo' => 'eo', + 'era' => 'era', + 'erg' => 'erg', + 'erh' => 'erh', + 'eri' => 'eri', + 'erk' => 'erk', + 'ero' => 'ero', + 'err' => 'err', + 'ers' => 'ers', + 'ert' => 'ert', + 'erw' => 'erw', + 'ese' => 'ese', + 'esg' => 'esg', + 'esh' => 'esh', + 'esi' => 'esi', + 'esk' => 'esk', + 'esl' => 'esl', + 'esm' => 'esm', + 'esn' => 'esn', + 'eso' => 'eso', + 'esq' => 'esq', + 'ess' => 'ess', + 'et' => 'et', + 'est' => 'et', + 'esu' => 'esu', + 'esy' => 'esy', + 'etb' => 'etb', + 'etc' => 'etc', + 'eth' => 'eth', + 'etn' => 'etn', + 'eto' => 'eto', + 'etr' => 'etr', + 'ets' => 'ets', + 'ett' => 'ett', + 'etu' => 'etu', + 'etx' => 'etx', + 'etz' => 'etz', + 'eu' => 'eu', + 'eus' => 'eu', + 'eve' => 'eve', + 'evh' => 'evh', + 'evn' => 'evn', + 'ee' => 'ee', + 'ewe' => 'ee', + 'ewo' => 'ewo', + 'ext' => 'ext', + 'eya' => 'eya', + 'eyo' => 'eyo', + 'eza' => 'eza', + 'eze' => 'eze', + 'faa' => 'faa', + 'fab' => 'fab', + 'fad' => 'fad', + 'faf' => 'faf', + 'fag' => 'fag', + 'fah' => 'fah', + 'fai' => 'fai', + 'faj' => 'faj', + 'fak' => 'fak', + 'fal' => 'fal', + 'fam' => 'fam', + 'fan' => 'fan', + 'fo' => 'fo', + 'fao' => 'fo', + 'fap' => 'fap', + 'far' => 'far', + 'fa' => 'fa', + 'fas' => 'fa', + 'fat' => 'fat', + 'fau' => 'fau', + 'fax' => 'fax', + 'fay' => 'fay', + 'faz' => 'faz', + 'fbl' => 'fbl', + 'fcs' => 'fcs', + 'fer' => 'fer', + 'ffi' => 'ffi', + 'ffm' => 'ffm', + 'fgr' => 'fgr', + 'fia' => 'fia', + 'fie' => 'fie', + 'fj' => 'fj', + 'fij' => 'fj', + 'fil' => 'fil', + 'fi' => 'fi', + 'fin' => 'fi', + 'fip' => 'fip', + 'fir' => 'fir', + 'fit' => 'fit', + 'fiw' => 'fiw', + 'fkk' => 'fkk', + 'fkv' => 'fkv', + 'fla' => 'fla', + 'flh' => 'flh', + 'fli' => 'fli', + 'fll' => 'fll', + 'fln' => 'fln', + 'flr' => 'flr', + 'fly' => 'fly', + 'fmp' => 'fmp', + 'fmu' => 'fmu', + 'fnb' => 'fnb', + 'fng' => 'fng', + 'fni' => 'fni', + 'fod' => 'fod', + 'foi' => 'foi', + 'fom' => 'fom', + 'fon' => 'fon', + 'for' => 'for', + 'fos' => 'fos', + 'fpe' => 'fpe', + 'fqs' => 'fqs', + 'fr' => 'fr', + 'fra' => 'fr', + 'frc' => 'frc', + 'frd' => 'frd', + 'frk' => 'frk', + 'frm' => 'frm', + 'fro' => 'fro', + 'frp' => 'frp', + 'frq' => 'frq', + 'frr' => 'frr', + 'frs' => 'frs', + 'frt' => 'frt', + 'fy' => 'fy', + 'fry' => 'fy', + 'fse' => 'fse', + 'fsl' => 'fsl', + 'fss' => 'fss', + 'fub' => 'fub', + 'fuc' => 'fuc', + 'fud' => 'fud', + 'fue' => 'fue', + 'fuf' => 'fuf', + 'fuh' => 'fuh', + 'fui' => 'fui', + 'fuj' => 'fuj', + 'ff' => 'ff', + 'ful' => 'ff', + 'fum' => 'fum', + 'fun' => 'fun', + 'fuq' => 'fuq', + 'fur' => 'fur', + 'fut' => 'fut', + 'fuu' => 'fuu', + 'fuv' => 'fuv', + 'fuy' => 'fuy', + 'fvr' => 'fvr', + 'fwa' => 'fwa', + 'fwe' => 'fwe', + 'gaa' => 'gaa', + 'gab' => 'gab', + 'gac' => 'gac', + 'gad' => 'gad', + 'gae' => 'gae', + 'gaf' => 'gaf', + 'gag' => 'gag', + 'gah' => 'gah', + 'gai' => 'gai', + 'gaj' => 'gaj', + 'gak' => 'gak', + 'gal' => 'gal', + 'gam' => 'gam', + 'gan' => 'gan', + 'gao' => 'gao', + 'gap' => 'gap', + 'gaq' => 'gaq', + 'gar' => 'gar', + 'gas' => 'gas', + 'gat' => 'gat', + 'gau' => 'gau', + 'gaw' => 'gaw', + 'gax' => 'gax', + 'gay' => 'gay', + 'gaz' => 'gaz', + 'gba' => 'gba', + 'gbb' => 'gbb', + 'gbd' => 'gbd', + 'gbe' => 'gbe', + 'gbf' => 'gbf', + 'gbg' => 'gbg', + 'gbh' => 'gbh', + 'gbi' => 'gbi', + 'gbj' => 'gbj', + 'gbk' => 'gbk', + 'gbl' => 'gbl', + 'gbm' => 'gbm', + 'gbn' => 'gbn', + 'gbo' => 'gbo', + 'gbp' => 'gbp', + 'gbq' => 'gbq', + 'gbr' => 'gbr', + 'gbs' => 'gbs', + 'gbu' => 'gbu', + 'gbv' => 'gbv', + 'gbw' => 'gbw', + 'gbx' => 'gbx', + 'gby' => 'gby', + 'gbz' => 'gbz', + 'gcc' => 'gcc', + 'gcd' => 'gcd', + 'gce' => 'gce', + 'gcf' => 'gcf', + 'gcl' => 'gcl', + 'gcn' => 'gcn', + 'gcr' => 'gcr', + 'gct' => 'gct', + 'gda' => 'gda', + 'gdb' => 'gdb', + 'gdc' => 'gdc', + 'gdd' => 'gdd', + 'gde' => 'gde', + 'gdf' => 'gdf', + 'gdg' => 'gdg', + 'gdh' => 'gdh', + 'gdi' => 'gdi', + 'gdj' => 'gdj', + 'gdk' => 'gdk', + 'gdl' => 'gdl', + 'gdm' => 'gdm', + 'gdn' => 'gdn', + 'gdo' => 'gdo', + 'gdq' => 'gdq', + 'gdr' => 'gdr', + 'gds' => 'gds', + 'gdt' => 'gdt', + 'gdu' => 'gdu', + 'gdx' => 'gdx', + 'gea' => 'gea', + 'geb' => 'geb', + 'gec' => 'gec', + 'ged' => 'ged', + 'geg' => 'geg', + 'geh' => 'geh', + 'gei' => 'gei', + 'gej' => 'gej', + 'gek' => 'gek', + 'gel' => 'gel', + 'geq' => 'geq', + 'ges' => 'ges', + 'gev' => 'gev', + 'gew' => 'gew', + 'gex' => 'gex', + 'gey' => 'gey', + 'gez' => 'gez', + 'gfk' => 'gfk', + 'gft' => 'gft', + 'gga' => 'gga', + 'ggb' => 'ggb', + 'ggd' => 'ggd', + 'gge' => 'gge', + 'ggg' => 'ggg', + 'ggk' => 'ggk', + 'ggl' => 'ggl', + 'ggt' => 'ggt', + 'ggu' => 'ggu', + 'ggw' => 'ggw', + 'gha' => 'gha', + 'ghc' => 'ghc', + 'ghe' => 'ghe', + 'ghh' => 'ghh', + 'ghk' => 'ghk', + 'ghl' => 'ghl', + 'ghn' => 'ghn', + 'gho' => 'gho', + 'ghr' => 'ghr', + 'ghs' => 'ghs', + 'ght' => 'ght', + 'gia' => 'gia', + 'gib' => 'gib', + 'gic' => 'gic', + 'gid' => 'gid', + 'gie' => 'gie', + 'gig' => 'gig', + 'gih' => 'gih', + 'gil' => 'gil', + 'gim' => 'gim', + 'gin' => 'gin', + 'gip' => 'gip', + 'giq' => 'giq', + 'gir' => 'gir', + 'gis' => 'gis', + 'git' => 'git', + 'giu' => 'giu', + 'giw' => 'giw', + 'gix' => 'gix', + 'giy' => 'giy', + 'giz' => 'giz', + 'gji' => 'gji', + 'gjk' => 'gjk', + 'gjm' => 'gjm', + 'gjn' => 'gjn', + 'gjr' => 'gjr', + 'gju' => 'gju', + 'gka' => 'gka', + 'gkd' => 'gkd', + 'gke' => 'gke', + 'gkn' => 'gkn', + 'gko' => 'gko', + 'gkp' => 'gkp', + 'gku' => 'gku', + 'gd' => 'gd', + 'gla' => 'gd', + 'glc' => 'glc', + 'gld' => 'gld', + 'ga' => 'ga', + 'gle' => 'ga', + 'gl' => 'gl', + 'glg' => 'gl', + 'glh' => 'glh', + 'gli' => 'gli', + 'glj' => 'glj', + 'glk' => 'glk', + 'gll' => 'gll', + 'glo' => 'glo', + 'glr' => 'glr', + 'glu' => 'glu', + 'gv' => 'gv', + 'glv' => 'gv', + 'glw' => 'glw', + 'gly' => 'gly', + 'gma' => 'gma', + 'gmb' => 'gmb', + 'gmd' => 'gmd', + 'gmg' => 'gmg', + 'gmh' => 'gmh', + 'gml' => 'gml', + 'gmm' => 'gmm', + 'gmn' => 'gmn', + 'gmu' => 'gmu', + 'gmv' => 'gmv', + 'gmx' => 'gmx', + 'gmy' => 'gmy', + 'gmz' => 'gmz', + 'gna' => 'gna', + 'gnb' => 'gnb', + 'gnc' => 'gnc', + 'gnd' => 'gnd', + 'gne' => 'gne', + 'gng' => 'gng', + 'gnh' => 'gnh', + 'gni' => 'gni', + 'gnj' => 'gnj', + 'gnk' => 'gnk', + 'gnl' => 'gnl', + 'gnm' => 'gnm', + 'gnn' => 'gnn', + 'gno' => 'gno', + 'gnq' => 'gnq', + 'gnr' => 'gnr', + 'gnt' => 'gnt', + 'gnu' => 'gnu', + 'gnw' => 'gnw', + 'gnz' => 'gnz', + 'goa' => 'goa', + 'gob' => 'gob', + 'goc' => 'goc', + 'god' => 'god', + 'goe' => 'goe', + 'gof' => 'gof', + 'gog' => 'gog', + 'goh' => 'goh', + 'goi' => 'goi', + 'goj' => 'goj', + 'gok' => 'gok', + 'gol' => 'gol', + 'gom' => 'gom', + 'gon' => 'gon', + 'goo' => 'goo', + 'gop' => 'gop', + 'goq' => 'goq', + 'gor' => 'gor', + 'gos' => 'gos', + 'got' => 'got', + 'gou' => 'gou', + 'gow' => 'gow', + 'gox' => 'gox', + 'goy' => 'goy', + 'goz' => 'goz', + 'gpa' => 'gpa', + 'gpe' => 'gpe', + 'gpn' => 'gpn', + 'gqa' => 'gqa', + 'gqi' => 'gqi', + 'gqn' => 'gqn', + 'gqr' => 'gqr', + 'gqu' => 'gqu', + 'gra' => 'gra', + 'grb' => 'grb', + 'grc' => 'grc', + 'grd' => 'grd', + 'grg' => 'grg', + 'grh' => 'grh', + 'gri' => 'gri', + 'grj' => 'grj', + 'grm' => 'grm', + 'gn' => 'gn', + 'grn' => 'gn', + 'gro' => 'gro', + 'grq' => 'grq', + 'grr' => 'grr', + 'grs' => 'grs', + 'grt' => 'grt', + 'gru' => 'gru', + 'grv' => 'grv', + 'grw' => 'grw', + 'grx' => 'grx', + 'gry' => 'gry', + 'grz' => 'grz', + 'gse' => 'gse', + 'gsg' => 'gsg', + 'gsl' => 'gsl', + 'gsm' => 'gsm', + 'gsn' => 'gsn', + 'gso' => 'gso', + 'gsp' => 'gsp', + 'gss' => 'gss', + 'gsw' => 'gsw', + 'gta' => 'gta', + 'gtu' => 'gtu', + 'gua' => 'gua', + 'gub' => 'gub', + 'guc' => 'guc', + 'gud' => 'gud', + 'gue' => 'gue', + 'guf' => 'guf', + 'gug' => 'gug', + 'guh' => 'guh', + 'gui' => 'gui', + 'gu' => 'gu', + 'guj' => 'gu', + 'guk' => 'guk', + 'gul' => 'gul', + 'gum' => 'gum', + 'gun' => 'gun', + 'guo' => 'guo', + 'gup' => 'gup', + 'guq' => 'guq', + 'gur' => 'gur', + 'gus' => 'gus', + 'gut' => 'gut', + 'guu' => 'guu', + 'guw' => 'guw', + 'gux' => 'gux', + 'guz' => 'guz', + 'gva' => 'gva', + 'gvc' => 'gvc', + 'gve' => 'gve', + 'gvf' => 'gvf', + 'gvj' => 'gvj', + 'gvl' => 'gvl', + 'gvm' => 'gvm', + 'gvn' => 'gvn', + 'gvo' => 'gvo', + 'gvp' => 'gvp', + 'gvr' => 'gvr', + 'gvs' => 'gvs', + 'gvy' => 'gvy', + 'gwa' => 'gwa', + 'gwb' => 'gwb', + 'gwc' => 'gwc', + 'gwd' => 'gwd', + 'gwe' => 'gwe', + 'gwf' => 'gwf', + 'gwg' => 'gwg', + 'gwi' => 'gwi', + 'gwj' => 'gwj', + 'gwm' => 'gwm', + 'gwn' => 'gwn', + 'gwr' => 'gwr', + 'gwt' => 'gwt', + 'gwu' => 'gwu', + 'gww' => 'gww', + 'gwx' => 'gwx', + 'gxx' => 'gxx', + 'gya' => 'gya', + 'gyb' => 'gyb', + 'gyd' => 'gyd', + 'gye' => 'gye', + 'gyf' => 'gyf', + 'gyg' => 'gyg', + 'gyi' => 'gyi', + 'gyl' => 'gyl', + 'gym' => 'gym', + 'gyn' => 'gyn', + 'gyo' => 'gyo', + 'gyr' => 'gyr', + 'gyy' => 'gyy', + 'gza' => 'gza', + 'gzi' => 'gzi', + 'gzn' => 'gzn', + 'haa' => 'haa', + 'hab' => 'hab', + 'hac' => 'hac', + 'had' => 'had', + 'hae' => 'hae', + 'haf' => 'haf', + 'hag' => 'hag', + 'hah' => 'hah', + 'hai' => 'hai', + 'haj' => 'haj', + 'hak' => 'hak', + 'hal' => 'hal', + 'ham' => 'ham', + 'han' => 'han', + 'hao' => 'hao', + 'hap' => 'hap', + 'haq' => 'haq', + 'har' => 'har', + 'has' => 'has', + 'ht' => 'ht', + 'hat' => 'ht', + 'ha' => 'ha', + 'hau' => 'ha', + 'hav' => 'hav', + 'haw' => 'haw', + 'hax' => 'hax', + 'hay' => 'hay', + 'haz' => 'haz', + 'hba' => 'hba', + 'hbb' => 'hbb', + 'hbn' => 'hbn', + 'hbo' => 'hbo', + 'sh' => 'sh', + 'hbs' => 'sh', + 'hbu' => 'hbu', + 'hca' => 'hca', + 'hch' => 'hch', + 'hdn' => 'hdn', + 'hds' => 'hds', + 'hdy' => 'hdy', + 'hea' => 'hea', + 'he' => 'he', + 'heb' => 'he', + 'hed' => 'hed', + 'heg' => 'heg', + 'heh' => 'heh', + 'hei' => 'hei', + 'hem' => 'hem', + 'hz' => 'hz', + 'her' => 'hz', + 'hgm' => 'hgm', + 'hgw' => 'hgw', + 'hhi' => 'hhi', + 'hhr' => 'hhr', + 'hhy' => 'hhy', + 'hia' => 'hia', + 'hib' => 'hib', + 'hid' => 'hid', + 'hif' => 'hif', + 'hig' => 'hig', + 'hih' => 'hih', + 'hii' => 'hii', + 'hij' => 'hij', + 'hik' => 'hik', + 'hil' => 'hil', + 'hi' => 'hi', + 'hin' => 'hi', + 'hio' => 'hio', + 'hir' => 'hir', + 'hit' => 'hit', + 'hiw' => 'hiw', + 'hix' => 'hix', + 'hji' => 'hji', + 'hka' => 'hka', + 'hke' => 'hke', + 'hkk' => 'hkk', + 'hkn' => 'hkn', + 'hks' => 'hks', + 'hla' => 'hla', + 'hlb' => 'hlb', + 'hld' => 'hld', + 'hle' => 'hle', + 'hlt' => 'hlt', + 'hlu' => 'hlu', + 'hma' => 'hma', + 'hmb' => 'hmb', + 'hmc' => 'hmc', + 'hmd' => 'hmd', + 'hme' => 'hme', + 'hmf' => 'hmf', + 'hmg' => 'hmg', + 'hmh' => 'hmh', + 'hmi' => 'hmi', + 'hmj' => 'hmj', + 'hmk' => 'hmk', + 'hml' => 'hml', + 'hmm' => 'hmm', + 'hmn' => 'hmn', + 'ho' => 'ho', + 'hmo' => 'ho', + 'hmp' => 'hmp', + 'hmq' => 'hmq', + 'hmr' => 'hmr', + 'hms' => 'hms', + 'hmt' => 'hmt', + 'hmu' => 'hmu', + 'hmv' => 'hmv', + 'hmw' => 'hmw', + 'hmy' => 'hmy', + 'hmz' => 'hmz', + 'hna' => 'hna', + 'hnd' => 'hnd', + 'hne' => 'hne', + 'hnh' => 'hnh', + 'hni' => 'hni', + 'hnj' => 'hnj', + 'hnn' => 'hnn', + 'hno' => 'hno', + 'hns' => 'hns', + 'hnu' => 'hnu', + 'hoa' => 'hoa', + 'hob' => 'hob', + 'hoc' => 'hoc', + 'hod' => 'hod', + 'hoe' => 'hoe', + 'hoh' => 'hoh', + 'hoi' => 'hoi', + 'hoj' => 'hoj', + 'hol' => 'hol', + 'hom' => 'hom', + 'hoo' => 'hoo', + 'hop' => 'hop', + 'hor' => 'hor', + 'hos' => 'hos', + 'hot' => 'hot', + 'hov' => 'hov', + 'how' => 'how', + 'hoy' => 'hoy', + 'hoz' => 'hoz', + 'hpo' => 'hpo', + 'hps' => 'hps', + 'hra' => 'hra', + 'hrc' => 'hrc', + 'hre' => 'hre', + 'hrk' => 'hrk', + 'hrm' => 'hrm', + 'hro' => 'hro', + 'hrp' => 'hrp', + 'hrt' => 'hrt', + 'hru' => 'hru', + 'hr' => 'hr', + 'hrv' => 'hr', + 'hrw' => 'hrw', + 'hrx' => 'hrx', + 'hrz' => 'hrz', + 'hsb' => 'hsb', + 'hsh' => 'hsh', + 'hsl' => 'hsl', + 'hsn' => 'hsn', + 'hss' => 'hss', + 'hti' => 'hti', + 'hto' => 'hto', + 'hts' => 'hts', + 'htu' => 'htu', + 'htx' => 'htx', + 'hub' => 'hub', + 'huc' => 'huc', + 'hud' => 'hud', + 'hue' => 'hue', + 'huf' => 'huf', + 'hug' => 'hug', + 'huh' => 'huh', + 'hui' => 'hui', + 'huj' => 'huj', + 'huk' => 'huk', + 'hul' => 'hul', + 'hum' => 'hum', + 'hu' => 'hu', + 'hun' => 'hu', + 'huo' => 'huo', + 'hup' => 'hup', + 'huq' => 'huq', + 'hur' => 'hur', + 'hus' => 'hus', + 'hut' => 'hut', + 'huu' => 'huu', + 'huv' => 'huv', + 'huw' => 'huw', + 'hux' => 'hux', + 'huy' => 'huy', + 'huz' => 'huz', + 'hvc' => 'hvc', + 'hve' => 'hve', + 'hvk' => 'hvk', + 'hvn' => 'hvn', + 'hvv' => 'hvv', + 'hwa' => 'hwa', + 'hwc' => 'hwc', + 'hwo' => 'hwo', + 'hya' => 'hya', + 'hy' => 'hy', + 'hye' => 'hy', + 'hyw' => 'hyw', + 'iai' => 'iai', + 'ian' => 'ian', + 'iar' => 'iar', + 'iba' => 'iba', + 'ibb' => 'ibb', + 'ibd' => 'ibd', + 'ibe' => 'ibe', + 'ibg' => 'ibg', + 'ibh' => 'ibh', + 'ibl' => 'ibl', + 'ibm' => 'ibm', + 'ibn' => 'ibn', + 'ig' => 'ig', + 'ibo' => 'ig', + 'ibr' => 'ibr', + 'ibu' => 'ibu', + 'iby' => 'iby', + 'ica' => 'ica', + 'ich' => 'ich', + 'icl' => 'icl', + 'icr' => 'icr', + 'ida' => 'ida', + 'idb' => 'idb', + 'idc' => 'idc', + 'idd' => 'idd', + 'ide' => 'ide', + 'idi' => 'idi', + 'io' => 'io', + 'ido' => 'io', + 'idr' => 'idr', + 'ids' => 'ids', + 'idt' => 'idt', + 'idu' => 'idu', + 'ifa' => 'ifa', + 'ifb' => 'ifb', + 'ife' => 'ife', + 'iff' => 'iff', + 'ifk' => 'ifk', + 'ifm' => 'ifm', + 'ifu' => 'ifu', + 'ify' => 'ify', + 'igb' => 'igb', + 'ige' => 'ige', + 'igg' => 'igg', + 'igl' => 'igl', + 'igm' => 'igm', + 'ign' => 'ign', + 'igo' => 'igo', + 'igs' => 'igs', + 'igw' => 'igw', + 'ihb' => 'ihb', + 'ihi' => 'ihi', + 'ihp' => 'ihp', + 'ihw' => 'ihw', + 'ii' => 'ii', + 'iii' => 'ii', + 'iin' => 'iin', + 'ijc' => 'ijc', + 'ije' => 'ije', + 'ijj' => 'ijj', + 'ijn' => 'ijn', + 'ijs' => 'ijs', + 'ike' => 'ike', + 'iki' => 'iki', + 'ikk' => 'ikk', + 'ikl' => 'ikl', + 'iko' => 'iko', + 'ikp' => 'ikp', + 'ikr' => 'ikr', + 'iks' => 'iks', + 'ikt' => 'ikt', + 'iu' => 'iu', + 'iku' => 'iu', + 'ikv' => 'ikv', + 'ikw' => 'ikw', + 'ikx' => 'ikx', + 'ikz' => 'ikz', + 'ila' => 'ila', + 'ilb' => 'ilb', + 'ie' => 'ie', + 'ile' => 'ie', + 'ilg' => 'ilg', + 'ili' => 'ili', + 'ilk' => 'ilk', + 'ilm' => 'ilm', + 'ilo' => 'ilo', + 'ilp' => 'ilp', + 'ils' => 'ils', + 'ilu' => 'ilu', + 'ilv' => 'ilv', + 'ima' => 'ima', + 'imi' => 'imi', + 'iml' => 'iml', + 'imn' => 'imn', + 'imo' => 'imo', + 'imr' => 'imr', + 'ims' => 'ims', + 'imy' => 'imy', + 'ia' => 'ia', + 'ina' => 'ia', + 'inb' => 'inb', + 'id' => 'id', + 'ind' => 'id', + 'ing' => 'ing', + 'inh' => 'inh', + 'inj' => 'inj', + 'inl' => 'inl', + 'inm' => 'inm', + 'inn' => 'inn', + 'ino' => 'ino', + 'inp' => 'inp', + 'ins' => 'ins', + 'int' => 'int', + 'inz' => 'inz', + 'ior' => 'ior', + 'iou' => 'iou', + 'iow' => 'iow', + 'ipi' => 'ipi', + 'ik' => 'ik', + 'ipk' => 'ik', + 'ipo' => 'ipo', + 'iqu' => 'iqu', + 'iqw' => 'iqw', + 'ire' => 'ire', + 'irh' => 'irh', + 'iri' => 'iri', + 'irk' => 'irk', + 'irn' => 'irn', + 'irr' => 'irr', + 'iru' => 'iru', + 'irx' => 'irx', + 'iry' => 'iry', + 'isa' => 'isa', + 'isc' => 'isc', + 'isd' => 'isd', + 'ise' => 'ise', + 'isg' => 'isg', + 'ish' => 'ish', + 'isi' => 'isi', + 'isk' => 'isk', + 'is' => 'is', + 'isl' => 'is', + 'ism' => 'ism', + 'isn' => 'isn', + 'iso' => 'iso', + 'isr' => 'isr', + 'ist' => 'ist', + 'isu' => 'isu', + 'it' => 'it', + 'ita' => 'it', + 'itb' => 'itb', + 'itd' => 'itd', + 'ite' => 'ite', + 'iti' => 'iti', + 'itk' => 'itk', + 'itl' => 'itl', + 'itm' => 'itm', + 'ito' => 'ito', + 'itr' => 'itr', + 'its' => 'its', + 'itt' => 'itt', + 'itv' => 'itv', + 'itw' => 'itw', + 'itx' => 'itx', + 'ity' => 'ity', + 'itz' => 'itz', + 'ium' => 'ium', + 'ivb' => 'ivb', + 'ivv' => 'ivv', + 'iwk' => 'iwk', + 'iwm' => 'iwm', + 'iwo' => 'iwo', + 'iws' => 'iws', + 'ixc' => 'ixc', + 'ixl' => 'ixl', + 'iya' => 'iya', + 'iyo' => 'iyo', + 'iyx' => 'iyx', + 'izh' => 'izh', + 'izr' => 'izr', + 'izz' => 'izz', + 'jaa' => 'jaa', + 'jab' => 'jab', + 'jac' => 'jac', + 'jad' => 'jad', + 'jae' => 'jae', + 'jaf' => 'jaf', + 'jah' => 'jah', + 'jaj' => 'jaj', + 'jak' => 'jak', + 'jal' => 'jal', + 'jam' => 'jam', + 'jan' => 'jan', + 'jao' => 'jao', + 'jaq' => 'jaq', + 'jas' => 'jas', + 'jat' => 'jat', + 'jau' => 'jau', + 'jv' => 'jv', + 'jav' => 'jv', + 'jax' => 'jax', + 'jay' => 'jay', + 'jaz' => 'jaz', + 'jbe' => 'jbe', + 'jbi' => 'jbi', + 'jbj' => 'jbj', + 'jbk' => 'jbk', + 'jbn' => 'jbn', + 'jbo' => 'jbo', + 'jbr' => 'jbr', + 'jbt' => 'jbt', + 'jbu' => 'jbu', + 'jbw' => 'jbw', + 'jcs' => 'jcs', + 'jct' => 'jct', + 'jda' => 'jda', + 'jdg' => 'jdg', + 'jdt' => 'jdt', + 'jeb' => 'jeb', + 'jee' => 'jee', + 'jeh' => 'jeh', + 'jei' => 'jei', + 'jek' => 'jek', + 'jel' => 'jel', + 'jen' => 'jen', + 'jer' => 'jer', + 'jet' => 'jet', + 'jeu' => 'jeu', + 'jgb' => 'jgb', + 'jge' => 'jge', + 'jgk' => 'jgk', + 'jgo' => 'jgo', + 'jhi' => 'jhi', + 'jhs' => 'jhs', + 'jia' => 'jia', + 'jib' => 'jib', + 'jic' => 'jic', + 'jid' => 'jid', + 'jie' => 'jie', + 'jig' => 'jig', + 'jih' => 'jih', + 'jii' => 'jii', + 'jil' => 'jil', + 'jim' => 'jim', + 'jio' => 'jio', + 'jiq' => 'jiq', + 'jit' => 'jit', + 'jiu' => 'jiu', + 'jiv' => 'jiv', + 'jiy' => 'jiy', + 'jje' => 'jje', + 'jjr' => 'jjr', + 'jka' => 'jka', + 'jkm' => 'jkm', + 'jko' => 'jko', + 'jkp' => 'jkp', + 'jkr' => 'jkr', + 'jku' => 'jku', + 'jle' => 'jle', + 'jls' => 'jls', + 'jma' => 'jma', + 'jmb' => 'jmb', + 'jmc' => 'jmc', + 'jmd' => 'jmd', + 'jmi' => 'jmi', + 'jml' => 'jml', + 'jmn' => 'jmn', + 'jmr' => 'jmr', + 'jms' => 'jms', + 'jmw' => 'jmw', + 'jmx' => 'jmx', + 'jna' => 'jna', + 'jnd' => 'jnd', + 'jng' => 'jng', + 'jni' => 'jni', + 'jnj' => 'jnj', + 'jnl' => 'jnl', + 'jns' => 'jns', + 'job' => 'job', + 'jod' => 'jod', + 'jog' => 'jog', + 'jor' => 'jor', + 'jos' => 'jos', + 'jow' => 'jow', + 'jpa' => 'jpa', + 'ja' => 'ja', + 'jpn' => 'ja', + 'jpr' => 'jpr', + 'jqr' => 'jqr', + 'jra' => 'jra', + 'jrb' => 'jrb', + 'jrr' => 'jrr', + 'jrt' => 'jrt', + 'jru' => 'jru', + 'jsl' => 'jsl', + 'jua' => 'jua', + 'jub' => 'jub', + 'juc' => 'juc', + 'jud' => 'jud', + 'juh' => 'juh', + 'jui' => 'jui', + 'juk' => 'juk', + 'jul' => 'jul', + 'jum' => 'jum', + 'jun' => 'jun', + 'juo' => 'juo', + 'jup' => 'jup', + 'jur' => 'jur', + 'jus' => 'jus', + 'jut' => 'jut', + 'juu' => 'juu', + 'juw' => 'juw', + 'juy' => 'juy', + 'jvd' => 'jvd', + 'jvn' => 'jvn', + 'jwi' => 'jwi', + 'jya' => 'jya', + 'jye' => 'jye', + 'jyy' => 'jyy', + 'kaa' => 'kaa', + 'kab' => 'kab', + 'kac' => 'kac', + 'kad' => 'kad', + 'kae' => 'kae', + 'kaf' => 'kaf', + 'kag' => 'kag', + 'kah' => 'kah', + 'kai' => 'kai', + 'kaj' => 'kaj', + 'kak' => 'kak', + 'kl' => 'kl', + 'kal' => 'kl', + 'kam' => 'kam', + 'kn' => 'kn', + 'kan' => 'kn', + 'kao' => 'kao', + 'kap' => 'kap', + 'kaq' => 'kaq', + 'ks' => 'ks', + 'kas' => 'ks', + 'ka' => 'ka', + 'kat' => 'ka', + 'kr' => 'kr', + 'kau' => 'kr', + 'kav' => 'kav', + 'kaw' => 'kaw', + 'kax' => 'kax', + 'kay' => 'kay', + 'kk' => 'kk', + 'kaz' => 'kk', + 'kba' => 'kba', + 'kbb' => 'kbb', + 'kbc' => 'kbc', + 'kbd' => 'kbd', + 'kbe' => 'kbe', + 'kbg' => 'kbg', + 'kbh' => 'kbh', + 'kbi' => 'kbi', + 'kbj' => 'kbj', + 'kbk' => 'kbk', + 'kbl' => 'kbl', + 'kbm' => 'kbm', + 'kbn' => 'kbn', + 'kbo' => 'kbo', + 'kbp' => 'kbp', + 'kbq' => 'kbq', + 'kbr' => 'kbr', + 'kbs' => 'kbs', + 'kbt' => 'kbt', + 'kbu' => 'kbu', + 'kbv' => 'kbv', + 'kbw' => 'kbw', + 'kbx' => 'kbx', + 'kby' => 'kby', + 'kbz' => 'kbz', + 'kca' => 'kca', + 'kcb' => 'kcb', + 'kcc' => 'kcc', + 'kcd' => 'kcd', + 'kce' => 'kce', + 'kcf' => 'kcf', + 'kcg' => 'kcg', + 'kch' => 'kch', + 'kci' => 'kci', + 'kcj' => 'kcj', + 'kck' => 'kck', + 'kcl' => 'kcl', + 'kcm' => 'kcm', + 'kcn' => 'kcn', + 'kco' => 'kco', + 'kcp' => 'kcp', + 'kcq' => 'kcq', + 'kcr' => 'kcr', + 'kcs' => 'kcs', + 'kct' => 'kct', + 'kcu' => 'kcu', + 'kcv' => 'kcv', + 'kcw' => 'kcw', + 'kcx' => 'kcx', + 'kcy' => 'kcy', + 'kcz' => 'kcz', + 'kda' => 'kda', + 'kdc' => 'kdc', + 'kdd' => 'kdd', + 'kde' => 'kde', + 'kdf' => 'kdf', + 'kdg' => 'kdg', + 'kdh' => 'kdh', + 'kdi' => 'kdi', + 'kdj' => 'kdj', + 'kdk' => 'kdk', + 'kdl' => 'kdl', + 'kdm' => 'kdm', + 'kdn' => 'kdn', + 'kdp' => 'kdp', + 'kdq' => 'kdq', + 'kdr' => 'kdr', + 'kdt' => 'kdt', + 'kdu' => 'kdu', + 'kdw' => 'kdw', + 'kdx' => 'kdx', + 'kdy' => 'kdy', + 'kdz' => 'kdz', + 'kea' => 'kea', + 'keb' => 'keb', + 'kec' => 'kec', + 'ked' => 'ked', + 'kee' => 'kee', + 'kef' => 'kef', + 'keg' => 'keg', + 'keh' => 'keh', + 'kei' => 'kei', + 'kej' => 'kej', + 'kek' => 'kek', + 'kel' => 'kel', + 'kem' => 'kem', + 'ken' => 'ken', + 'keo' => 'keo', + 'kep' => 'kep', + 'keq' => 'keq', + 'ker' => 'ker', + 'kes' => 'kes', + 'ket' => 'ket', + 'keu' => 'keu', + 'kev' => 'kev', + 'kew' => 'kew', + 'kex' => 'kex', + 'key' => 'key', + 'kez' => 'kez', + 'kfa' => 'kfa', + 'kfb' => 'kfb', + 'kfc' => 'kfc', + 'kfd' => 'kfd', + 'kfe' => 'kfe', + 'kff' => 'kff', + 'kfg' => 'kfg', + 'kfh' => 'kfh', + 'kfi' => 'kfi', + 'kfj' => 'kfj', + 'kfk' => 'kfk', + 'kfl' => 'kfl', + 'kfm' => 'kfm', + 'kfn' => 'kfn', + 'kfo' => 'kfo', + 'kfp' => 'kfp', + 'kfq' => 'kfq', + 'kfr' => 'kfr', + 'kfs' => 'kfs', + 'kft' => 'kft', + 'kfu' => 'kfu', + 'kfv' => 'kfv', + 'kfw' => 'kfw', + 'kfx' => 'kfx', + 'kfy' => 'kfy', + 'kfz' => 'kfz', + 'kga' => 'kga', + 'kgb' => 'kgb', + 'kge' => 'kge', + 'kgf' => 'kgf', + 'kgg' => 'kgg', + 'kgi' => 'kgi', + 'kgj' => 'kgj', + 'kgk' => 'kgk', + 'kgl' => 'kgl', + 'kgm' => 'kgm', + 'kgn' => 'kgn', + 'kgo' => 'kgo', + 'kgp' => 'kgp', + 'kgq' => 'kgq', + 'kgr' => 'kgr', + 'kgs' => 'kgs', + 'kgt' => 'kgt', + 'kgu' => 'kgu', + 'kgv' => 'kgv', + 'kgw' => 'kgw', + 'kgx' => 'kgx', + 'kgy' => 'kgy', + 'kha' => 'kha', + 'khb' => 'khb', + 'khc' => 'khc', + 'khd' => 'khd', + 'khe' => 'khe', + 'khf' => 'khf', + 'khg' => 'khg', + 'khh' => 'khh', + 'khj' => 'khj', + 'khk' => 'khk', + 'khl' => 'khl', + 'km' => 'km', + 'khm' => 'km', + 'khn' => 'khn', + 'kho' => 'kho', + 'khp' => 'khp', + 'khq' => 'khq', + 'khr' => 'khr', + 'khs' => 'khs', + 'kht' => 'kht', + 'khu' => 'khu', + 'khv' => 'khv', + 'khw' => 'khw', + 'khx' => 'khx', + 'khy' => 'khy', + 'khz' => 'khz', + 'kia' => 'kia', + 'kib' => 'kib', + 'kic' => 'kic', + 'kid' => 'kid', + 'kie' => 'kie', + 'kif' => 'kif', + 'kig' => 'kig', + 'kih' => 'kih', + 'kii' => 'kii', + 'kij' => 'kij', + 'ki' => 'ki', + 'kik' => 'ki', + 'kil' => 'kil', + 'kim' => 'kim', + 'rw' => 'rw', + 'kin' => 'rw', + 'kio' => 'kio', + 'kip' => 'kip', + 'kiq' => 'kiq', + 'ky' => 'ky', + 'kir' => 'ky', + 'kis' => 'kis', + 'kit' => 'kit', + 'kiu' => 'kiu', + 'kiv' => 'kiv', + 'kiw' => 'kiw', + 'kix' => 'kix', + 'kiy' => 'kiy', + 'kiz' => 'kiz', + 'kja' => 'kja', + 'kjb' => 'kjb', + 'kjc' => 'kjc', + 'kjd' => 'kjd', + 'kje' => 'kje', + 'kjf' => 'kjf', + 'kjg' => 'kjg', + 'kjh' => 'kjh', + 'kji' => 'kji', + 'kjj' => 'kjj', + 'kjk' => 'kjk', + 'kjl' => 'kjl', + 'kjm' => 'kjm', + 'kjn' => 'kjn', + 'kjo' => 'kjo', + 'kjp' => 'kjp', + 'kjq' => 'kjq', + 'kjr' => 'kjr', + 'kjs' => 'kjs', + 'kjt' => 'kjt', + 'kju' => 'kju', + 'kjv' => 'kjv', + 'kjx' => 'kjx', + 'kjy' => 'kjy', + 'kjz' => 'kjz', + 'kka' => 'kka', + 'kkb' => 'kkb', + 'kkc' => 'kkc', + 'kkd' => 'kkd', + 'kke' => 'kke', + 'kkf' => 'kkf', + 'kkg' => 'kkg', + 'kkh' => 'kkh', + 'kki' => 'kki', + 'kkj' => 'kkj', + 'kkk' => 'kkk', + 'kkl' => 'kkl', + 'kkm' => 'kkm', + 'kkn' => 'kkn', + 'kko' => 'kko', + 'kkp' => 'kkp', + 'kkq' => 'kkq', + 'kkr' => 'kkr', + 'kks' => 'kks', + 'kkt' => 'kkt', + 'kku' => 'kku', + 'kkv' => 'kkv', + 'kkw' => 'kkw', + 'kkx' => 'kkx', + 'kky' => 'kky', + 'kkz' => 'kkz', + 'kla' => 'kla', + 'klb' => 'klb', + 'klc' => 'klc', + 'kld' => 'kld', + 'kle' => 'kle', + 'klf' => 'klf', + 'klg' => 'klg', + 'klh' => 'klh', + 'kli' => 'kli', + 'klj' => 'klj', + 'klk' => 'klk', + 'kll' => 'kll', + 'klm' => 'klm', + 'kln' => 'kln', + 'klo' => 'klo', + 'klp' => 'klp', + 'klq' => 'klq', + 'klr' => 'klr', + 'kls' => 'kls', + 'klt' => 'klt', + 'klu' => 'klu', + 'klv' => 'klv', + 'klw' => 'klw', + 'klx' => 'klx', + 'kly' => 'kly', + 'klz' => 'klz', + 'kma' => 'kma', + 'kmb' => 'kmb', + 'kmc' => 'kmc', + 'kmd' => 'kmd', + 'kme' => 'kme', + 'kmf' => 'kmf', + 'kmg' => 'kmg', + 'kmh' => 'kmh', + 'kmi' => 'kmi', + 'kmj' => 'kmj', + 'kmk' => 'kmk', + 'kml' => 'kml', + 'kmm' => 'kmm', + 'kmn' => 'kmn', + 'kmo' => 'kmo', + 'kmp' => 'kmp', + 'kmq' => 'kmq', + 'kmr' => 'kmr', + 'kms' => 'kms', + 'kmt' => 'kmt', + 'kmu' => 'kmu', + 'kmv' => 'kmv', + 'kmw' => 'kmw', + 'kmx' => 'kmx', + 'kmy' => 'kmy', + 'kmz' => 'kmz', + 'kna' => 'kna', + 'knb' => 'knb', + 'knc' => 'knc', + 'knd' => 'knd', + 'kne' => 'kne', + 'knf' => 'knf', + 'kng' => 'kng', + 'kni' => 'kni', + 'knj' => 'knj', + 'knk' => 'knk', + 'knl' => 'knl', + 'knm' => 'knm', + 'knn' => 'knn', + 'kno' => 'kno', + 'knp' => 'knp', + 'knq' => 'knq', + 'knr' => 'knr', + 'kns' => 'kns', + 'knt' => 'knt', + 'knu' => 'knu', + 'knv' => 'knv', + 'knw' => 'knw', + 'knx' => 'knx', + 'kny' => 'kny', + 'knz' => 'knz', + 'koa' => 'koa', + 'koc' => 'koc', + 'kod' => 'kod', + 'koe' => 'koe', + 'kof' => 'kof', + 'kog' => 'kog', + 'koh' => 'koh', + 'koi' => 'koi', + 'kok' => 'kok', + 'kol' => 'kol', + 'kv' => 'kv', + 'kom' => 'kv', + 'kg' => 'kg', + 'kon' => 'kg', + 'koo' => 'koo', + 'kop' => 'kop', + 'koq' => 'koq', + 'ko' => 'ko', + 'kor' => 'ko', + 'kos' => 'kos', + 'kot' => 'kot', + 'kou' => 'kou', + 'kov' => 'kov', + 'kow' => 'kow', + 'koy' => 'koy', + 'koz' => 'koz', + 'kpa' => 'kpa', + 'kpb' => 'kpb', + 'kpc' => 'kpc', + 'kpd' => 'kpd', + 'kpe' => 'kpe', + 'kpf' => 'kpf', + 'kpg' => 'kpg', + 'kph' => 'kph', + 'kpi' => 'kpi', + 'kpj' => 'kpj', + 'kpk' => 'kpk', + 'kpl' => 'kpl', + 'kpm' => 'kpm', + 'kpn' => 'kpn', + 'kpo' => 'kpo', + 'kpq' => 'kpq', + 'kpr' => 'kpr', + 'kps' => 'kps', + 'kpt' => 'kpt', + 'kpu' => 'kpu', + 'kpv' => 'kpv', + 'kpw' => 'kpw', + 'kpx' => 'kpx', + 'kpy' => 'kpy', + 'kpz' => 'kpz', + 'kqa' => 'kqa', + 'kqb' => 'kqb', + 'kqc' => 'kqc', + 'kqd' => 'kqd', + 'kqe' => 'kqe', + 'kqf' => 'kqf', + 'kqg' => 'kqg', + 'kqh' => 'kqh', + 'kqi' => 'kqi', + 'kqj' => 'kqj', + 'kqk' => 'kqk', + 'kql' => 'kql', + 'kqm' => 'kqm', + 'kqn' => 'kqn', + 'kqo' => 'kqo', + 'kqp' => 'kqp', + 'kqq' => 'kqq', + 'kqr' => 'kqr', + 'kqs' => 'kqs', + 'kqt' => 'kqt', + 'kqu' => 'kqu', + 'kqv' => 'kqv', + 'kqw' => 'kqw', + 'kqx' => 'kqx', + 'kqy' => 'kqy', + 'kqz' => 'kqz', + 'kra' => 'kra', + 'krb' => 'krb', + 'krc' => 'krc', + 'krd' => 'krd', + 'kre' => 'kre', + 'krf' => 'krf', + 'krh' => 'krh', + 'kri' => 'kri', + 'krj' => 'krj', + 'krk' => 'krk', + 'krl' => 'krl', + 'krn' => 'krn', + 'krp' => 'krp', + 'krr' => 'krr', + 'krs' => 'krs', + 'krt' => 'krt', + 'kru' => 'kru', + 'krv' => 'krv', + 'krw' => 'krw', + 'krx' => 'krx', + 'kry' => 'kry', + 'krz' => 'krz', + 'ksa' => 'ksa', + 'ksb' => 'ksb', + 'ksc' => 'ksc', + 'ksd' => 'ksd', + 'kse' => 'kse', + 'ksf' => 'ksf', + 'ksg' => 'ksg', + 'ksh' => 'ksh', + 'ksi' => 'ksi', + 'ksj' => 'ksj', + 'ksk' => 'ksk', + 'ksl' => 'ksl', + 'ksm' => 'ksm', + 'ksn' => 'ksn', + 'kso' => 'kso', + 'ksp' => 'ksp', + 'ksq' => 'ksq', + 'ksr' => 'ksr', + 'kss' => 'kss', + 'kst' => 'kst', + 'ksu' => 'ksu', + 'ksv' => 'ksv', + 'ksw' => 'ksw', + 'ksx' => 'ksx', + 'ksy' => 'ksy', + 'ksz' => 'ksz', + 'kta' => 'kta', + 'ktb' => 'ktb', + 'ktc' => 'ktc', + 'ktd' => 'ktd', + 'kte' => 'kte', + 'ktf' => 'ktf', + 'ktg' => 'ktg', + 'kth' => 'kth', + 'kti' => 'kti', + 'ktj' => 'ktj', + 'ktk' => 'ktk', + 'ktl' => 'ktl', + 'ktm' => 'ktm', + 'ktn' => 'ktn', + 'kto' => 'kto', + 'ktp' => 'ktp', + 'ktq' => 'ktq', + 'kts' => 'kts', + 'ktt' => 'ktt', + 'ktu' => 'ktu', + 'ktv' => 'ktv', + 'ktw' => 'ktw', + 'ktx' => 'ktx', + 'kty' => 'kty', + 'ktz' => 'ktz', + 'kj' => 'kj', + 'kua' => 'kj', + 'kub' => 'kub', + 'kuc' => 'kuc', + 'kud' => 'kud', + 'kue' => 'kue', + 'kuf' => 'kuf', + 'kug' => 'kug', + 'kuh' => 'kuh', + 'kui' => 'kui', + 'kuj' => 'kuj', + 'kuk' => 'kuk', + 'kul' => 'kul', + 'kum' => 'kum', + 'kun' => 'kun', + 'kuo' => 'kuo', + 'kup' => 'kup', + 'kuq' => 'kuq', + 'ku' => 'ku', + 'kur' => 'ku', + 'kus' => 'kus', + 'kut' => 'kut', + 'kuu' => 'kuu', + 'kuv' => 'kuv', + 'kuw' => 'kuw', + 'kux' => 'kux', + 'kuy' => 'kuy', + 'kuz' => 'kuz', + 'kva' => 'kva', + 'kvb' => 'kvb', + 'kvc' => 'kvc', + 'kvd' => 'kvd', + 'kve' => 'kve', + 'kvf' => 'kvf', + 'kvg' => 'kvg', + 'kvh' => 'kvh', + 'kvi' => 'kvi', + 'kvj' => 'kvj', + 'kvk' => 'kvk', + 'kvl' => 'kvl', + 'kvm' => 'kvm', + 'kvn' => 'kvn', + 'kvo' => 'kvo', + 'kvp' => 'kvp', + 'kvq' => 'kvq', + 'kvr' => 'kvr', + 'kvt' => 'kvt', + 'kvu' => 'kvu', + 'kvv' => 'kvv', + 'kvw' => 'kvw', + 'kvx' => 'kvx', + 'kvy' => 'kvy', + 'kvz' => 'kvz', + 'kwa' => 'kwa', + 'kwb' => 'kwb', + 'kwc' => 'kwc', + 'kwd' => 'kwd', + 'kwe' => 'kwe', + 'kwf' => 'kwf', + 'kwg' => 'kwg', + 'kwh' => 'kwh', + 'kwi' => 'kwi', + 'kwj' => 'kwj', + 'kwk' => 'kwk', + 'kwl' => 'kwl', + 'kwm' => 'kwm', + 'kwn' => 'kwn', + 'kwo' => 'kwo', + 'kwp' => 'kwp', + 'kwr' => 'kwr', + 'kws' => 'kws', + 'kwt' => 'kwt', + 'kwu' => 'kwu', + 'kwv' => 'kwv', + 'kww' => 'kww', + 'kwx' => 'kwx', + 'kwy' => 'kwy', + 'kwz' => 'kwz', + 'kxa' => 'kxa', + 'kxb' => 'kxb', + 'kxc' => 'kxc', + 'kxd' => 'kxd', + 'kxf' => 'kxf', + 'kxh' => 'kxh', + 'kxi' => 'kxi', + 'kxj' => 'kxj', + 'kxk' => 'kxk', + 'kxl' => 'kxl', + 'kxm' => 'kxm', + 'kxn' => 'kxn', + 'kxo' => 'kxo', + 'kxp' => 'kxp', + 'kxq' => 'kxq', + 'kxr' => 'kxr', + 'kxs' => 'kxs', + 'kxt' => 'kxt', + 'kxu' => 'kxu', + 'kxv' => 'kxv', + 'kxw' => 'kxw', + 'kxx' => 'kxx', + 'kxy' => 'kxy', + 'kxz' => 'kxz', + 'kya' => 'kya', + 'kyb' => 'kyb', + 'kyc' => 'kyc', + 'kyd' => 'kyd', + 'kye' => 'kye', + 'kyf' => 'kyf', + 'kyg' => 'kyg', + 'kyh' => 'kyh', + 'kyi' => 'kyi', + 'kyj' => 'kyj', + 'kyk' => 'kyk', + 'kyl' => 'kyl', + 'kym' => 'kym', + 'kyn' => 'kyn', + 'kyo' => 'kyo', + 'kyp' => 'kyp', + 'kyq' => 'kyq', + 'kyr' => 'kyr', + 'kys' => 'kys', + 'kyt' => 'kyt', + 'kyu' => 'kyu', + 'kyv' => 'kyv', + 'kyw' => 'kyw', + 'kyx' => 'kyx', + 'kyy' => 'kyy', + 'kyz' => 'kyz', + 'kza' => 'kza', + 'kzb' => 'kzb', + 'kzc' => 'kzc', + 'kzd' => 'kzd', + 'kze' => 'kze', + 'kzf' => 'kzf', + 'kzg' => 'kzg', + 'kzi' => 'kzi', + 'kzk' => 'kzk', + 'kzl' => 'kzl', + 'kzm' => 'kzm', + 'kzn' => 'kzn', + 'kzo' => 'kzo', + 'kzp' => 'kzp', + 'kzq' => 'kzq', + 'kzr' => 'kzr', + 'kzs' => 'kzs', + 'kzu' => 'kzu', + 'kzv' => 'kzv', + 'kzw' => 'kzw', + 'kzx' => 'kzx', + 'kzy' => 'kzy', + 'kzz' => 'kzz', + 'laa' => 'laa', + 'lab' => 'lab', + 'lac' => 'lac', + 'lad' => 'lad', + 'lae' => 'lae', + 'laf' => 'laf', + 'lag' => 'lag', + 'lah' => 'lah', + 'lai' => 'lai', + 'laj' => 'laj', + 'lak' => 'lak', + 'lal' => 'lal', + 'lam' => 'lam', + 'lan' => 'lan', + 'lo' => 'lo', + 'lao' => 'lo', + 'lap' => 'lap', + 'laq' => 'laq', + 'lar' => 'lar', + 'las' => 'las', + 'la' => 'la', + 'lat' => 'la', + 'lau' => 'lau', + 'lv' => 'lv', + 'lav' => 'lv', + 'law' => 'law', + 'lax' => 'lax', + 'lay' => 'lay', + 'laz' => 'laz', + 'lba' => 'lba', + 'lbb' => 'lbb', + 'lbc' => 'lbc', + 'lbe' => 'lbe', + 'lbf' => 'lbf', + 'lbg' => 'lbg', + 'lbi' => 'lbi', + 'lbj' => 'lbj', + 'lbk' => 'lbk', + 'lbl' => 'lbl', + 'lbm' => 'lbm', + 'lbn' => 'lbn', + 'lbo' => 'lbo', + 'lbq' => 'lbq', + 'lbr' => 'lbr', + 'lbs' => 'lbs', + 'lbt' => 'lbt', + 'lbu' => 'lbu', + 'lbv' => 'lbv', + 'lbw' => 'lbw', + 'lbx' => 'lbx', + 'lby' => 'lby', + 'lbz' => 'lbz', + 'lcc' => 'lcc', + 'lcd' => 'lcd', + 'lce' => 'lce', + 'lcf' => 'lcf', + 'lch' => 'lch', + 'lcl' => 'lcl', + 'lcm' => 'lcm', + 'lcp' => 'lcp', + 'lcq' => 'lcq', + 'lcs' => 'lcs', + 'lda' => 'lda', + 'ldb' => 'ldb', + 'ldd' => 'ldd', + 'ldg' => 'ldg', + 'ldh' => 'ldh', + 'ldi' => 'ldi', + 'ldj' => 'ldj', + 'ldk' => 'ldk', + 'ldl' => 'ldl', + 'ldm' => 'ldm', + 'ldn' => 'ldn', + 'ldo' => 'ldo', + 'ldp' => 'ldp', + 'ldq' => 'ldq', + 'lea' => 'lea', + 'leb' => 'leb', + 'lec' => 'lec', + 'led' => 'led', + 'lee' => 'lee', + 'lef' => 'lef', + 'leh' => 'leh', + 'lei' => 'lei', + 'lej' => 'lej', + 'lek' => 'lek', + 'lel' => 'lel', + 'lem' => 'lem', + 'len' => 'len', + 'leo' => 'leo', + 'lep' => 'lep', + 'leq' => 'leq', + 'ler' => 'ler', + 'les' => 'les', + 'let' => 'let', + 'leu' => 'leu', + 'lev' => 'lev', + 'lew' => 'lew', + 'lex' => 'lex', + 'ley' => 'ley', + 'lez' => 'lez', + 'lfa' => 'lfa', + 'lfn' => 'lfn', + 'lga' => 'lga', + 'lgb' => 'lgb', + 'lgg' => 'lgg', + 'lgh' => 'lgh', + 'lgi' => 'lgi', + 'lgk' => 'lgk', + 'lgl' => 'lgl', + 'lgm' => 'lgm', + 'lgn' => 'lgn', + 'lgq' => 'lgq', + 'lgr' => 'lgr', + 'lgt' => 'lgt', + 'lgu' => 'lgu', + 'lgz' => 'lgz', + 'lha' => 'lha', + 'lhh' => 'lhh', + 'lhi' => 'lhi', + 'lhl' => 'lhl', + 'lhm' => 'lhm', + 'lhn' => 'lhn', + 'lhp' => 'lhp', + 'lhs' => 'lhs', + 'lht' => 'lht', + 'lhu' => 'lhu', + 'lia' => 'lia', + 'lib' => 'lib', + 'lic' => 'lic', + 'lid' => 'lid', + 'lie' => 'lie', + 'lif' => 'lif', + 'lig' => 'lig', + 'lih' => 'lih', + 'lij' => 'lij', + 'lik' => 'lik', + 'lil' => 'lil', + 'li' => 'li', + 'lim' => 'li', + 'ln' => 'ln', + 'lin' => 'ln', + 'lio' => 'lio', + 'lip' => 'lip', + 'liq' => 'liq', + 'lir' => 'lir', + 'lis' => 'lis', + 'lt' => 'lt', + 'lit' => 'lt', + 'liu' => 'liu', + 'liv' => 'liv', + 'liw' => 'liw', + 'lix' => 'lix', + 'liy' => 'liy', + 'liz' => 'liz', + 'lja' => 'lja', + 'lje' => 'lje', + 'lji' => 'lji', + 'ljl' => 'ljl', + 'ljp' => 'ljp', + 'ljw' => 'ljw', + 'ljx' => 'ljx', + 'lka' => 'lka', + 'lkb' => 'lkb', + 'lkc' => 'lkc', + 'lkd' => 'lkd', + 'lke' => 'lke', + 'lkh' => 'lkh', + 'lki' => 'lki', + 'lkj' => 'lkj', + 'lkl' => 'lkl', + 'lkm' => 'lkm', + 'lkn' => 'lkn', + 'lko' => 'lko', + 'lkr' => 'lkr', + 'lks' => 'lks', + 'lkt' => 'lkt', + 'lku' => 'lku', + 'lky' => 'lky', + 'lla' => 'lla', + 'llb' => 'llb', + 'llc' => 'llc', + 'lld' => 'lld', + 'lle' => 'lle', + 'llf' => 'llf', + 'llg' => 'llg', + 'llh' => 'llh', + 'lli' => 'lli', + 'llj' => 'llj', + 'llk' => 'llk', + 'lll' => 'lll', + 'llm' => 'llm', + 'lln' => 'lln', + 'llo' => 'llo', + 'llp' => 'llp', + 'llq' => 'llq', + 'lls' => 'lls', + 'llu' => 'llu', + 'llx' => 'llx', + 'lma' => 'lma', + 'lmb' => 'lmb', + 'lmc' => 'lmc', + 'lmd' => 'lmd', + 'lme' => 'lme', + 'lmf' => 'lmf', + 'lmg' => 'lmg', + 'lmh' => 'lmh', + 'lmi' => 'lmi', + 'lmj' => 'lmj', + 'lmk' => 'lmk', + 'lml' => 'lml', + 'lmn' => 'lmn', + 'lmo' => 'lmo', + 'lmp' => 'lmp', + 'lmq' => 'lmq', + 'lmr' => 'lmr', + 'lmu' => 'lmu', + 'lmv' => 'lmv', + 'lmw' => 'lmw', + 'lmx' => 'lmx', + 'lmy' => 'lmy', + 'lmz' => 'lmz', + 'lna' => 'lna', + 'lnb' => 'lnb', + 'lnd' => 'lnd', + 'lng' => 'lng', + 'lnh' => 'lnh', + 'lni' => 'lni', + 'lnj' => 'lnj', + 'lnl' => 'lnl', + 'lnm' => 'lnm', + 'lnn' => 'lnn', + 'lno' => 'lno', + 'lns' => 'lns', + 'lnu' => 'lnu', + 'lnw' => 'lnw', + 'lnz' => 'lnz', + 'loa' => 'loa', + 'lob' => 'lob', + 'loc' => 'loc', + 'loe' => 'loe', + 'lof' => 'lof', + 'log' => 'log', + 'loh' => 'loh', + 'loi' => 'loi', + 'loj' => 'loj', + 'lok' => 'lok', + 'lol' => 'lol', + 'lom' => 'lom', + 'lon' => 'lon', + 'loo' => 'loo', + 'lop' => 'lop', + 'loq' => 'loq', + 'lor' => 'lor', + 'los' => 'los', + 'lot' => 'lot', + 'lou' => 'lou', + 'lov' => 'lov', + 'low' => 'low', + 'lox' => 'lox', + 'loy' => 'loy', + 'loz' => 'loz', + 'lpa' => 'lpa', + 'lpe' => 'lpe', + 'lpn' => 'lpn', + 'lpo' => 'lpo', + 'lpx' => 'lpx', + 'lra' => 'lra', + 'lrc' => 'lrc', + 'lre' => 'lre', + 'lrg' => 'lrg', + 'lri' => 'lri', + 'lrk' => 'lrk', + 'lrl' => 'lrl', + 'lrm' => 'lrm', + 'lrn' => 'lrn', + 'lro' => 'lro', + 'lrr' => 'lrr', + 'lrt' => 'lrt', + 'lrv' => 'lrv', + 'lrz' => 'lrz', + 'lsa' => 'lsa', + 'lsd' => 'lsd', + 'lse' => 'lse', + 'lsh' => 'lsh', + 'lsi' => 'lsi', + 'lsl' => 'lsl', + 'lsm' => 'lsm', + 'lso' => 'lso', + 'lsp' => 'lsp', + 'lsr' => 'lsr', + 'lss' => 'lss', + 'lst' => 'lst', + 'lsy' => 'lsy', + 'ltc' => 'ltc', + 'ltg' => 'ltg', + 'lth' => 'lth', + 'lti' => 'lti', + 'ltn' => 'ltn', + 'lto' => 'lto', + 'lts' => 'lts', + 'ltu' => 'ltu', + 'lb' => 'lb', + 'ltz' => 'lb', + 'lua' => 'lua', + 'lu' => 'lu', + 'lub' => 'lu', + 'luc' => 'luc', + 'lud' => 'lud', + 'lue' => 'lue', + 'luf' => 'luf', + 'lg' => 'lg', + 'lug' => 'lg', + 'lui' => 'lui', + 'luj' => 'luj', + 'luk' => 'luk', + 'lul' => 'lul', + 'lum' => 'lum', + 'lun' => 'lun', + 'luo' => 'luo', + 'lup' => 'lup', + 'luq' => 'luq', + 'lur' => 'lur', + 'lus' => 'lus', + 'lut' => 'lut', + 'luu' => 'luu', + 'luv' => 'luv', + 'luw' => 'luw', + 'luy' => 'luy', + 'luz' => 'luz', + 'lva' => 'lva', + 'lvk' => 'lvk', + 'lvs' => 'lvs', + 'lvu' => 'lvu', + 'lwa' => 'lwa', + 'lwe' => 'lwe', + 'lwg' => 'lwg', + 'lwh' => 'lwh', + 'lwl' => 'lwl', + 'lwm' => 'lwm', + 'lwo' => 'lwo', + 'lws' => 'lws', + 'lwt' => 'lwt', + 'lwu' => 'lwu', + 'lww' => 'lww', + 'lya' => 'lya', + 'lyg' => 'lyg', + 'lyn' => 'lyn', + 'lzh' => 'lzh', + 'lzl' => 'lzl', + 'lzn' => 'lzn', + 'lzz' => 'lzz', + 'maa' => 'maa', + 'mab' => 'mab', + 'mad' => 'mad', + 'mae' => 'mae', + 'maf' => 'maf', + 'mag' => 'mag', + 'mh' => 'mh', + 'mah' => 'mh', + 'mai' => 'mai', + 'maj' => 'maj', + 'mak' => 'mak', + 'ml' => 'ml', + 'mal' => 'ml', + 'mam' => 'mam', + 'man' => 'man', + 'maq' => 'maq', + 'mr' => 'mr', + 'mar' => 'mr', + 'mas' => 'mas', + 'mat' => 'mat', + 'mau' => 'mau', + 'mav' => 'mav', + 'maw' => 'maw', + 'max' => 'max', + 'maz' => 'maz', + 'mba' => 'mba', + 'mbb' => 'mbb', + 'mbc' => 'mbc', + 'mbd' => 'mbd', + 'mbe' => 'mbe', + 'mbf' => 'mbf', + 'mbh' => 'mbh', + 'mbi' => 'mbi', + 'mbj' => 'mbj', + 'mbk' => 'mbk', + 'mbl' => 'mbl', + 'mbm' => 'mbm', + 'mbn' => 'mbn', + 'mbo' => 'mbo', + 'mbp' => 'mbp', + 'mbq' => 'mbq', + 'mbr' => 'mbr', + 'mbs' => 'mbs', + 'mbt' => 'mbt', + 'mbu' => 'mbu', + 'mbv' => 'mbv', + 'mbw' => 'mbw', + 'mbx' => 'mbx', + 'mby' => 'mby', + 'mbz' => 'mbz', + 'mca' => 'mca', + 'mcb' => 'mcb', + 'mcc' => 'mcc', + 'mcd' => 'mcd', + 'mce' => 'mce', + 'mcf' => 'mcf', + 'mcg' => 'mcg', + 'mch' => 'mch', + 'mci' => 'mci', + 'mcj' => 'mcj', + 'mck' => 'mck', + 'mcl' => 'mcl', + 'mcm' => 'mcm', + 'mcn' => 'mcn', + 'mco' => 'mco', + 'mcp' => 'mcp', + 'mcq' => 'mcq', + 'mcr' => 'mcr', + 'mcs' => 'mcs', + 'mct' => 'mct', + 'mcu' => 'mcu', + 'mcv' => 'mcv', + 'mcw' => 'mcw', + 'mcx' => 'mcx', + 'mcy' => 'mcy', + 'mcz' => 'mcz', + 'mda' => 'mda', + 'mdb' => 'mdb', + 'mdc' => 'mdc', + 'mdd' => 'mdd', + 'mde' => 'mde', + 'mdf' => 'mdf', + 'mdg' => 'mdg', + 'mdh' => 'mdh', + 'mdi' => 'mdi', + 'mdj' => 'mdj', + 'mdk' => 'mdk', + 'mdl' => 'mdl', + 'mdm' => 'mdm', + 'mdn' => 'mdn', + 'mdp' => 'mdp', + 'mdq' => 'mdq', + 'mdr' => 'mdr', + 'mds' => 'mds', + 'mdt' => 'mdt', + 'mdu' => 'mdu', + 'mdv' => 'mdv', + 'mdw' => 'mdw', + 'mdx' => 'mdx', + 'mdy' => 'mdy', + 'mdz' => 'mdz', + 'mea' => 'mea', + 'meb' => 'meb', + 'mec' => 'mec', + 'med' => 'med', + 'mee' => 'mee', + 'mef' => 'mef', + 'meh' => 'meh', + 'mei' => 'mei', + 'mej' => 'mej', + 'mek' => 'mek', + 'mel' => 'mel', + 'mem' => 'mem', + 'men' => 'men', + 'meo' => 'meo', + 'mep' => 'mep', + 'meq' => 'meq', + 'mer' => 'mer', + 'mes' => 'mes', + 'met' => 'met', + 'meu' => 'meu', + 'mev' => 'mev', + 'mew' => 'mew', + 'mey' => 'mey', + 'mez' => 'mez', + 'mfa' => 'mfa', + 'mfb' => 'mfb', + 'mfc' => 'mfc', + 'mfd' => 'mfd', + 'mfe' => 'mfe', + 'mff' => 'mff', + 'mfg' => 'mfg', + 'mfh' => 'mfh', + 'mfi' => 'mfi', + 'mfj' => 'mfj', + 'mfk' => 'mfk', + 'mfl' => 'mfl', + 'mfm' => 'mfm', + 'mfn' => 'mfn', + 'mfo' => 'mfo', + 'mfp' => 'mfp', + 'mfq' => 'mfq', + 'mfr' => 'mfr', + 'mfs' => 'mfs', + 'mft' => 'mft', + 'mfu' => 'mfu', + 'mfv' => 'mfv', + 'mfw' => 'mfw', + 'mfx' => 'mfx', + 'mfy' => 'mfy', + 'mfz' => 'mfz', + 'mga' => 'mga', + 'mgb' => 'mgb', + 'mgc' => 'mgc', + 'mgd' => 'mgd', + 'mge' => 'mge', + 'mgf' => 'mgf', + 'mgg' => 'mgg', + 'mgh' => 'mgh', + 'mgi' => 'mgi', + 'mgj' => 'mgj', + 'mgk' => 'mgk', + 'mgl' => 'mgl', + 'mgm' => 'mgm', + 'mgn' => 'mgn', + 'mgo' => 'mgo', + 'mgp' => 'mgp', + 'mgq' => 'mgq', + 'mgr' => 'mgr', + 'mgs' => 'mgs', + 'mgt' => 'mgt', + 'mgu' => 'mgu', + 'mgv' => 'mgv', + 'mgw' => 'mgw', + 'mgy' => 'mgy', + 'mgz' => 'mgz', + 'mha' => 'mha', + 'mhb' => 'mhb', + 'mhc' => 'mhc', + 'mhd' => 'mhd', + 'mhe' => 'mhe', + 'mhf' => 'mhf', + 'mhg' => 'mhg', + 'mhi' => 'mhi', + 'mhj' => 'mhj', + 'mhk' => 'mhk', + 'mhl' => 'mhl', + 'mhm' => 'mhm', + 'mhn' => 'mhn', + 'mho' => 'mho', + 'mhp' => 'mhp', + 'mhq' => 'mhq', + 'mhr' => 'mhr', + 'mhs' => 'mhs', + 'mht' => 'mht', + 'mhu' => 'mhu', + 'mhw' => 'mhw', + 'mhx' => 'mhx', + 'mhy' => 'mhy', + 'mhz' => 'mhz', + 'mia' => 'mia', + 'mib' => 'mib', + 'mic' => 'mic', + 'mid' => 'mid', + 'mie' => 'mie', + 'mif' => 'mif', + 'mig' => 'mig', + 'mih' => 'mih', + 'mii' => 'mii', + 'mij' => 'mij', + 'mik' => 'mik', + 'mil' => 'mil', + 'mim' => 'mim', + 'min' => 'min', + 'mio' => 'mio', + 'mip' => 'mip', + 'miq' => 'miq', + 'mir' => 'mir', + 'mis' => 'mis', + 'mit' => 'mit', + 'miu' => 'miu', + 'miw' => 'miw', + 'mix' => 'mix', + 'miy' => 'miy', + 'miz' => 'miz', + 'mjb' => 'mjb', + 'mjc' => 'mjc', + 'mjd' => 'mjd', + 'mje' => 'mje', + 'mjg' => 'mjg', + 'mjh' => 'mjh', + 'mji' => 'mji', + 'mjj' => 'mjj', + 'mjk' => 'mjk', + 'mjl' => 'mjl', + 'mjm' => 'mjm', + 'mjn' => 'mjn', + 'mjo' => 'mjo', + 'mjp' => 'mjp', + 'mjq' => 'mjq', + 'mjr' => 'mjr', + 'mjs' => 'mjs', + 'mjt' => 'mjt', + 'mju' => 'mju', + 'mjv' => 'mjv', + 'mjw' => 'mjw', + 'mjx' => 'mjx', + 'mjy' => 'mjy', + 'mjz' => 'mjz', + 'mka' => 'mka', + 'mkb' => 'mkb', + 'mkc' => 'mkc', + 'mk' => 'mk', + 'mkd' => 'mk', + 'mke' => 'mke', + 'mkf' => 'mkf', + 'mkg' => 'mkg', + 'mki' => 'mki', + 'mkj' => 'mkj', + 'mkk' => 'mkk', + 'mkl' => 'mkl', + 'mkm' => 'mkm', + 'mkn' => 'mkn', + 'mko' => 'mko', + 'mkp' => 'mkp', + 'mkq' => 'mkq', + 'mkr' => 'mkr', + 'mks' => 'mks', + 'mkt' => 'mkt', + 'mku' => 'mku', + 'mkv' => 'mkv', + 'mkw' => 'mkw', + 'mkx' => 'mkx', + 'mky' => 'mky', + 'mkz' => 'mkz', + 'mla' => 'mla', + 'mlb' => 'mlb', + 'mlc' => 'mlc', + 'mle' => 'mle', + 'mlf' => 'mlf', + 'mg' => 'mg', + 'mlg' => 'mg', + 'mlh' => 'mlh', + 'mli' => 'mli', + 'mlj' => 'mlj', + 'mlk' => 'mlk', + 'mll' => 'mll', + 'mlm' => 'mlm', + 'mln' => 'mln', + 'mlo' => 'mlo', + 'mlp' => 'mlp', + 'mlq' => 'mlq', + 'mlr' => 'mlr', + 'mls' => 'mls', + 'mt' => 'mt', + 'mlt' => 'mt', + 'mlu' => 'mlu', + 'mlv' => 'mlv', + 'mlw' => 'mlw', + 'mlx' => 'mlx', + 'mlz' => 'mlz', + 'mma' => 'mma', + 'mmb' => 'mmb', + 'mmc' => 'mmc', + 'mmd' => 'mmd', + 'mme' => 'mme', + 'mmf' => 'mmf', + 'mmg' => 'mmg', + 'mmh' => 'mmh', + 'mmi' => 'mmi', + 'mmj' => 'mmj', + 'mmk' => 'mmk', + 'mml' => 'mml', + 'mmm' => 'mmm', + 'mmn' => 'mmn', + 'mmo' => 'mmo', + 'mmp' => 'mmp', + 'mmq' => 'mmq', + 'mmr' => 'mmr', + 'mmt' => 'mmt', + 'mmu' => 'mmu', + 'mmv' => 'mmv', + 'mmw' => 'mmw', + 'mmx' => 'mmx', + 'mmy' => 'mmy', + 'mmz' => 'mmz', + 'mna' => 'mna', + 'mnb' => 'mnb', + 'mnc' => 'mnc', + 'mnd' => 'mnd', + 'mne' => 'mne', + 'mnf' => 'mnf', + 'mng' => 'mng', + 'mnh' => 'mnh', + 'mni' => 'mni', + 'mnj' => 'mnj', + 'mnk' => 'mnk', + 'mnl' => 'mnl', + 'mnm' => 'mnm', + 'mnn' => 'mnn', + 'mnp' => 'mnp', + 'mnq' => 'mnq', + 'mnr' => 'mnr', + 'mns' => 'mns', + 'mnu' => 'mnu', + 'mnv' => 'mnv', + 'mnw' => 'mnw', + 'mnx' => 'mnx', + 'mny' => 'mny', + 'mnz' => 'mnz', + 'moa' => 'moa', + 'moc' => 'moc', + 'mod' => 'mod', + 'moe' => 'moe', + 'mog' => 'mog', + 'moh' => 'moh', + 'moi' => 'moi', + 'moj' => 'moj', + 'mok' => 'mok', + 'mom' => 'mom', + 'mn' => 'mn', + 'mon' => 'mn', + 'moo' => 'moo', + 'mop' => 'mop', + 'moq' => 'moq', + 'mor' => 'mor', + 'mos' => 'mos', + 'mot' => 'mot', + 'mou' => 'mou', + 'mov' => 'mov', + 'mow' => 'mow', + 'mox' => 'mox', + 'moy' => 'moy', + 'moz' => 'moz', + 'mpa' => 'mpa', + 'mpb' => 'mpb', + 'mpc' => 'mpc', + 'mpd' => 'mpd', + 'mpe' => 'mpe', + 'mpg' => 'mpg', + 'mph' => 'mph', + 'mpi' => 'mpi', + 'mpj' => 'mpj', + 'mpk' => 'mpk', + 'mpl' => 'mpl', + 'mpm' => 'mpm', + 'mpn' => 'mpn', + 'mpo' => 'mpo', + 'mpp' => 'mpp', + 'mpq' => 'mpq', + 'mpr' => 'mpr', + 'mps' => 'mps', + 'mpt' => 'mpt', + 'mpu' => 'mpu', + 'mpv' => 'mpv', + 'mpw' => 'mpw', + 'mpx' => 'mpx', + 'mpy' => 'mpy', + 'mpz' => 'mpz', + 'mqa' => 'mqa', + 'mqb' => 'mqb', + 'mqc' => 'mqc', + 'mqe' => 'mqe', + 'mqf' => 'mqf', + 'mqg' => 'mqg', + 'mqh' => 'mqh', + 'mqi' => 'mqi', + 'mqj' => 'mqj', + 'mqk' => 'mqk', + 'mql' => 'mql', + 'mqm' => 'mqm', + 'mqn' => 'mqn', + 'mqo' => 'mqo', + 'mqp' => 'mqp', + 'mqq' => 'mqq', + 'mqr' => 'mqr', + 'mqs' => 'mqs', + 'mqt' => 'mqt', + 'mqu' => 'mqu', + 'mqv' => 'mqv', + 'mqw' => 'mqw', + 'mqx' => 'mqx', + 'mqy' => 'mqy', + 'mqz' => 'mqz', + 'mra' => 'mra', + 'mrb' => 'mrb', + 'mrc' => 'mrc', + 'mrd' => 'mrd', + 'mre' => 'mre', + 'mrf' => 'mrf', + 'mrg' => 'mrg', + 'mrh' => 'mrh', + 'mi' => 'mi', + 'mri' => 'mi', + 'mrj' => 'mrj', + 'mrk' => 'mrk', + 'mrl' => 'mrl', + 'mrm' => 'mrm', + 'mrn' => 'mrn', + 'mro' => 'mro', + 'mrp' => 'mrp', + 'mrq' => 'mrq', + 'mrr' => 'mrr', + 'mrs' => 'mrs', + 'mrt' => 'mrt', + 'mru' => 'mru', + 'mrv' => 'mrv', + 'mrw' => 'mrw', + 'mrx' => 'mrx', + 'mry' => 'mry', + 'mrz' => 'mrz', + 'ms' => 'ms', + 'msa' => 'ms', + 'msb' => 'msb', + 'msc' => 'msc', + 'msd' => 'msd', + 'mse' => 'mse', + 'msf' => 'msf', + 'msg' => 'msg', + 'msh' => 'msh', + 'msi' => 'msi', + 'msj' => 'msj', + 'msk' => 'msk', + 'msl' => 'msl', + 'msm' => 'msm', + 'msn' => 'msn', + 'mso' => 'mso', + 'msp' => 'msp', + 'msq' => 'msq', + 'msr' => 'msr', + 'mss' => 'mss', + 'msu' => 'msu', + 'msv' => 'msv', + 'msw' => 'msw', + 'msx' => 'msx', + 'msy' => 'msy', + 'msz' => 'msz', + 'mta' => 'mta', + 'mtb' => 'mtb', + 'mtc' => 'mtc', + 'mtd' => 'mtd', + 'mte' => 'mte', + 'mtf' => 'mtf', + 'mtg' => 'mtg', + 'mth' => 'mth', + 'mti' => 'mti', + 'mtj' => 'mtj', + 'mtk' => 'mtk', + 'mtl' => 'mtl', + 'mtm' => 'mtm', + 'mtn' => 'mtn', + 'mto' => 'mto', + 'mtp' => 'mtp', + 'mtq' => 'mtq', + 'mtr' => 'mtr', + 'mts' => 'mts', + 'mtt' => 'mtt', + 'mtu' => 'mtu', + 'mtv' => 'mtv', + 'mtw' => 'mtw', + 'mtx' => 'mtx', + 'mty' => 'mty', + 'mua' => 'mua', + 'mub' => 'mub', + 'muc' => 'muc', + 'mud' => 'mud', + 'mue' => 'mue', + 'mug' => 'mug', + 'muh' => 'muh', + 'mui' => 'mui', + 'muj' => 'muj', + 'muk' => 'muk', + 'mul' => 'mul', + 'mum' => 'mum', + 'muo' => 'muo', + 'mup' => 'mup', + 'muq' => 'muq', + 'mur' => 'mur', + 'mus' => 'mus', + 'mut' => 'mut', + 'muu' => 'muu', + 'muv' => 'muv', + 'mux' => 'mux', + 'muy' => 'muy', + 'muz' => 'muz', + 'mva' => 'mva', + 'mvb' => 'mvb', + 'mvd' => 'mvd', + 'mve' => 'mve', + 'mvf' => 'mvf', + 'mvg' => 'mvg', + 'mvh' => 'mvh', + 'mvi' => 'mvi', + 'mvk' => 'mvk', + 'mvl' => 'mvl', + 'mvm' => 'mvm', + 'mvn' => 'mvn', + 'mvo' => 'mvo', + 'mvp' => 'mvp', + 'mvq' => 'mvq', + 'mvr' => 'mvr', + 'mvs' => 'mvs', + 'mvt' => 'mvt', + 'mvu' => 'mvu', + 'mvv' => 'mvv', + 'mvw' => 'mvw', + 'mvx' => 'mvx', + 'mvy' => 'mvy', + 'mvz' => 'mvz', + 'mwa' => 'mwa', + 'mwb' => 'mwb', + 'mwc' => 'mwc', + 'mwe' => 'mwe', + 'mwf' => 'mwf', + 'mwg' => 'mwg', + 'mwh' => 'mwh', + 'mwi' => 'mwi', + 'mwk' => 'mwk', + 'mwl' => 'mwl', + 'mwm' => 'mwm', + 'mwn' => 'mwn', + 'mwo' => 'mwo', + 'mwp' => 'mwp', + 'mwq' => 'mwq', + 'mwr' => 'mwr', + 'mws' => 'mws', + 'mwt' => 'mwt', + 'mwu' => 'mwu', + 'mwv' => 'mwv', + 'mww' => 'mww', + 'mwz' => 'mwz', + 'mxa' => 'mxa', + 'mxb' => 'mxb', + 'mxc' => 'mxc', + 'mxd' => 'mxd', + 'mxe' => 'mxe', + 'mxf' => 'mxf', + 'mxg' => 'mxg', + 'mxh' => 'mxh', + 'mxi' => 'mxi', + 'mxj' => 'mxj', + 'mxk' => 'mxk', + 'mxl' => 'mxl', + 'mxm' => 'mxm', + 'mxn' => 'mxn', + 'mxo' => 'mxo', + 'mxp' => 'mxp', + 'mxq' => 'mxq', + 'mxr' => 'mxr', + 'mxs' => 'mxs', + 'mxt' => 'mxt', + 'mxu' => 'mxu', + 'mxv' => 'mxv', + 'mxw' => 'mxw', + 'mxx' => 'mxx', + 'mxy' => 'mxy', + 'mxz' => 'mxz', + 'my' => 'my', + 'mya' => 'my', + 'myb' => 'myb', + 'myc' => 'myc', + 'myd' => 'myd', + 'mye' => 'mye', + 'myf' => 'myf', + 'myg' => 'myg', + 'myh' => 'myh', + 'myi' => 'myi', + 'myj' => 'myj', + 'myk' => 'myk', + 'myl' => 'myl', + 'mym' => 'mym', + 'myo' => 'myo', + 'myp' => 'myp', + 'myr' => 'myr', + 'mys' => 'mys', + 'myu' => 'myu', + 'myv' => 'myv', + 'myw' => 'myw', + 'myx' => 'myx', + 'myy' => 'myy', + 'myz' => 'myz', + 'mza' => 'mza', + 'mzb' => 'mzb', + 'mzc' => 'mzc', + 'mzd' => 'mzd', + 'mze' => 'mze', + 'mzg' => 'mzg', + 'mzh' => 'mzh', + 'mzi' => 'mzi', + 'mzj' => 'mzj', + 'mzk' => 'mzk', + 'mzl' => 'mzl', + 'mzm' => 'mzm', + 'mzn' => 'mzn', + 'mzo' => 'mzo', + 'mzp' => 'mzp', + 'mzq' => 'mzq', + 'mzr' => 'mzr', + 'mzs' => 'mzs', + 'mzt' => 'mzt', + 'mzu' => 'mzu', + 'mzv' => 'mzv', + 'mzw' => 'mzw', + 'mzx' => 'mzx', + 'mzy' => 'mzy', + 'mzz' => 'mzz', + 'naa' => 'naa', + 'nab' => 'nab', + 'nac' => 'nac', + 'nae' => 'nae', + 'naf' => 'naf', + 'nag' => 'nag', + 'naj' => 'naj', + 'nak' => 'nak', + 'nal' => 'nal', + 'nam' => 'nam', + 'nan' => 'nan', + 'nao' => 'nao', + 'nap' => 'nap', + 'naq' => 'naq', + 'nar' => 'nar', + 'nas' => 'nas', + 'nat' => 'nat', + 'na' => 'na', + 'nau' => 'na', + 'nv' => 'nv', + 'nav' => 'nv', + 'naw' => 'naw', + 'nax' => 'nax', + 'nay' => 'nay', + 'naz' => 'naz', + 'nba' => 'nba', + 'nbb' => 'nbb', + 'nbc' => 'nbc', + 'nbd' => 'nbd', + 'nbe' => 'nbe', + 'nbg' => 'nbg', + 'nbh' => 'nbh', + 'nbi' => 'nbi', + 'nbj' => 'nbj', + 'nbk' => 'nbk', + 'nr' => 'nr', + 'nbl' => 'nr', + 'nbm' => 'nbm', + 'nbn' => 'nbn', + 'nbo' => 'nbo', + 'nbp' => 'nbp', + 'nbq' => 'nbq', + 'nbr' => 'nbr', + 'nbs' => 'nbs', + 'nbt' => 'nbt', + 'nbu' => 'nbu', + 'nbv' => 'nbv', + 'nbw' => 'nbw', + 'nby' => 'nby', + 'nca' => 'nca', + 'ncb' => 'ncb', + 'ncc' => 'ncc', + 'ncd' => 'ncd', + 'nce' => 'nce', + 'ncf' => 'ncf', + 'ncg' => 'ncg', + 'nch' => 'nch', + 'nci' => 'nci', + 'ncj' => 'ncj', + 'nck' => 'nck', + 'ncl' => 'ncl', + 'ncm' => 'ncm', + 'ncn' => 'ncn', + 'nco' => 'nco', + 'ncq' => 'ncq', + 'ncr' => 'ncr', + 'ncs' => 'ncs', + 'nct' => 'nct', + 'ncu' => 'ncu', + 'ncx' => 'ncx', + 'ncz' => 'ncz', + 'nda' => 'nda', + 'ndb' => 'ndb', + 'ndc' => 'ndc', + 'ndd' => 'ndd', + 'nd' => 'nd', + 'nde' => 'nd', + 'ndf' => 'ndf', + 'ndg' => 'ndg', + 'ndh' => 'ndh', + 'ndi' => 'ndi', + 'ndj' => 'ndj', + 'ndk' => 'ndk', + 'ndl' => 'ndl', + 'ndm' => 'ndm', + 'ndn' => 'ndn', + 'ng' => 'ng', + 'ndo' => 'ng', + 'ndp' => 'ndp', + 'ndq' => 'ndq', + 'ndr' => 'ndr', + 'nds' => 'nds', + 'ndt' => 'ndt', + 'ndu' => 'ndu', + 'ndv' => 'ndv', + 'ndw' => 'ndw', + 'ndx' => 'ndx', + 'ndy' => 'ndy', + 'ndz' => 'ndz', + 'nea' => 'nea', + 'neb' => 'neb', + 'nec' => 'nec', + 'ned' => 'ned', + 'nee' => 'nee', + 'nef' => 'nef', + 'neg' => 'neg', + 'neh' => 'neh', + 'nei' => 'nei', + 'nej' => 'nej', + 'nek' => 'nek', + 'nem' => 'nem', + 'nen' => 'nen', + 'neo' => 'neo', + 'ne' => 'ne', + 'nep' => 'ne', + 'neq' => 'neq', + 'ner' => 'ner', + 'nes' => 'nes', + 'net' => 'net', + 'neu' => 'neu', + 'nev' => 'nev', + 'new' => 'new', + 'nex' => 'nex', + 'ney' => 'ney', + 'nez' => 'nez', + 'nfa' => 'nfa', + 'nfd' => 'nfd', + 'nfl' => 'nfl', + 'nfr' => 'nfr', + 'nfu' => 'nfu', + 'nga' => 'nga', + 'ngb' => 'ngb', + 'ngc' => 'ngc', + 'ngd' => 'ngd', + 'nge' => 'nge', + 'ngg' => 'ngg', + 'ngh' => 'ngh', + 'ngi' => 'ngi', + 'ngj' => 'ngj', + 'ngk' => 'ngk', + 'ngl' => 'ngl', + 'ngm' => 'ngm', + 'ngn' => 'ngn', + 'ngo' => 'ngo', + 'ngp' => 'ngp', + 'ngq' => 'ngq', + 'ngr' => 'ngr', + 'ngs' => 'ngs', + 'ngt' => 'ngt', + 'ngu' => 'ngu', + 'ngv' => 'ngv', + 'ngw' => 'ngw', + 'ngx' => 'ngx', + 'ngy' => 'ngy', + 'ngz' => 'ngz', + 'nha' => 'nha', + 'nhb' => 'nhb', + 'nhc' => 'nhc', + 'nhd' => 'nhd', + 'nhe' => 'nhe', + 'nhf' => 'nhf', + 'nhg' => 'nhg', + 'nhh' => 'nhh', + 'nhi' => 'nhi', + 'nhk' => 'nhk', + 'nhm' => 'nhm', + 'nhn' => 'nhn', + 'nho' => 'nho', + 'nhp' => 'nhp', + 'nhq' => 'nhq', + 'nhr' => 'nhr', + 'nht' => 'nht', + 'nhu' => 'nhu', + 'nhv' => 'nhv', + 'nhw' => 'nhw', + 'nhx' => 'nhx', + 'nhy' => 'nhy', + 'nhz' => 'nhz', + 'nia' => 'nia', + 'nib' => 'nib', + 'nid' => 'nid', + 'nie' => 'nie', + 'nif' => 'nif', + 'nig' => 'nig', + 'nih' => 'nih', + 'nii' => 'nii', + 'nij' => 'nij', + 'nik' => 'nik', + 'nil' => 'nil', + 'nim' => 'nim', + 'nin' => 'nin', + 'nio' => 'nio', + 'niq' => 'niq', + 'nir' => 'nir', + 'nis' => 'nis', + 'nit' => 'nit', + 'niu' => 'niu', + 'niv' => 'niv', + 'niw' => 'niw', + 'nix' => 'nix', + 'niy' => 'niy', + 'niz' => 'niz', + 'nja' => 'nja', + 'njb' => 'njb', + 'njd' => 'njd', + 'njh' => 'njh', + 'nji' => 'nji', + 'njj' => 'njj', + 'njl' => 'njl', + 'njm' => 'njm', + 'njn' => 'njn', + 'njo' => 'njo', + 'njr' => 'njr', + 'njs' => 'njs', + 'njt' => 'njt', + 'nju' => 'nju', + 'njx' => 'njx', + 'njy' => 'njy', + 'njz' => 'njz', + 'nka' => 'nka', + 'nkb' => 'nkb', + 'nkc' => 'nkc', + 'nkd' => 'nkd', + 'nke' => 'nke', + 'nkf' => 'nkf', + 'nkg' => 'nkg', + 'nkh' => 'nkh', + 'nki' => 'nki', + 'nkj' => 'nkj', + 'nkk' => 'nkk', + 'nkm' => 'nkm', + 'nkn' => 'nkn', + 'nko' => 'nko', + 'nkp' => 'nkp', + 'nkq' => 'nkq', + 'nkr' => 'nkr', + 'nks' => 'nks', + 'nkt' => 'nkt', + 'nku' => 'nku', + 'nkv' => 'nkv', + 'nkw' => 'nkw', + 'nkx' => 'nkx', + 'nkz' => 'nkz', + 'nla' => 'nla', + 'nlc' => 'nlc', + 'nl' => 'nl', + 'nld' => 'nl', + 'nle' => 'nle', + 'nlg' => 'nlg', + 'nli' => 'nli', + 'nlj' => 'nlj', + 'nlk' => 'nlk', + 'nll' => 'nll', + 'nlm' => 'nlm', + 'nlo' => 'nlo', + 'nlq' => 'nlq', + 'nlu' => 'nlu', + 'nlv' => 'nlv', + 'nlw' => 'nlw', + 'nlx' => 'nlx', + 'nly' => 'nly', + 'nlz' => 'nlz', + 'nma' => 'nma', + 'nmb' => 'nmb', + 'nmc' => 'nmc', + 'nmd' => 'nmd', + 'nme' => 'nme', + 'nmf' => 'nmf', + 'nmg' => 'nmg', + 'nmh' => 'nmh', + 'nmi' => 'nmi', + 'nmj' => 'nmj', + 'nmk' => 'nmk', + 'nml' => 'nml', + 'nmm' => 'nmm', + 'nmn' => 'nmn', + 'nmo' => 'nmo', + 'nmp' => 'nmp', + 'nmq' => 'nmq', + 'nmr' => 'nmr', + 'nms' => 'nms', + 'nmt' => 'nmt', + 'nmu' => 'nmu', + 'nmv' => 'nmv', + 'nmw' => 'nmw', + 'nmx' => 'nmx', + 'nmy' => 'nmy', + 'nmz' => 'nmz', + 'nna' => 'nna', + 'nnb' => 'nnb', + 'nnc' => 'nnc', + 'nnd' => 'nnd', + 'nne' => 'nne', + 'nnf' => 'nnf', + 'nng' => 'nng', + 'nnh' => 'nnh', + 'nni' => 'nni', + 'nnj' => 'nnj', + 'nnk' => 'nnk', + 'nnl' => 'nnl', + 'nnm' => 'nnm', + 'nnn' => 'nnn', + 'nn' => 'nn', + 'nno' => 'nn', + 'nnp' => 'nnp', + 'nnq' => 'nnq', + 'nnr' => 'nnr', + 'nns' => 'nns', + 'nnt' => 'nnt', + 'nnu' => 'nnu', + 'nnv' => 'nnv', + 'nnw' => 'nnw', + 'nny' => 'nny', + 'nnz' => 'nnz', + 'noa' => 'noa', + 'nb' => 'nb', + 'nob' => 'nb', + 'noc' => 'noc', + 'nod' => 'nod', + 'noe' => 'noe', + 'nof' => 'nof', + 'nog' => 'nog', + 'noh' => 'noh', + 'noi' => 'noi', + 'noj' => 'noj', + 'nok' => 'nok', + 'nol' => 'nol', + 'nom' => 'nom', + 'non' => 'non', + 'nop' => 'nop', + 'noq' => 'noq', + 'no' => 'no', + 'nor' => 'no', + 'nos' => 'nos', + 'not' => 'not', + 'nou' => 'nou', + 'nov' => 'nov', + 'now' => 'now', + 'noy' => 'noy', + 'noz' => 'noz', + 'npa' => 'npa', + 'npb' => 'npb', + 'npg' => 'npg', + 'nph' => 'nph', + 'npi' => 'npi', + 'npl' => 'npl', + 'npn' => 'npn', + 'npo' => 'npo', + 'nps' => 'nps', + 'npu' => 'npu', + 'npx' => 'npx', + 'npy' => 'npy', + 'nqg' => 'nqg', + 'nqk' => 'nqk', + 'nql' => 'nql', + 'nqm' => 'nqm', + 'nqn' => 'nqn', + 'nqo' => 'nqo', + 'nqq' => 'nqq', + 'nqy' => 'nqy', + 'nra' => 'nra', + 'nrb' => 'nrb', + 'nrc' => 'nrc', + 'nre' => 'nre', + 'nrf' => 'nrf', + 'nrg' => 'nrg', + 'nri' => 'nri', + 'nrk' => 'nrk', + 'nrl' => 'nrl', + 'nrm' => 'nrm', + 'nrn' => 'nrn', + 'nrp' => 'nrp', + 'nrr' => 'nrr', + 'nrt' => 'nrt', + 'nru' => 'nru', + 'nrx' => 'nrx', + 'nrz' => 'nrz', + 'nsa' => 'nsa', + 'nsc' => 'nsc', + 'nsd' => 'nsd', + 'nse' => 'nse', + 'nsf' => 'nsf', + 'nsg' => 'nsg', + 'nsh' => 'nsh', + 'nsi' => 'nsi', + 'nsk' => 'nsk', + 'nsl' => 'nsl', + 'nsm' => 'nsm', + 'nsn' => 'nsn', + 'nso' => 'nso', + 'nsp' => 'nsp', + 'nsq' => 'nsq', + 'nsr' => 'nsr', + 'nss' => 'nss', + 'nst' => 'nst', + 'nsu' => 'nsu', + 'nsv' => 'nsv', + 'nsw' => 'nsw', + 'nsx' => 'nsx', + 'nsy' => 'nsy', + 'nsz' => 'nsz', + 'ntd' => 'ntd', + 'nte' => 'nte', + 'ntg' => 'ntg', + 'nti' => 'nti', + 'ntj' => 'ntj', + 'ntk' => 'ntk', + 'ntm' => 'ntm', + 'nto' => 'nto', + 'ntp' => 'ntp', + 'ntr' => 'ntr', + 'ntu' => 'ntu', + 'ntw' => 'ntw', + 'ntx' => 'ntx', + 'nty' => 'nty', + 'ntz' => 'ntz', + 'nua' => 'nua', + 'nuc' => 'nuc', + 'nud' => 'nud', + 'nue' => 'nue', + 'nuf' => 'nuf', + 'nug' => 'nug', + 'nuh' => 'nuh', + 'nui' => 'nui', + 'nuj' => 'nuj', + 'nuk' => 'nuk', + 'nul' => 'nul', + 'num' => 'num', + 'nun' => 'nun', + 'nuo' => 'nuo', + 'nup' => 'nup', + 'nuq' => 'nuq', + 'nur' => 'nur', + 'nus' => 'nus', + 'nut' => 'nut', + 'nuu' => 'nuu', + 'nuv' => 'nuv', + 'nuw' => 'nuw', + 'nux' => 'nux', + 'nuy' => 'nuy', + 'nuz' => 'nuz', + 'nvh' => 'nvh', + 'nvm' => 'nvm', + 'nvo' => 'nvo', + 'nwa' => 'nwa', + 'nwb' => 'nwb', + 'nwc' => 'nwc', + 'nwe' => 'nwe', + 'nwg' => 'nwg', + 'nwi' => 'nwi', + 'nwm' => 'nwm', + 'nwo' => 'nwo', + 'nwr' => 'nwr', + 'nwx' => 'nwx', + 'nwy' => 'nwy', + 'nxa' => 'nxa', + 'nxd' => 'nxd', + 'nxe' => 'nxe', + 'nxg' => 'nxg', + 'nxi' => 'nxi', + 'nxk' => 'nxk', + 'nxl' => 'nxl', + 'nxm' => 'nxm', + 'nxn' => 'nxn', + 'nxo' => 'nxo', + 'nxq' => 'nxq', + 'nxr' => 'nxr', + 'nxu' => 'nxu', + 'nxx' => 'nxx', + 'ny' => 'ny', + 'nya' => 'ny', + 'nyb' => 'nyb', + 'nyc' => 'nyc', + 'nyd' => 'nyd', + 'nye' => 'nye', + 'nyf' => 'nyf', + 'nyg' => 'nyg', + 'nyh' => 'nyh', + 'nyi' => 'nyi', + 'nyj' => 'nyj', + 'nyk' => 'nyk', + 'nyl' => 'nyl', + 'nym' => 'nym', + 'nyn' => 'nyn', + 'nyo' => 'nyo', + 'nyp' => 'nyp', + 'nyq' => 'nyq', + 'nyr' => 'nyr', + 'nys' => 'nys', + 'nyt' => 'nyt', + 'nyu' => 'nyu', + 'nyv' => 'nyv', + 'nyw' => 'nyw', + 'nyx' => 'nyx', + 'nyy' => 'nyy', + 'nza' => 'nza', + 'nzb' => 'nzb', + 'nzd' => 'nzd', + 'nzi' => 'nzi', + 'nzk' => 'nzk', + 'nzm' => 'nzm', + 'nzs' => 'nzs', + 'nzu' => 'nzu', + 'nzy' => 'nzy', + 'nzz' => 'nzz', + 'oaa' => 'oaa', + 'oac' => 'oac', + 'oar' => 'oar', + 'oav' => 'oav', + 'obi' => 'obi', + 'obk' => 'obk', + 'obl' => 'obl', + 'obm' => 'obm', + 'obo' => 'obo', + 'obr' => 'obr', + 'obt' => 'obt', + 'obu' => 'obu', + 'oca' => 'oca', + 'och' => 'och', + 'oc' => 'oc', + 'oci' => 'oc', + 'oco' => 'oco', + 'ocu' => 'ocu', + 'oda' => 'oda', + 'odk' => 'odk', + 'odt' => 'odt', + 'odu' => 'odu', + 'ofo' => 'ofo', + 'ofs' => 'ofs', + 'ofu' => 'ofu', + 'ogb' => 'ogb', + 'ogc' => 'ogc', + 'oge' => 'oge', + 'ogg' => 'ogg', + 'ogo' => 'ogo', + 'ogu' => 'ogu', + 'oht' => 'oht', + 'ohu' => 'ohu', + 'oia' => 'oia', + 'oin' => 'oin', + 'ojb' => 'ojb', + 'ojc' => 'ojc', + 'ojg' => 'ojg', + 'oj' => 'oj', + 'oji' => 'oj', + 'ojp' => 'ojp', + 'ojs' => 'ojs', + 'ojv' => 'ojv', + 'ojw' => 'ojw', + 'oka' => 'oka', + 'okb' => 'okb', + 'okd' => 'okd', + 'oke' => 'oke', + 'okg' => 'okg', + 'okh' => 'okh', + 'oki' => 'oki', + 'okj' => 'okj', + 'okk' => 'okk', + 'okl' => 'okl', + 'okm' => 'okm', + 'okn' => 'okn', + 'oko' => 'oko', + 'okr' => 'okr', + 'oks' => 'oks', + 'oku' => 'oku', + 'okv' => 'okv', + 'okx' => 'okx', + 'ola' => 'ola', + 'old' => 'old', + 'ole' => 'ole', + 'olk' => 'olk', + 'olm' => 'olm', + 'olo' => 'olo', + 'olr' => 'olr', + 'olt' => 'olt', + 'olu' => 'olu', + 'oma' => 'oma', + 'omb' => 'omb', + 'omc' => 'omc', + 'omg' => 'omg', + 'omi' => 'omi', + 'omk' => 'omk', + 'oml' => 'oml', + 'omn' => 'omn', + 'omo' => 'omo', + 'omp' => 'omp', + 'omr' => 'omr', + 'omt' => 'omt', + 'omu' => 'omu', + 'omw' => 'omw', + 'omx' => 'omx', + 'ona' => 'ona', + 'onb' => 'onb', + 'one' => 'one', + 'ong' => 'ong', + 'oni' => 'oni', + 'onj' => 'onj', + 'onk' => 'onk', + 'onn' => 'onn', + 'ono' => 'ono', + 'onp' => 'onp', + 'onr' => 'onr', + 'ons' => 'ons', + 'ont' => 'ont', + 'onu' => 'onu', + 'onw' => 'onw', + 'onx' => 'onx', + 'ood' => 'ood', + 'oog' => 'oog', + 'oon' => 'oon', + 'oor' => 'oor', + 'oos' => 'oos', + 'opa' => 'opa', + 'opk' => 'opk', + 'opm' => 'opm', + 'opo' => 'opo', + 'opt' => 'opt', + 'opy' => 'opy', + 'ora' => 'ora', + 'orc' => 'orc', + 'ore' => 'ore', + 'org' => 'org', + 'orh' => 'orh', + 'or' => 'or', + 'ori' => 'or', + 'om' => 'om', + 'orm' => 'om', + 'orn' => 'orn', + 'oro' => 'oro', + 'orr' => 'orr', + 'ors' => 'ors', + 'ort' => 'ort', + 'oru' => 'oru', + 'orv' => 'orv', + 'orw' => 'orw', + 'orx' => 'orx', + 'ory' => 'ory', + 'orz' => 'orz', + 'osa' => 'osa', + 'osc' => 'osc', + 'osi' => 'osi', + 'oso' => 'oso', + 'osp' => 'osp', + 'os' => 'os', + 'oss' => 'os', + 'ost' => 'ost', + 'osu' => 'osu', + 'osx' => 'osx', + 'ota' => 'ota', + 'otb' => 'otb', + 'otd' => 'otd', + 'ote' => 'ote', + 'oti' => 'oti', + 'otk' => 'otk', + 'otl' => 'otl', + 'otm' => 'otm', + 'otn' => 'otn', + 'otq' => 'otq', + 'otr' => 'otr', + 'ots' => 'ots', + 'ott' => 'ott', + 'otu' => 'otu', + 'otw' => 'otw', + 'otx' => 'otx', + 'oty' => 'oty', + 'otz' => 'otz', + 'oua' => 'oua', + 'oub' => 'oub', + 'oue' => 'oue', + 'oui' => 'oui', + 'oum' => 'oum', + 'ovd' => 'ovd', + 'owi' => 'owi', + 'owl' => 'owl', + 'oyb' => 'oyb', + 'oyd' => 'oyd', + 'oym' => 'oym', + 'oyy' => 'oyy', + 'ozm' => 'ozm', + 'pab' => 'pab', + 'pac' => 'pac', + 'pad' => 'pad', + 'pae' => 'pae', + 'paf' => 'paf', + 'pag' => 'pag', + 'pah' => 'pah', + 'pai' => 'pai', + 'pak' => 'pak', + 'pal' => 'pal', + 'pam' => 'pam', + 'pa' => 'pa', + 'pan' => 'pa', + 'pao' => 'pao', + 'pap' => 'pap', + 'paq' => 'paq', + 'par' => 'par', + 'pas' => 'pas', + 'pat' => 'pat', + 'pau' => 'pau', + 'pav' => 'pav', + 'paw' => 'paw', + 'pax' => 'pax', + 'pay' => 'pay', + 'paz' => 'paz', + 'pbb' => 'pbb', + 'pbc' => 'pbc', + 'pbe' => 'pbe', + 'pbf' => 'pbf', + 'pbg' => 'pbg', + 'pbh' => 'pbh', + 'pbi' => 'pbi', + 'pbl' => 'pbl', + 'pbm' => 'pbm', + 'pbn' => 'pbn', + 'pbo' => 'pbo', + 'pbp' => 'pbp', + 'pbr' => 'pbr', + 'pbs' => 'pbs', + 'pbt' => 'pbt', + 'pbu' => 'pbu', + 'pbv' => 'pbv', + 'pby' => 'pby', + 'pca' => 'pca', + 'pcb' => 'pcb', + 'pcc' => 'pcc', + 'pcd' => 'pcd', + 'pce' => 'pce', + 'pcf' => 'pcf', + 'pcg' => 'pcg', + 'pch' => 'pch', + 'pci' => 'pci', + 'pcj' => 'pcj', + 'pck' => 'pck', + 'pcl' => 'pcl', + 'pcm' => 'pcm', + 'pcn' => 'pcn', + 'pcp' => 'pcp', + 'pcw' => 'pcw', + 'pda' => 'pda', + 'pdc' => 'pdc', + 'pdi' => 'pdi', + 'pdn' => 'pdn', + 'pdo' => 'pdo', + 'pdt' => 'pdt', + 'pdu' => 'pdu', + 'pea' => 'pea', + 'peb' => 'peb', + 'ped' => 'ped', + 'pee' => 'pee', + 'pef' => 'pef', + 'peg' => 'peg', + 'peh' => 'peh', + 'pei' => 'pei', + 'pej' => 'pej', + 'pek' => 'pek', + 'pel' => 'pel', + 'pem' => 'pem', + 'peo' => 'peo', + 'pep' => 'pep', + 'peq' => 'peq', + 'pes' => 'pes', + 'pev' => 'pev', + 'pex' => 'pex', + 'pey' => 'pey', + 'pez' => 'pez', + 'pfa' => 'pfa', + 'pfe' => 'pfe', + 'pfl' => 'pfl', + 'pga' => 'pga', + 'pgd' => 'pgd', + 'pgg' => 'pgg', + 'pgi' => 'pgi', + 'pgk' => 'pgk', + 'pgl' => 'pgl', + 'pgn' => 'pgn', + 'pgs' => 'pgs', + 'pgu' => 'pgu', + 'pgz' => 'pgz', + 'pha' => 'pha', + 'phd' => 'phd', + 'phg' => 'phg', + 'phh' => 'phh', + 'phk' => 'phk', + 'phl' => 'phl', + 'phm' => 'phm', + 'phn' => 'phn', + 'pho' => 'pho', + 'phq' => 'phq', + 'phr' => 'phr', + 'pht' => 'pht', + 'phu' => 'phu', + 'phv' => 'phv', + 'phw' => 'phw', + 'pia' => 'pia', + 'pib' => 'pib', + 'pic' => 'pic', + 'pid' => 'pid', + 'pie' => 'pie', + 'pif' => 'pif', + 'pig' => 'pig', + 'pih' => 'pih', + 'pii' => 'pii', + 'pij' => 'pij', + 'pil' => 'pil', + 'pim' => 'pim', + 'pin' => 'pin', + 'pio' => 'pio', + 'pip' => 'pip', + 'pir' => 'pir', + 'pis' => 'pis', + 'pit' => 'pit', + 'piu' => 'piu', + 'piv' => 'piv', + 'piw' => 'piw', + 'pix' => 'pix', + 'piy' => 'piy', + 'piz' => 'piz', + 'pjt' => 'pjt', + 'pka' => 'pka', + 'pkb' => 'pkb', + 'pkc' => 'pkc', + 'pkg' => 'pkg', + 'pkh' => 'pkh', + 'pkn' => 'pkn', + 'pko' => 'pko', + 'pkp' => 'pkp', + 'pkr' => 'pkr', + 'pks' => 'pks', + 'pkt' => 'pkt', + 'pku' => 'pku', + 'pla' => 'pla', + 'plb' => 'plb', + 'plc' => 'plc', + 'pld' => 'pld', + 'ple' => 'ple', + 'plg' => 'plg', + 'plh' => 'plh', + 'pi' => 'pi', + 'pli' => 'pi', + 'plj' => 'plj', + 'plk' => 'plk', + 'pll' => 'pll', + 'pln' => 'pln', + 'plo' => 'plo', + 'plp' => 'plp', + 'plq' => 'plq', + 'plr' => 'plr', + 'pls' => 'pls', + 'plt' => 'plt', + 'plu' => 'plu', + 'plv' => 'plv', + 'plw' => 'plw', + 'ply' => 'ply', + 'plz' => 'plz', + 'pma' => 'pma', + 'pmb' => 'pmb', + 'pmd' => 'pmd', + 'pme' => 'pme', + 'pmf' => 'pmf', + 'pmh' => 'pmh', + 'pmi' => 'pmi', + 'pmj' => 'pmj', + 'pmk' => 'pmk', + 'pml' => 'pml', + 'pmm' => 'pmm', + 'pmn' => 'pmn', + 'pmo' => 'pmo', + 'pmq' => 'pmq', + 'pmr' => 'pmr', + 'pms' => 'pms', + 'pmt' => 'pmt', + 'pmw' => 'pmw', + 'pmx' => 'pmx', + 'pmy' => 'pmy', + 'pmz' => 'pmz', + 'pna' => 'pna', + 'pnb' => 'pnb', + 'pnc' => 'pnc', + 'pne' => 'pne', + 'png' => 'png', + 'pnh' => 'pnh', + 'pni' => 'pni', + 'pnj' => 'pnj', + 'pnk' => 'pnk', + 'pnl' => 'pnl', + 'pnm' => 'pnm', + 'pnn' => 'pnn', + 'pno' => 'pno', + 'pnp' => 'pnp', + 'pnq' => 'pnq', + 'pnr' => 'pnr', + 'pns' => 'pns', + 'pnt' => 'pnt', + 'pnu' => 'pnu', + 'pnv' => 'pnv', + 'pnw' => 'pnw', + 'pnx' => 'pnx', + 'pny' => 'pny', + 'pnz' => 'pnz', + 'poc' => 'poc', + 'poe' => 'poe', + 'pof' => 'pof', + 'pog' => 'pog', + 'poh' => 'poh', + 'poi' => 'poi', + 'pok' => 'pok', + 'pl' => 'pl', + 'pol' => 'pl', + 'pom' => 'pom', + 'pon' => 'pon', + 'poo' => 'poo', + 'pop' => 'pop', + 'poq' => 'poq', + 'pt' => 'pt', + 'por' => 'pt', + 'pos' => 'pos', + 'pot' => 'pot', + 'pov' => 'pov', + 'pow' => 'pow', + 'pox' => 'pox', + 'poy' => 'poy', + 'ppe' => 'ppe', + 'ppi' => 'ppi', + 'ppk' => 'ppk', + 'ppl' => 'ppl', + 'ppm' => 'ppm', + 'ppn' => 'ppn', + 'ppo' => 'ppo', + 'ppp' => 'ppp', + 'ppq' => 'ppq', + 'pps' => 'pps', + 'ppt' => 'ppt', + 'ppu' => 'ppu', + 'pqa' => 'pqa', + 'pqm' => 'pqm', + 'prc' => 'prc', + 'prd' => 'prd', + 'pre' => 'pre', + 'prf' => 'prf', + 'prg' => 'prg', + 'prh' => 'prh', + 'pri' => 'pri', + 'prk' => 'prk', + 'prl' => 'prl', + 'prm' => 'prm', + 'prn' => 'prn', + 'pro' => 'pro', + 'prp' => 'prp', + 'prq' => 'prq', + 'prr' => 'prr', + 'prs' => 'prs', + 'prt' => 'prt', + 'pru' => 'pru', + 'prw' => 'prw', + 'prx' => 'prx', + 'prz' => 'prz', + 'psa' => 'psa', + 'psc' => 'psc', + 'psd' => 'psd', + 'pse' => 'pse', + 'psg' => 'psg', + 'psh' => 'psh', + 'psi' => 'psi', + 'psl' => 'psl', + 'psm' => 'psm', + 'psn' => 'psn', + 'pso' => 'pso', + 'psp' => 'psp', + 'psq' => 'psq', + 'psr' => 'psr', + 'pss' => 'pss', + 'pst' => 'pst', + 'psu' => 'psu', + 'psw' => 'psw', + 'psy' => 'psy', + 'pta' => 'pta', + 'pth' => 'pth', + 'pti' => 'pti', + 'ptn' => 'ptn', + 'pto' => 'pto', + 'ptp' => 'ptp', + 'ptq' => 'ptq', + 'ptr' => 'ptr', + 'ptt' => 'ptt', + 'ptu' => 'ptu', + 'ptv' => 'ptv', + 'ptw' => 'ptw', + 'pty' => 'pty', + 'pua' => 'pua', + 'pub' => 'pub', + 'puc' => 'puc', + 'pud' => 'pud', + 'pue' => 'pue', + 'puf' => 'puf', + 'pug' => 'pug', + 'pui' => 'pui', + 'puj' => 'puj', + 'pum' => 'pum', + 'puo' => 'puo', + 'pup' => 'pup', + 'puq' => 'puq', + 'pur' => 'pur', + 'ps' => 'ps', + 'pus' => 'ps', + 'put' => 'put', + 'puu' => 'puu', + 'puw' => 'puw', + 'pux' => 'pux', + 'puy' => 'puy', + 'pwa' => 'pwa', + 'pwb' => 'pwb', + 'pwg' => 'pwg', + 'pwi' => 'pwi', + 'pwm' => 'pwm', + 'pwn' => 'pwn', + 'pwo' => 'pwo', + 'pwr' => 'pwr', + 'pww' => 'pww', + 'pxm' => 'pxm', + 'pye' => 'pye', + 'pym' => 'pym', + 'pyn' => 'pyn', + 'pys' => 'pys', + 'pyu' => 'pyu', + 'pyx' => 'pyx', + 'pyy' => 'pyy', + 'pzn' => 'pzn', + 'qua' => 'qua', + 'qub' => 'qub', + 'quc' => 'quc', + 'qud' => 'qud', + 'qu' => 'qu', + 'que' => 'qu', + 'quf' => 'quf', + 'qug' => 'qug', + 'quh' => 'quh', + 'qui' => 'qui', + 'quk' => 'quk', + 'qul' => 'qul', + 'qum' => 'qum', + 'qun' => 'qun', + 'qup' => 'qup', + 'quq' => 'quq', + 'qur' => 'qur', + 'qus' => 'qus', + 'quv' => 'quv', + 'quw' => 'quw', + 'qux' => 'qux', + 'quy' => 'quy', + 'quz' => 'quz', + 'qva' => 'qva', + 'qvc' => 'qvc', + 'qve' => 'qve', + 'qvh' => 'qvh', + 'qvi' => 'qvi', + 'qvj' => 'qvj', + 'qvl' => 'qvl', + 'qvm' => 'qvm', + 'qvn' => 'qvn', + 'qvo' => 'qvo', + 'qvp' => 'qvp', + 'qvs' => 'qvs', + 'qvw' => 'qvw', + 'qvy' => 'qvy', + 'qvz' => 'qvz', + 'qwa' => 'qwa', + 'qwc' => 'qwc', + 'qwh' => 'qwh', + 'qwm' => 'qwm', + 'qws' => 'qws', + 'qwt' => 'qwt', + 'qxa' => 'qxa', + 'qxc' => 'qxc', + 'qxh' => 'qxh', + 'qxl' => 'qxl', + 'qxn' => 'qxn', + 'qxo' => 'qxo', + 'qxp' => 'qxp', + 'qxq' => 'qxq', + 'qxr' => 'qxr', + 'qxs' => 'qxs', + 'qxt' => 'qxt', + 'qxu' => 'qxu', + 'qxw' => 'qxw', + 'qya' => 'qya', + 'qyp' => 'qyp', + 'raa' => 'raa', + 'rab' => 'rab', + 'rac' => 'rac', + 'rad' => 'rad', + 'raf' => 'raf', + 'rag' => 'rag', + 'rah' => 'rah', + 'rai' => 'rai', + 'raj' => 'raj', + 'rak' => 'rak', + 'ral' => 'ral', + 'ram' => 'ram', + 'ran' => 'ran', + 'rao' => 'rao', + 'rap' => 'rap', + 'raq' => 'raq', + 'rar' => 'rar', + 'ras' => 'ras', + 'rat' => 'rat', + 'rau' => 'rau', + 'rav' => 'rav', + 'raw' => 'raw', + 'rax' => 'rax', + 'ray' => 'ray', + 'raz' => 'raz', + 'rbb' => 'rbb', + 'rbk' => 'rbk', + 'rbl' => 'rbl', + 'rbp' => 'rbp', + 'rcf' => 'rcf', + 'rdb' => 'rdb', + 'rea' => 'rea', + 'reb' => 'reb', + 'ree' => 'ree', + 'reg' => 'reg', + 'rei' => 'rei', + 'rej' => 'rej', + 'rel' => 'rel', + 'rem' => 'rem', + 'ren' => 'ren', + 'rer' => 'rer', + 'res' => 'res', + 'ret' => 'ret', + 'rey' => 'rey', + 'rga' => 'rga', + 'rge' => 'rge', + 'rgk' => 'rgk', + 'rgn' => 'rgn', + 'rgr' => 'rgr', + 'rgs' => 'rgs', + 'rgu' => 'rgu', + 'rhg' => 'rhg', + 'rhp' => 'rhp', + 'ria' => 'ria', + 'rif' => 'rif', + 'ril' => 'ril', + 'rim' => 'rim', + 'rin' => 'rin', + 'rir' => 'rir', + 'rit' => 'rit', + 'riu' => 'riu', + 'rjg' => 'rjg', + 'rji' => 'rji', + 'rjs' => 'rjs', + 'rka' => 'rka', + 'rkb' => 'rkb', + 'rkh' => 'rkh', + 'rki' => 'rki', + 'rkm' => 'rkm', + 'rkt' => 'rkt', + 'rkw' => 'rkw', + 'rma' => 'rma', + 'rmb' => 'rmb', + 'rmc' => 'rmc', + 'rmd' => 'rmd', + 'rme' => 'rme', + 'rmf' => 'rmf', + 'rmg' => 'rmg', + 'rmh' => 'rmh', + 'rmi' => 'rmi', + 'rmk' => 'rmk', + 'rml' => 'rml', + 'rmm' => 'rmm', + 'rmn' => 'rmn', + 'rmo' => 'rmo', + 'rmp' => 'rmp', + 'rmq' => 'rmq', + 'rms' => 'rms', + 'rmt' => 'rmt', + 'rmu' => 'rmu', + 'rmv' => 'rmv', + 'rmw' => 'rmw', + 'rmx' => 'rmx', + 'rmy' => 'rmy', + 'rmz' => 'rmz', + 'rnd' => 'rnd', + 'rng' => 'rng', + 'rnl' => 'rnl', + 'rnn' => 'rnn', + 'rnp' => 'rnp', + 'rnr' => 'rnr', + 'rnw' => 'rnw', + 'rob' => 'rob', + 'roc' => 'roc', + 'rod' => 'rod', + 'roe' => 'roe', + 'rof' => 'rof', + 'rog' => 'rog', + 'rm' => 'rm', + 'roh' => 'rm', + 'rol' => 'rol', + 'rom' => 'rom', + 'ro' => 'ro', + 'ron' => 'ro', + 'roo' => 'roo', + 'rop' => 'rop', + 'ror' => 'ror', + 'rou' => 'rou', + 'row' => 'row', + 'rpn' => 'rpn', + 'rpt' => 'rpt', + 'rri' => 'rri', + 'rro' => 'rro', + 'rrt' => 'rrt', + 'rsb' => 'rsb', + 'rsl' => 'rsl', + 'rsm' => 'rsm', + 'rtc' => 'rtc', + 'rth' => 'rth', + 'rtm' => 'rtm', + 'rts' => 'rts', + 'rtw' => 'rtw', + 'rub' => 'rub', + 'ruc' => 'ruc', + 'rue' => 'rue', + 'ruf' => 'ruf', + 'rug' => 'rug', + 'ruh' => 'ruh', + 'rui' => 'rui', + 'ruk' => 'ruk', + 'rn' => 'rn', + 'run' => 'rn', + 'ruo' => 'ruo', + 'rup' => 'rup', + 'ruq' => 'ruq', + 'ru' => 'ru', + 'rus' => 'ru', + 'rut' => 'rut', + 'ruu' => 'ruu', + 'ruy' => 'ruy', + 'ruz' => 'ruz', + 'rwa' => 'rwa', + 'rwk' => 'rwk', + 'rwm' => 'rwm', + 'rwo' => 'rwo', + 'rwr' => 'rwr', + 'rxd' => 'rxd', + 'rxw' => 'rxw', + 'ryn' => 'ryn', + 'rys' => 'rys', + 'ryu' => 'ryu', + 'rzh' => 'rzh', + 'saa' => 'saa', + 'sab' => 'sab', + 'sac' => 'sac', + 'sad' => 'sad', + 'sae' => 'sae', + 'saf' => 'saf', + 'sg' => 'sg', + 'sag' => 'sg', + 'sah' => 'sah', + 'saj' => 'saj', + 'sak' => 'sak', + 'sam' => 'sam', + 'sa' => 'sa', + 'san' => 'sa', + 'sao' => 'sao', + 'saq' => 'saq', + 'sar' => 'sar', + 'sas' => 'sas', + 'sat' => 'sat', + 'sau' => 'sau', + 'sav' => 'sav', + 'saw' => 'saw', + 'sax' => 'sax', + 'say' => 'say', + 'saz' => 'saz', + 'sba' => 'sba', + 'sbb' => 'sbb', + 'sbc' => 'sbc', + 'sbd' => 'sbd', + 'sbe' => 'sbe', + 'sbf' => 'sbf', + 'sbg' => 'sbg', + 'sbh' => 'sbh', + 'sbi' => 'sbi', + 'sbj' => 'sbj', + 'sbk' => 'sbk', + 'sbl' => 'sbl', + 'sbm' => 'sbm', + 'sbn' => 'sbn', + 'sbo' => 'sbo', + 'sbp' => 'sbp', + 'sbq' => 'sbq', + 'sbr' => 'sbr', + 'sbs' => 'sbs', + 'sbt' => 'sbt', + 'sbu' => 'sbu', + 'sbv' => 'sbv', + 'sbw' => 'sbw', + 'sbx' => 'sbx', + 'sby' => 'sby', + 'sbz' => 'sbz', + 'scb' => 'scb', + 'sce' => 'sce', + 'scf' => 'scf', + 'scg' => 'scg', + 'sch' => 'sch', + 'sci' => 'sci', + 'sck' => 'sck', + 'scl' => 'scl', + 'scn' => 'scn', + 'sco' => 'sco', + 'scp' => 'scp', + 'scq' => 'scq', + 'scs' => 'scs', + 'sct' => 'sct', + 'scu' => 'scu', + 'scv' => 'scv', + 'scw' => 'scw', + 'scx' => 'scx', + 'sda' => 'sda', + 'sdb' => 'sdb', + 'sdc' => 'sdc', + 'sde' => 'sde', + 'sdf' => 'sdf', + 'sdg' => 'sdg', + 'sdh' => 'sdh', + 'sdj' => 'sdj', + 'sdk' => 'sdk', + 'sdl' => 'sdl', + 'sdm' => 'sdm', + 'sdn' => 'sdn', + 'sdo' => 'sdo', + 'sdp' => 'sdp', + 'sdr' => 'sdr', + 'sds' => 'sds', + 'sdt' => 'sdt', + 'sdu' => 'sdu', + 'sdx' => 'sdx', + 'sdz' => 'sdz', + 'sea' => 'sea', + 'seb' => 'seb', + 'sec' => 'sec', + 'sed' => 'sed', + 'see' => 'see', + 'sef' => 'sef', + 'seg' => 'seg', + 'seh' => 'seh', + 'sei' => 'sei', + 'sej' => 'sej', + 'sek' => 'sek', + 'sel' => 'sel', + 'sen' => 'sen', + 'seo' => 'seo', + 'sep' => 'sep', + 'seq' => 'seq', + 'ser' => 'ser', + 'ses' => 'ses', + 'set' => 'set', + 'seu' => 'seu', + 'sev' => 'sev', + 'sew' => 'sew', + 'sey' => 'sey', + 'sez' => 'sez', + 'sfb' => 'sfb', + 'sfe' => 'sfe', + 'sfm' => 'sfm', + 'sfs' => 'sfs', + 'sfw' => 'sfw', + 'sga' => 'sga', + 'sgb' => 'sgb', + 'sgc' => 'sgc', + 'sgd' => 'sgd', + 'sge' => 'sge', + 'sgg' => 'sgg', + 'sgh' => 'sgh', + 'sgi' => 'sgi', + 'sgj' => 'sgj', + 'sgk' => 'sgk', + 'sgm' => 'sgm', + 'sgp' => 'sgp', + 'sgr' => 'sgr', + 'sgs' => 'sgs', + 'sgt' => 'sgt', + 'sgu' => 'sgu', + 'sgw' => 'sgw', + 'sgx' => 'sgx', + 'sgy' => 'sgy', + 'sgz' => 'sgz', + 'sha' => 'sha', + 'shb' => 'shb', + 'shc' => 'shc', + 'shd' => 'shd', + 'she' => 'she', + 'shg' => 'shg', + 'shh' => 'shh', + 'shi' => 'shi', + 'shj' => 'shj', + 'shk' => 'shk', + 'shl' => 'shl', + 'shm' => 'shm', + 'shn' => 'shn', + 'sho' => 'sho', + 'shp' => 'shp', + 'shq' => 'shq', + 'shr' => 'shr', + 'shs' => 'shs', + 'sht' => 'sht', + 'shu' => 'shu', + 'shv' => 'shv', + 'shw' => 'shw', + 'shx' => 'shx', + 'shy' => 'shy', + 'shz' => 'shz', + 'sia' => 'sia', + 'sib' => 'sib', + 'sid' => 'sid', + 'sie' => 'sie', + 'sif' => 'sif', + 'sig' => 'sig', + 'sih' => 'sih', + 'sii' => 'sii', + 'sij' => 'sij', + 'sik' => 'sik', + 'sil' => 'sil', + 'sim' => 'sim', + 'si' => 'si', + 'sin' => 'si', + 'sip' => 'sip', + 'siq' => 'siq', + 'sir' => 'sir', + 'sis' => 'sis', + 'siu' => 'siu', + 'siv' => 'siv', + 'siw' => 'siw', + 'six' => 'six', + 'siy' => 'siy', + 'siz' => 'siz', + 'sja' => 'sja', + 'sjb' => 'sjb', + 'sjd' => 'sjd', + 'sje' => 'sje', + 'sjg' => 'sjg', + 'sjk' => 'sjk', + 'sjl' => 'sjl', + 'sjm' => 'sjm', + 'sjn' => 'sjn', + 'sjo' => 'sjo', + 'sjp' => 'sjp', + 'sjr' => 'sjr', + 'sjs' => 'sjs', + 'sjt' => 'sjt', + 'sju' => 'sju', + 'sjw' => 'sjw', + 'ska' => 'ska', + 'skb' => 'skb', + 'skc' => 'skc', + 'skd' => 'skd', + 'ske' => 'ske', + 'skf' => 'skf', + 'skg' => 'skg', + 'skh' => 'skh', + 'ski' => 'ski', + 'skj' => 'skj', + 'skm' => 'skm', + 'skn' => 'skn', + 'sko' => 'sko', + 'skp' => 'skp', + 'skq' => 'skq', + 'skr' => 'skr', + 'sks' => 'sks', + 'skt' => 'skt', + 'sku' => 'sku', + 'skv' => 'skv', + 'skw' => 'skw', + 'skx' => 'skx', + 'sky' => 'sky', + 'skz' => 'skz', + 'slc' => 'slc', + 'sld' => 'sld', + 'sle' => 'sle', + 'slf' => 'slf', + 'slg' => 'slg', + 'slh' => 'slh', + 'sli' => 'sli', + 'slj' => 'slj', + 'sk' => 'sk', + 'slk' => 'sk', + 'sll' => 'sll', + 'slm' => 'slm', + 'sln' => 'sln', + 'slp' => 'slp', + 'slq' => 'slq', + 'slr' => 'slr', + 'sls' => 'sls', + 'slt' => 'slt', + 'slu' => 'slu', + 'sl' => 'sl', + 'slv' => 'sl', + 'slw' => 'slw', + 'slx' => 'slx', + 'sly' => 'sly', + 'slz' => 'slz', + 'sma' => 'sma', + 'smb' => 'smb', + 'smc' => 'smc', + 'smd' => 'smd', + 'se' => 'se', + 'sme' => 'se', + 'smf' => 'smf', + 'smg' => 'smg', + 'smh' => 'smh', + 'smj' => 'smj', + 'smk' => 'smk', + 'sml' => 'sml', + 'smm' => 'smm', + 'smn' => 'smn', + 'sm' => 'sm', + 'smo' => 'sm', + 'smp' => 'smp', + 'smq' => 'smq', + 'smr' => 'smr', + 'sms' => 'sms', + 'smt' => 'smt', + 'smu' => 'smu', + 'smv' => 'smv', + 'smw' => 'smw', + 'smx' => 'smx', + 'smy' => 'smy', + 'smz' => 'smz', + 'sn' => 'sn', + 'sna' => 'sn', + 'snb' => 'snb', + 'snc' => 'snc', + 'sd' => 'sd', + 'snd' => 'sd', + 'sne' => 'sne', + 'snf' => 'snf', + 'sng' => 'sng', + 'sni' => 'sni', + 'snj' => 'snj', + 'snk' => 'snk', + 'snl' => 'snl', + 'snm' => 'snm', + 'snn' => 'snn', + 'sno' => 'sno', + 'snp' => 'snp', + 'snq' => 'snq', + 'snr' => 'snr', + 'sns' => 'sns', + 'snu' => 'snu', + 'snv' => 'snv', + 'snw' => 'snw', + 'snx' => 'snx', + 'sny' => 'sny', + 'snz' => 'snz', + 'soa' => 'soa', + 'sob' => 'sob', + 'soc' => 'soc', + 'sod' => 'sod', + 'soe' => 'soe', + 'sog' => 'sog', + 'soh' => 'soh', + 'soi' => 'soi', + 'soj' => 'soj', + 'sok' => 'sok', + 'sol' => 'sol', + 'so' => 'so', + 'som' => 'so', + 'soo' => 'soo', + 'sop' => 'sop', + 'soq' => 'soq', + 'sor' => 'sor', + 'sos' => 'sos', + 'st' => 'st', + 'sot' => 'st', + 'sou' => 'sou', + 'sov' => 'sov', + 'sow' => 'sow', + 'sox' => 'sox', + 'soy' => 'soy', + 'soz' => 'soz', + 'es' => 'es', + 'spa' => 'es', + 'spb' => 'spb', + 'spc' => 'spc', + 'spd' => 'spd', + 'spe' => 'spe', + 'spg' => 'spg', + 'spi' => 'spi', + 'spk' => 'spk', + 'spl' => 'spl', + 'spm' => 'spm', + 'spn' => 'spn', + 'spo' => 'spo', + 'spp' => 'spp', + 'spq' => 'spq', + 'spr' => 'spr', + 'sps' => 'sps', + 'spt' => 'spt', + 'spu' => 'spu', + 'spv' => 'spv', + 'spx' => 'spx', + 'spy' => 'spy', + 'sqa' => 'sqa', + 'sqh' => 'sqh', + 'sq' => 'sq', + 'sqi' => 'sq', + 'sqk' => 'sqk', + 'sqm' => 'sqm', + 'sqn' => 'sqn', + 'sqo' => 'sqo', + 'sqq' => 'sqq', + 'sqr' => 'sqr', + 'sqs' => 'sqs', + 'sqt' => 'sqt', + 'squ' => 'squ', + 'sra' => 'sra', + 'srb' => 'srb', + 'src' => 'src', + 'sc' => 'sc', + 'srd' => 'sc', + 'sre' => 'sre', + 'srf' => 'srf', + 'srg' => 'srg', + 'srh' => 'srh', + 'sri' => 'sri', + 'srk' => 'srk', + 'srl' => 'srl', + 'srm' => 'srm', + 'srn' => 'srn', + 'sro' => 'sro', + 'sr' => 'sr', + 'srp' => 'sr', + 'srq' => 'srq', + 'srr' => 'srr', + 'srs' => 'srs', + 'srt' => 'srt', + 'sru' => 'sru', + 'srv' => 'srv', + 'srw' => 'srw', + 'srx' => 'srx', + 'sry' => 'sry', + 'srz' => 'srz', + 'ssb' => 'ssb', + 'ssc' => 'ssc', + 'ssd' => 'ssd', + 'sse' => 'sse', + 'ssf' => 'ssf', + 'ssg' => 'ssg', + 'ssh' => 'ssh', + 'ssi' => 'ssi', + 'ssj' => 'ssj', + 'ssk' => 'ssk', + 'ssl' => 'ssl', + 'ssm' => 'ssm', + 'ssn' => 'ssn', + 'sso' => 'sso', + 'ssp' => 'ssp', + 'ssq' => 'ssq', + 'ssr' => 'ssr', + 'sss' => 'sss', + 'sst' => 'sst', + 'ssu' => 'ssu', + 'ssv' => 'ssv', + 'ss' => 'ss', + 'ssw' => 'ss', + 'ssx' => 'ssx', + 'ssy' => 'ssy', + 'ssz' => 'ssz', + 'sta' => 'sta', + 'stb' => 'stb', + 'std' => 'std', + 'ste' => 'ste', + 'stf' => 'stf', + 'stg' => 'stg', + 'sth' => 'sth', + 'sti' => 'sti', + 'stj' => 'stj', + 'stk' => 'stk', + 'stl' => 'stl', + 'stm' => 'stm', + 'stn' => 'stn', + 'sto' => 'sto', + 'stp' => 'stp', + 'stq' => 'stq', + 'str' => 'str', + 'sts' => 'sts', + 'stt' => 'stt', + 'stu' => 'stu', + 'stv' => 'stv', + 'stw' => 'stw', + 'sty' => 'sty', + 'sua' => 'sua', + 'sub' => 'sub', + 'suc' => 'suc', + 'sue' => 'sue', + 'sug' => 'sug', + 'sui' => 'sui', + 'suj' => 'suj', + 'suk' => 'suk', + 'su' => 'su', + 'sun' => 'su', + 'suq' => 'suq', + 'sur' => 'sur', + 'sus' => 'sus', + 'sut' => 'sut', + 'suv' => 'suv', + 'suw' => 'suw', + 'sux' => 'sux', + 'suy' => 'suy', + 'suz' => 'suz', + 'sva' => 'sva', + 'svb' => 'svb', + 'svc' => 'svc', + 'sve' => 'sve', + 'svk' => 'svk', + 'svm' => 'svm', + 'svs' => 'svs', + 'svx' => 'svx', + 'sw' => 'sw', + 'swa' => 'sw', + 'swb' => 'swb', + 'swc' => 'swc', + 'sv' => 'sv', + 'swe' => 'sv', + 'swf' => 'swf', + 'swg' => 'swg', + 'swh' => 'swh', + 'swi' => 'swi', + 'swj' => 'swj', + 'swk' => 'swk', + 'swl' => 'swl', + 'swm' => 'swm', + 'swn' => 'swn', + 'swo' => 'swo', + 'swp' => 'swp', + 'swq' => 'swq', + 'swr' => 'swr', + 'sws' => 'sws', + 'swt' => 'swt', + 'swu' => 'swu', + 'swv' => 'swv', + 'sww' => 'sww', + 'swx' => 'swx', + 'swy' => 'swy', + 'sxb' => 'sxb', + 'sxc' => 'sxc', + 'sxe' => 'sxe', + 'sxg' => 'sxg', + 'sxk' => 'sxk', + 'sxl' => 'sxl', + 'sxm' => 'sxm', + 'sxn' => 'sxn', + 'sxo' => 'sxo', + 'sxr' => 'sxr', + 'sxs' => 'sxs', + 'sxu' => 'sxu', + 'sxw' => 'sxw', + 'sya' => 'sya', + 'syb' => 'syb', + 'syc' => 'syc', + 'syi' => 'syi', + 'syk' => 'syk', + 'syl' => 'syl', + 'sym' => 'sym', + 'syn' => 'syn', + 'syo' => 'syo', + 'syr' => 'syr', + 'sys' => 'sys', + 'syw' => 'syw', + 'syx' => 'syx', + 'syy' => 'syy', + 'sza' => 'sza', + 'szb' => 'szb', + 'szc' => 'szc', + 'szd' => 'szd', + 'sze' => 'sze', + 'szg' => 'szg', + 'szl' => 'szl', + 'szn' => 'szn', + 'szp' => 'szp', + 'szs' => 'szs', + 'szv' => 'szv', + 'szw' => 'szw', + 'taa' => 'taa', + 'tab' => 'tab', + 'tac' => 'tac', + 'tad' => 'tad', + 'tae' => 'tae', + 'taf' => 'taf', + 'tag' => 'tag', + 'ty' => 'ty', + 'tah' => 'ty', + 'taj' => 'taj', + 'tak' => 'tak', + 'tal' => 'tal', + 'ta' => 'ta', + 'tam' => 'ta', + 'tan' => 'tan', + 'tao' => 'tao', + 'tap' => 'tap', + 'taq' => 'taq', + 'tar' => 'tar', + 'tas' => 'tas', + 'tt' => 'tt', + 'tat' => 'tt', + 'tau' => 'tau', + 'tav' => 'tav', + 'taw' => 'taw', + 'tax' => 'tax', + 'tay' => 'tay', + 'taz' => 'taz', + 'tba' => 'tba', + 'tbb' => 'tbb', + 'tbc' => 'tbc', + 'tbd' => 'tbd', + 'tbe' => 'tbe', + 'tbf' => 'tbf', + 'tbg' => 'tbg', + 'tbh' => 'tbh', + 'tbi' => 'tbi', + 'tbj' => 'tbj', + 'tbk' => 'tbk', + 'tbl' => 'tbl', + 'tbm' => 'tbm', + 'tbn' => 'tbn', + 'tbo' => 'tbo', + 'tbp' => 'tbp', + 'tbr' => 'tbr', + 'tbs' => 'tbs', + 'tbt' => 'tbt', + 'tbu' => 'tbu', + 'tbv' => 'tbv', + 'tbw' => 'tbw', + 'tbx' => 'tbx', + 'tby' => 'tby', + 'tbz' => 'tbz', + 'tca' => 'tca', + 'tcb' => 'tcb', + 'tcc' => 'tcc', + 'tcd' => 'tcd', + 'tce' => 'tce', + 'tcf' => 'tcf', + 'tcg' => 'tcg', + 'tch' => 'tch', + 'tci' => 'tci', + 'tck' => 'tck', + 'tcl' => 'tcl', + 'tcm' => 'tcm', + 'tcn' => 'tcn', + 'tco' => 'tco', + 'tcp' => 'tcp', + 'tcq' => 'tcq', + 'tcs' => 'tcs', + 'tct' => 'tct', + 'tcu' => 'tcu', + 'tcw' => 'tcw', + 'tcx' => 'tcx', + 'tcy' => 'tcy', + 'tcz' => 'tcz', + 'tda' => 'tda', + 'tdb' => 'tdb', + 'tdc' => 'tdc', + 'tdd' => 'tdd', + 'tde' => 'tde', + 'tdf' => 'tdf', + 'tdg' => 'tdg', + 'tdh' => 'tdh', + 'tdi' => 'tdi', + 'tdj' => 'tdj', + 'tdk' => 'tdk', + 'tdl' => 'tdl', + 'tdm' => 'tdm', + 'tdn' => 'tdn', + 'tdo' => 'tdo', + 'tdq' => 'tdq', + 'tdr' => 'tdr', + 'tds' => 'tds', + 'tdt' => 'tdt', + 'tdv' => 'tdv', + 'tdx' => 'tdx', + 'tdy' => 'tdy', + 'tea' => 'tea', + 'teb' => 'teb', + 'tec' => 'tec', + 'ted' => 'ted', + 'tee' => 'tee', + 'tef' => 'tef', + 'teg' => 'teg', + 'teh' => 'teh', + 'tei' => 'tei', + 'tek' => 'tek', + 'te' => 'te', + 'tel' => 'te', + 'tem' => 'tem', + 'ten' => 'ten', + 'teo' => 'teo', + 'tep' => 'tep', + 'teq' => 'teq', + 'ter' => 'ter', + 'tes' => 'tes', + 'tet' => 'tet', + 'teu' => 'teu', + 'tev' => 'tev', + 'tew' => 'tew', + 'tex' => 'tex', + 'tey' => 'tey', + 'tez' => 'tez', + 'tfi' => 'tfi', + 'tfn' => 'tfn', + 'tfo' => 'tfo', + 'tfr' => 'tfr', + 'tft' => 'tft', + 'tga' => 'tga', + 'tgb' => 'tgb', + 'tgc' => 'tgc', + 'tgd' => 'tgd', + 'tge' => 'tge', + 'tgf' => 'tgf', + 'tgh' => 'tgh', + 'tgi' => 'tgi', + 'tgj' => 'tgj', + 'tg' => 'tg', + 'tgk' => 'tg', + 'tl' => 'tl', + 'tgl' => 'tl', + 'tgn' => 'tgn', + 'tgo' => 'tgo', + 'tgp' => 'tgp', + 'tgq' => 'tgq', + 'tgr' => 'tgr', + 'tgs' => 'tgs', + 'tgt' => 'tgt', + 'tgu' => 'tgu', + 'tgv' => 'tgv', + 'tgw' => 'tgw', + 'tgx' => 'tgx', + 'tgy' => 'tgy', + 'tgz' => 'tgz', + 'th' => 'th', + 'tha' => 'th', + 'thd' => 'thd', + 'the' => 'the', + 'thf' => 'thf', + 'thh' => 'thh', + 'thi' => 'thi', + 'thk' => 'thk', + 'thl' => 'thl', + 'thm' => 'thm', + 'thn' => 'thn', + 'thp' => 'thp', + 'thq' => 'thq', + 'thr' => 'thr', + 'ths' => 'ths', + 'tht' => 'tht', + 'thu' => 'thu', + 'thv' => 'thv', + 'thw' => 'thw', + 'thy' => 'thy', + 'thz' => 'thz', + 'tia' => 'tia', + 'tic' => 'tic', + 'tif' => 'tif', + 'tig' => 'tig', + 'tih' => 'tih', + 'tii' => 'tii', + 'tij' => 'tij', + 'tik' => 'tik', + 'til' => 'til', + 'tim' => 'tim', + 'tin' => 'tin', + 'tio' => 'tio', + 'tip' => 'tip', + 'tiq' => 'tiq', + 'ti' => 'ti', + 'tir' => 'ti', + 'tis' => 'tis', + 'tit' => 'tit', + 'tiu' => 'tiu', + 'tiv' => 'tiv', + 'tiw' => 'tiw', + 'tix' => 'tix', + 'tiy' => 'tiy', + 'tiz' => 'tiz', + 'tja' => 'tja', + 'tjg' => 'tjg', + 'tji' => 'tji', + 'tjl' => 'tjl', + 'tjm' => 'tjm', + 'tjn' => 'tjn', + 'tjo' => 'tjo', + 'tjs' => 'tjs', + 'tju' => 'tju', + 'tjw' => 'tjw', + 'tka' => 'tka', + 'tkb' => 'tkb', + 'tkd' => 'tkd', + 'tke' => 'tke', + 'tkf' => 'tkf', + 'tkg' => 'tkg', + 'tkl' => 'tkl', + 'tkm' => 'tkm', + 'tkn' => 'tkn', + 'tkp' => 'tkp', + 'tkq' => 'tkq', + 'tkr' => 'tkr', + 'tks' => 'tks', + 'tkt' => 'tkt', + 'tku' => 'tku', + 'tkv' => 'tkv', + 'tkw' => 'tkw', + 'tkx' => 'tkx', + 'tkz' => 'tkz', + 'tla' => 'tla', + 'tlb' => 'tlb', + 'tlc' => 'tlc', + 'tld' => 'tld', + 'tlf' => 'tlf', + 'tlg' => 'tlg', + 'tlh' => 'tlh', + 'tli' => 'tli', + 'tlj' => 'tlj', + 'tlk' => 'tlk', + 'tll' => 'tll', + 'tlm' => 'tlm', + 'tln' => 'tln', + 'tlo' => 'tlo', + 'tlp' => 'tlp', + 'tlq' => 'tlq', + 'tlr' => 'tlr', + 'tls' => 'tls', + 'tlt' => 'tlt', + 'tlu' => 'tlu', + 'tlv' => 'tlv', + 'tlx' => 'tlx', + 'tly' => 'tly', + 'tma' => 'tma', + 'tmb' => 'tmb', + 'tmc' => 'tmc', + 'tmd' => 'tmd', + 'tme' => 'tme', + 'tmf' => 'tmf', + 'tmg' => 'tmg', + 'tmh' => 'tmh', + 'tmi' => 'tmi', + 'tmj' => 'tmj', + 'tmk' => 'tmk', + 'tml' => 'tml', + 'tmm' => 'tmm', + 'tmn' => 'tmn', + 'tmo' => 'tmo', + 'tmq' => 'tmq', + 'tmr' => 'tmr', + 'tms' => 'tms', + 'tmt' => 'tmt', + 'tmu' => 'tmu', + 'tmv' => 'tmv', + 'tmw' => 'tmw', + 'tmy' => 'tmy', + 'tmz' => 'tmz', + 'tna' => 'tna', + 'tnb' => 'tnb', + 'tnc' => 'tnc', + 'tnd' => 'tnd', + 'tng' => 'tng', + 'tnh' => 'tnh', + 'tni' => 'tni', + 'tnk' => 'tnk', + 'tnl' => 'tnl', + 'tnm' => 'tnm', + 'tnn' => 'tnn', + 'tno' => 'tno', + 'tnp' => 'tnp', + 'tnq' => 'tnq', + 'tnr' => 'tnr', + 'tns' => 'tns', + 'tnt' => 'tnt', + 'tnu' => 'tnu', + 'tnv' => 'tnv', + 'tnw' => 'tnw', + 'tnx' => 'tnx', + 'tny' => 'tny', + 'tnz' => 'tnz', + 'tob' => 'tob', + 'toc' => 'toc', + 'tod' => 'tod', + 'tof' => 'tof', + 'tog' => 'tog', + 'toh' => 'toh', + 'toi' => 'toi', + 'toj' => 'toj', + 'tol' => 'tol', + 'tom' => 'tom', + 'to' => 'to', + 'ton' => 'to', + 'too' => 'too', + 'top' => 'top', + 'toq' => 'toq', + 'tor' => 'tor', + 'tos' => 'tos', + 'tou' => 'tou', + 'tov' => 'tov', + 'tow' => 'tow', + 'tox' => 'tox', + 'toy' => 'toy', + 'toz' => 'toz', + 'tpa' => 'tpa', + 'tpc' => 'tpc', + 'tpe' => 'tpe', + 'tpf' => 'tpf', + 'tpg' => 'tpg', + 'tpi' => 'tpi', + 'tpj' => 'tpj', + 'tpk' => 'tpk', + 'tpl' => 'tpl', + 'tpm' => 'tpm', + 'tpn' => 'tpn', + 'tpo' => 'tpo', + 'tpp' => 'tpp', + 'tpq' => 'tpq', + 'tpr' => 'tpr', + 'tpt' => 'tpt', + 'tpu' => 'tpu', + 'tpv' => 'tpv', + 'tpw' => 'tpw', + 'tpx' => 'tpx', + 'tpy' => 'tpy', + 'tpz' => 'tpz', + 'tqb' => 'tqb', + 'tql' => 'tql', + 'tqm' => 'tqm', + 'tqn' => 'tqn', + 'tqo' => 'tqo', + 'tqp' => 'tqp', + 'tqq' => 'tqq', + 'tqr' => 'tqr', + 'tqt' => 'tqt', + 'tqu' => 'tqu', + 'tqw' => 'tqw', + 'tra' => 'tra', + 'trb' => 'trb', + 'trc' => 'trc', + 'trd' => 'trd', + 'tre' => 'tre', + 'trf' => 'trf', + 'trg' => 'trg', + 'trh' => 'trh', + 'tri' => 'tri', + 'trj' => 'trj', + 'trl' => 'trl', + 'trm' => 'trm', + 'trn' => 'trn', + 'tro' => 'tro', + 'trp' => 'trp', + 'trq' => 'trq', + 'trr' => 'trr', + 'trs' => 'trs', + 'trt' => 'trt', + 'tru' => 'tru', + 'trv' => 'trv', + 'trw' => 'trw', + 'trx' => 'trx', + 'try' => 'try', + 'trz' => 'trz', + 'tsa' => 'tsa', + 'tsb' => 'tsb', + 'tsc' => 'tsc', + 'tsd' => 'tsd', + 'tse' => 'tse', + 'tsg' => 'tsg', + 'tsh' => 'tsh', + 'tsi' => 'tsi', + 'tsj' => 'tsj', + 'tsk' => 'tsk', + 'tsl' => 'tsl', + 'tsm' => 'tsm', + 'tn' => 'tn', + 'tsn' => 'tn', + 'ts' => 'ts', + 'tso' => 'ts', + 'tsp' => 'tsp', + 'tsq' => 'tsq', + 'tsr' => 'tsr', + 'tss' => 'tss', + 'tst' => 'tst', + 'tsu' => 'tsu', + 'tsv' => 'tsv', + 'tsw' => 'tsw', + 'tsx' => 'tsx', + 'tsy' => 'tsy', + 'tsz' => 'tsz', + 'tta' => 'tta', + 'ttb' => 'ttb', + 'ttc' => 'ttc', + 'ttd' => 'ttd', + 'tte' => 'tte', + 'ttf' => 'ttf', + 'ttg' => 'ttg', + 'tth' => 'tth', + 'tti' => 'tti', + 'ttj' => 'ttj', + 'ttk' => 'ttk', + 'ttl' => 'ttl', + 'ttm' => 'ttm', + 'ttn' => 'ttn', + 'tto' => 'tto', + 'ttp' => 'ttp', + 'ttq' => 'ttq', + 'ttr' => 'ttr', + 'tts' => 'tts', + 'ttt' => 'ttt', + 'ttu' => 'ttu', + 'ttv' => 'ttv', + 'ttw' => 'ttw', + 'tty' => 'tty', + 'ttz' => 'ttz', + 'tua' => 'tua', + 'tub' => 'tub', + 'tuc' => 'tuc', + 'tud' => 'tud', + 'tue' => 'tue', + 'tuf' => 'tuf', + 'tug' => 'tug', + 'tuh' => 'tuh', + 'tui' => 'tui', + 'tuj' => 'tuj', + 'tk' => 'tk', + 'tuk' => 'tk', + 'tul' => 'tul', + 'tum' => 'tum', + 'tun' => 'tun', + 'tuo' => 'tuo', + 'tuq' => 'tuq', + 'tr' => 'tr', + 'tur' => 'tr', + 'tus' => 'tus', + 'tuu' => 'tuu', + 'tuv' => 'tuv', + 'tux' => 'tux', + 'tuy' => 'tuy', + 'tuz' => 'tuz', + 'tva' => 'tva', + 'tvd' => 'tvd', + 'tve' => 'tve', + 'tvk' => 'tvk', + 'tvl' => 'tvl', + 'tvm' => 'tvm', + 'tvn' => 'tvn', + 'tvo' => 'tvo', + 'tvs' => 'tvs', + 'tvt' => 'tvt', + 'tvu' => 'tvu', + 'tvw' => 'tvw', + 'tvy' => 'tvy', + 'twa' => 'twa', + 'twb' => 'twb', + 'twc' => 'twc', + 'twd' => 'twd', + 'twe' => 'twe', + 'twf' => 'twf', + 'twg' => 'twg', + 'twh' => 'twh', + 'tw' => 'tw', + 'twi' => 'tw', + 'twl' => 'twl', + 'twm' => 'twm', + 'twn' => 'twn', + 'two' => 'two', + 'twp' => 'twp', + 'twq' => 'twq', + 'twr' => 'twr', + 'twt' => 'twt', + 'twu' => 'twu', + 'tww' => 'tww', + 'twx' => 'twx', + 'twy' => 'twy', + 'txa' => 'txa', + 'txb' => 'txb', + 'txc' => 'txc', + 'txe' => 'txe', + 'txg' => 'txg', + 'txh' => 'txh', + 'txi' => 'txi', + 'txj' => 'txj', + 'txm' => 'txm', + 'txn' => 'txn', + 'txo' => 'txo', + 'txq' => 'txq', + 'txr' => 'txr', + 'txs' => 'txs', + 'txt' => 'txt', + 'txu' => 'txu', + 'txx' => 'txx', + 'txy' => 'txy', + 'tya' => 'tya', + 'tye' => 'tye', + 'tyh' => 'tyh', + 'tyi' => 'tyi', + 'tyj' => 'tyj', + 'tyl' => 'tyl', + 'tyn' => 'tyn', + 'typ' => 'typ', + 'tyr' => 'tyr', + 'tys' => 'tys', + 'tyt' => 'tyt', + 'tyu' => 'tyu', + 'tyv' => 'tyv', + 'tyx' => 'tyx', + 'tyz' => 'tyz', + 'tza' => 'tza', + 'tzh' => 'tzh', + 'tzj' => 'tzj', + 'tzl' => 'tzl', + 'tzm' => 'tzm', + 'tzn' => 'tzn', + 'tzo' => 'tzo', + 'tzx' => 'tzx', + 'uam' => 'uam', + 'uan' => 'uan', + 'uar' => 'uar', + 'uba' => 'uba', + 'ubi' => 'ubi', + 'ubl' => 'ubl', + 'ubr' => 'ubr', + 'ubu' => 'ubu', + 'uby' => 'uby', + 'uda' => 'uda', + 'ude' => 'ude', + 'udg' => 'udg', + 'udi' => 'udi', + 'udj' => 'udj', + 'udl' => 'udl', + 'udm' => 'udm', + 'udu' => 'udu', + 'ues' => 'ues', + 'ufi' => 'ufi', + 'uga' => 'uga', + 'ugb' => 'ugb', + 'uge' => 'uge', + 'ugn' => 'ugn', + 'ugo' => 'ugo', + 'ugy' => 'ugy', + 'uha' => 'uha', + 'uhn' => 'uhn', + 'ug' => 'ug', + 'uig' => 'ug', + 'uis' => 'uis', + 'uiv' => 'uiv', + 'uji' => 'uji', + 'uka' => 'uka', + 'ukg' => 'ukg', + 'ukh' => 'ukh', + 'ukk' => 'ukk', + 'ukl' => 'ukl', + 'ukp' => 'ukp', + 'ukq' => 'ukq', + 'uk' => 'uk', + 'ukr' => 'uk', + 'uks' => 'uks', + 'uku' => 'uku', + 'ukw' => 'ukw', + 'uky' => 'uky', + 'ula' => 'ula', + 'ulb' => 'ulb', + 'ulc' => 'ulc', + 'ule' => 'ule', + 'ulf' => 'ulf', + 'uli' => 'uli', + 'ulk' => 'ulk', + 'ull' => 'ull', + 'ulm' => 'ulm', + 'uln' => 'uln', + 'ulu' => 'ulu', + 'ulw' => 'ulw', + 'uma' => 'uma', + 'umb' => 'umb', + 'umc' => 'umc', + 'umd' => 'umd', + 'umg' => 'umg', + 'umi' => 'umi', + 'umm' => 'umm', + 'umn' => 'umn', + 'umo' => 'umo', + 'ump' => 'ump', + 'umr' => 'umr', + 'ums' => 'ums', + 'umu' => 'umu', + 'una' => 'una', + 'und' => 'und', + 'une' => 'une', + 'ung' => 'ung', + 'unk' => 'unk', + 'unm' => 'unm', + 'unn' => 'unn', + 'unr' => 'unr', + 'unu' => 'unu', + 'unx' => 'unx', + 'unz' => 'unz', + 'upi' => 'upi', + 'upv' => 'upv', + 'ura' => 'ura', + 'urb' => 'urb', + 'urc' => 'urc', + 'ur' => 'ur', + 'urd' => 'ur', + 'ure' => 'ure', + 'urf' => 'urf', + 'urg' => 'urg', + 'urh' => 'urh', + 'uri' => 'uri', + 'urk' => 'urk', + 'url' => 'url', + 'urm' => 'urm', + 'urn' => 'urn', + 'uro' => 'uro', + 'urp' => 'urp', + 'urr' => 'urr', + 'urt' => 'urt', + 'uru' => 'uru', + 'urv' => 'urv', + 'urw' => 'urw', + 'urx' => 'urx', + 'ury' => 'ury', + 'urz' => 'urz', + 'usa' => 'usa', + 'ush' => 'ush', + 'usi' => 'usi', + 'usk' => 'usk', + 'usp' => 'usp', + 'usu' => 'usu', + 'uta' => 'uta', + 'ute' => 'ute', + 'utp' => 'utp', + 'utr' => 'utr', + 'utu' => 'utu', + 'uum' => 'uum', + 'uun' => 'uun', + 'uur' => 'uur', + 'uuu' => 'uuu', + 'uve' => 'uve', + 'uvh' => 'uvh', + 'uvl' => 'uvl', + 'uwa' => 'uwa', + 'uya' => 'uya', + 'uz' => 'uz', + 'uzb' => 'uz', + 'uzn' => 'uzn', + 'uzs' => 'uzs', + 'vaa' => 'vaa', + 'vae' => 'vae', + 'vaf' => 'vaf', + 'vag' => 'vag', + 'vah' => 'vah', + 'vai' => 'vai', + 'vaj' => 'vaj', + 'val' => 'val', + 'vam' => 'vam', + 'van' => 'van', + 'vao' => 'vao', + 'vap' => 'vap', + 'var' => 'var', + 'vas' => 'vas', + 'vau' => 'vau', + 'vav' => 'vav', + 'vay' => 'vay', + 'vbb' => 'vbb', + 'vbk' => 'vbk', + 'vec' => 'vec', + 'ved' => 'ved', + 'vel' => 'vel', + 'vem' => 'vem', + 've' => 've', + 'ven' => 've', + 'veo' => 'veo', + 'vep' => 'vep', + 'ver' => 'ver', + 'vgr' => 'vgr', + 'vgt' => 'vgt', + 'vic' => 'vic', + 'vid' => 'vid', + 'vi' => 'vi', + 'vie' => 'vi', + 'vif' => 'vif', + 'vig' => 'vig', + 'vil' => 'vil', + 'vin' => 'vin', + 'vis' => 'vis', + 'vit' => 'vit', + 'viv' => 'viv', + 'vka' => 'vka', + 'vki' => 'vki', + 'vkj' => 'vkj', + 'vkk' => 'vkk', + 'vkl' => 'vkl', + 'vkm' => 'vkm', + 'vko' => 'vko', + 'vkp' => 'vkp', + 'vkt' => 'vkt', + 'vku' => 'vku', + 'vlp' => 'vlp', + 'vls' => 'vls', + 'vma' => 'vma', + 'vmb' => 'vmb', + 'vmc' => 'vmc', + 'vmd' => 'vmd', + 'vme' => 'vme', + 'vmf' => 'vmf', + 'vmg' => 'vmg', + 'vmh' => 'vmh', + 'vmi' => 'vmi', + 'vmj' => 'vmj', + 'vmk' => 'vmk', + 'vml' => 'vml', + 'vmm' => 'vmm', + 'vmp' => 'vmp', + 'vmq' => 'vmq', + 'vmr' => 'vmr', + 'vms' => 'vms', + 'vmu' => 'vmu', + 'vmv' => 'vmv', + 'vmw' => 'vmw', + 'vmx' => 'vmx', + 'vmy' => 'vmy', + 'vmz' => 'vmz', + 'vnk' => 'vnk', + 'vnm' => 'vnm', + 'vnp' => 'vnp', + 'vo' => 'vo', + 'vol' => 'vo', + 'vor' => 'vor', + 'vot' => 'vot', + 'vra' => 'vra', + 'vro' => 'vro', + 'vrs' => 'vrs', + 'vrt' => 'vrt', + 'vsi' => 'vsi', + 'vsl' => 'vsl', + 'vsv' => 'vsv', + 'vto' => 'vto', + 'vum' => 'vum', + 'vun' => 'vun', + 'vut' => 'vut', + 'vwa' => 'vwa', + 'waa' => 'waa', + 'wab' => 'wab', + 'wac' => 'wac', + 'wad' => 'wad', + 'wae' => 'wae', + 'waf' => 'waf', + 'wag' => 'wag', + 'wah' => 'wah', + 'wai' => 'wai', + 'waj' => 'waj', + 'wal' => 'wal', + 'wam' => 'wam', + 'wan' => 'wan', + 'wao' => 'wao', + 'wap' => 'wap', + 'waq' => 'waq', + 'war' => 'war', + 'was' => 'was', + 'wat' => 'wat', + 'wau' => 'wau', + 'wav' => 'wav', + 'waw' => 'waw', + 'wax' => 'wax', + 'way' => 'way', + 'waz' => 'waz', + 'wba' => 'wba', + 'wbb' => 'wbb', + 'wbe' => 'wbe', + 'wbf' => 'wbf', + 'wbh' => 'wbh', + 'wbi' => 'wbi', + 'wbj' => 'wbj', + 'wbk' => 'wbk', + 'wbl' => 'wbl', + 'wbm' => 'wbm', + 'wbp' => 'wbp', + 'wbq' => 'wbq', + 'wbr' => 'wbr', + 'wbs' => 'wbs', + 'wbt' => 'wbt', + 'wbv' => 'wbv', + 'wbw' => 'wbw', + 'wca' => 'wca', + 'wci' => 'wci', + 'wdd' => 'wdd', + 'wdg' => 'wdg', + 'wdj' => 'wdj', + 'wdk' => 'wdk', + 'wdu' => 'wdu', + 'wdy' => 'wdy', + 'wea' => 'wea', + 'wec' => 'wec', + 'wed' => 'wed', + 'weg' => 'weg', + 'weh' => 'weh', + 'wei' => 'wei', + 'wem' => 'wem', + 'weo' => 'weo', + 'wep' => 'wep', + 'wer' => 'wer', + 'wes' => 'wes', + 'wet' => 'wet', + 'weu' => 'weu', + 'wew' => 'wew', + 'wfg' => 'wfg', + 'wga' => 'wga', + 'wgb' => 'wgb', + 'wgg' => 'wgg', + 'wgi' => 'wgi', + 'wgo' => 'wgo', + 'wgu' => 'wgu', + 'wgy' => 'wgy', + 'wha' => 'wha', + 'whg' => 'whg', + 'whk' => 'whk', + 'whu' => 'whu', + 'wib' => 'wib', + 'wic' => 'wic', + 'wie' => 'wie', + 'wif' => 'wif', + 'wig' => 'wig', + 'wih' => 'wih', + 'wii' => 'wii', + 'wij' => 'wij', + 'wik' => 'wik', + 'wil' => 'wil', + 'wim' => 'wim', + 'win' => 'win', + 'wir' => 'wir', + 'wiu' => 'wiu', + 'wiv' => 'wiv', + 'wiy' => 'wiy', + 'wja' => 'wja', + 'wji' => 'wji', + 'wka' => 'wka', + 'wkb' => 'wkb', + 'wkd' => 'wkd', + 'wkl' => 'wkl', + 'wku' => 'wku', + 'wkw' => 'wkw', + 'wky' => 'wky', + 'wla' => 'wla', + 'wlc' => 'wlc', + 'wle' => 'wle', + 'wlg' => 'wlg', + 'wli' => 'wli', + 'wlk' => 'wlk', + 'wll' => 'wll', + 'wlm' => 'wlm', + 'wa' => 'wa', + 'wln' => 'wa', + 'wlo' => 'wlo', + 'wlr' => 'wlr', + 'wls' => 'wls', + 'wlu' => 'wlu', + 'wlv' => 'wlv', + 'wlw' => 'wlw', + 'wlx' => 'wlx', + 'wly' => 'wly', + 'wma' => 'wma', + 'wmb' => 'wmb', + 'wmc' => 'wmc', + 'wmd' => 'wmd', + 'wme' => 'wme', + 'wmh' => 'wmh', + 'wmi' => 'wmi', + 'wmm' => 'wmm', + 'wmn' => 'wmn', + 'wmo' => 'wmo', + 'wms' => 'wms', + 'wmt' => 'wmt', + 'wmw' => 'wmw', + 'wmx' => 'wmx', + 'wnb' => 'wnb', + 'wnc' => 'wnc', + 'wnd' => 'wnd', + 'wne' => 'wne', + 'wng' => 'wng', + 'wni' => 'wni', + 'wnk' => 'wnk', + 'wnm' => 'wnm', + 'wnn' => 'wnn', + 'wno' => 'wno', + 'wnp' => 'wnp', + 'wnu' => 'wnu', + 'wnw' => 'wnw', + 'wny' => 'wny', + 'woa' => 'woa', + 'wob' => 'wob', + 'woc' => 'woc', + 'wod' => 'wod', + 'woe' => 'woe', + 'wof' => 'wof', + 'wog' => 'wog', + 'woi' => 'woi', + 'wok' => 'wok', + 'wo' => 'wo', + 'wol' => 'wo', + 'wom' => 'wom', + 'won' => 'won', + 'woo' => 'woo', + 'wor' => 'wor', + 'wos' => 'wos', + 'wow' => 'wow', + 'woy' => 'woy', + 'wpc' => 'wpc', + 'wra' => 'wra', + 'wrb' => 'wrb', + 'wrd' => 'wrd', + 'wrg' => 'wrg', + 'wrh' => 'wrh', + 'wri' => 'wri', + 'wrk' => 'wrk', + 'wrl' => 'wrl', + 'wrm' => 'wrm', + 'wrn' => 'wrn', + 'wro' => 'wro', + 'wrp' => 'wrp', + 'wrr' => 'wrr', + 'wrs' => 'wrs', + 'wru' => 'wru', + 'wrv' => 'wrv', + 'wrw' => 'wrw', + 'wrx' => 'wrx', + 'wry' => 'wry', + 'wrz' => 'wrz', + 'wsa' => 'wsa', + 'wsg' => 'wsg', + 'wsi' => 'wsi', + 'wsk' => 'wsk', + 'wsr' => 'wsr', + 'wss' => 'wss', + 'wsu' => 'wsu', + 'wsv' => 'wsv', + 'wtf' => 'wtf', + 'wth' => 'wth', + 'wti' => 'wti', + 'wtk' => 'wtk', + 'wtm' => 'wtm', + 'wtw' => 'wtw', + 'wua' => 'wua', + 'wub' => 'wub', + 'wud' => 'wud', + 'wuh' => 'wuh', + 'wul' => 'wul', + 'wum' => 'wum', + 'wun' => 'wun', + 'wur' => 'wur', + 'wut' => 'wut', + 'wuu' => 'wuu', + 'wuv' => 'wuv', + 'wux' => 'wux', + 'wuy' => 'wuy', + 'wwa' => 'wwa', + 'wwb' => 'wwb', + 'wwo' => 'wwo', + 'wwr' => 'wwr', + 'www' => 'www', + 'wxa' => 'wxa', + 'wxw' => 'wxw', + 'wya' => 'wya', + 'wyb' => 'wyb', + 'wyi' => 'wyi', + 'wym' => 'wym', + 'wyr' => 'wyr', + 'wyy' => 'wyy', + 'xaa' => 'xaa', + 'xab' => 'xab', + 'xac' => 'xac', + 'xad' => 'xad', + 'xae' => 'xae', + 'xag' => 'xag', + 'xai' => 'xai', + 'xaj' => 'xaj', + 'xak' => 'xak', + 'xal' => 'xal', + 'xam' => 'xam', + 'xan' => 'xan', + 'xao' => 'xao', + 'xap' => 'xap', + 'xaq' => 'xaq', + 'xar' => 'xar', + 'xas' => 'xas', + 'xat' => 'xat', + 'xau' => 'xau', + 'xav' => 'xav', + 'xaw' => 'xaw', + 'xay' => 'xay', + 'xbb' => 'xbb', + 'xbc' => 'xbc', + 'xbd' => 'xbd', + 'xbe' => 'xbe', + 'xbg' => 'xbg', + 'xbi' => 'xbi', + 'xbj' => 'xbj', + 'xbm' => 'xbm', + 'xbn' => 'xbn', + 'xbo' => 'xbo', + 'xbp' => 'xbp', + 'xbr' => 'xbr', + 'xbw' => 'xbw', + 'xby' => 'xby', + 'xcb' => 'xcb', + 'xcc' => 'xcc', + 'xce' => 'xce', + 'xcg' => 'xcg', + 'xch' => 'xch', + 'xcl' => 'xcl', + 'xcm' => 'xcm', + 'xcn' => 'xcn', + 'xco' => 'xco', + 'xcr' => 'xcr', + 'xct' => 'xct', + 'xcu' => 'xcu', + 'xcv' => 'xcv', + 'xcw' => 'xcw', + 'xcy' => 'xcy', + 'xda' => 'xda', + 'xdc' => 'xdc', + 'xdk' => 'xdk', + 'xdm' => 'xdm', + 'xdo' => 'xdo', + 'xdy' => 'xdy', + 'xeb' => 'xeb', + 'xed' => 'xed', + 'xeg' => 'xeg', + 'xel' => 'xel', + 'xem' => 'xem', + 'xep' => 'xep', + 'xer' => 'xer', + 'xes' => 'xes', + 'xet' => 'xet', + 'xeu' => 'xeu', + 'xfa' => 'xfa', + 'xga' => 'xga', + 'xgb' => 'xgb', + 'xgd' => 'xgd', + 'xgf' => 'xgf', + 'xgg' => 'xgg', + 'xgi' => 'xgi', + 'xgl' => 'xgl', + 'xgm' => 'xgm', + 'xgr' => 'xgr', + 'xgu' => 'xgu', + 'xgw' => 'xgw', + 'xha' => 'xha', + 'xhc' => 'xhc', + 'xhd' => 'xhd', + 'xhe' => 'xhe', + 'xh' => 'xh', + 'xho' => 'xh', + 'xhr' => 'xhr', + 'xht' => 'xht', + 'xhu' => 'xhu', + 'xhv' => 'xhv', + 'xib' => 'xib', + 'xii' => 'xii', + 'xil' => 'xil', + 'xin' => 'xin', + 'xir' => 'xir', + 'xis' => 'xis', + 'xiv' => 'xiv', + 'xiy' => 'xiy', + 'xjb' => 'xjb', + 'xjt' => 'xjt', + 'xka' => 'xka', + 'xkb' => 'xkb', + 'xkc' => 'xkc', + 'xkd' => 'xkd', + 'xke' => 'xke', + 'xkf' => 'xkf', + 'xkg' => 'xkg', + 'xki' => 'xki', + 'xkj' => 'xkj', + 'xkk' => 'xkk', + 'xkl' => 'xkl', + 'xkn' => 'xkn', + 'xko' => 'xko', + 'xkp' => 'xkp', + 'xkq' => 'xkq', + 'xkr' => 'xkr', + 'xks' => 'xks', + 'xkt' => 'xkt', + 'xku' => 'xku', + 'xkv' => 'xkv', + 'xkw' => 'xkw', + 'xkx' => 'xkx', + 'xky' => 'xky', + 'xkz' => 'xkz', + 'xla' => 'xla', + 'xlb' => 'xlb', + 'xlc' => 'xlc', + 'xld' => 'xld', + 'xle' => 'xle', + 'xlg' => 'xlg', + 'xli' => 'xli', + 'xln' => 'xln', + 'xlo' => 'xlo', + 'xlp' => 'xlp', + 'xls' => 'xls', + 'xlu' => 'xlu', + 'xly' => 'xly', + 'xma' => 'xma', + 'xmb' => 'xmb', + 'xmc' => 'xmc', + 'xmd' => 'xmd', + 'xme' => 'xme', + 'xmf' => 'xmf', + 'xmg' => 'xmg', + 'xmh' => 'xmh', + 'xmj' => 'xmj', + 'xmk' => 'xmk', + 'xml' => 'xml', + 'xmm' => 'xmm', + 'xmn' => 'xmn', + 'xmo' => 'xmo', + 'xmp' => 'xmp', + 'xmq' => 'xmq', + 'xmr' => 'xmr', + 'xms' => 'xms', + 'xmt' => 'xmt', + 'xmu' => 'xmu', + 'xmv' => 'xmv', + 'xmw' => 'xmw', + 'xmx' => 'xmx', + 'xmy' => 'xmy', + 'xmz' => 'xmz', + 'xna' => 'xna', + 'xnb' => 'xnb', + 'xng' => 'xng', + 'xnh' => 'xnh', + 'xni' => 'xni', + 'xnk' => 'xnk', + 'xnn' => 'xnn', + 'xno' => 'xno', + 'xnr' => 'xnr', + 'xns' => 'xns', + 'xnt' => 'xnt', + 'xnu' => 'xnu', + 'xny' => 'xny', + 'xnz' => 'xnz', + 'xoc' => 'xoc', + 'xod' => 'xod', + 'xog' => 'xog', + 'xoi' => 'xoi', + 'xok' => 'xok', + 'xom' => 'xom', + 'xon' => 'xon', + 'xoo' => 'xoo', + 'xop' => 'xop', + 'xor' => 'xor', + 'xow' => 'xow', + 'xpa' => 'xpa', + 'xpc' => 'xpc', + 'xpe' => 'xpe', + 'xpg' => 'xpg', + 'xpi' => 'xpi', + 'xpj' => 'xpj', + 'xpk' => 'xpk', + 'xpm' => 'xpm', + 'xpn' => 'xpn', + 'xpo' => 'xpo', + 'xpp' => 'xpp', + 'xpq' => 'xpq', + 'xpr' => 'xpr', + 'xps' => 'xps', + 'xpt' => 'xpt', + 'xpu' => 'xpu', + 'xpy' => 'xpy', + 'xqa' => 'xqa', + 'xqt' => 'xqt', + 'xra' => 'xra', + 'xrb' => 'xrb', + 'xrd' => 'xrd', + 'xre' => 'xre', + 'xrg' => 'xrg', + 'xri' => 'xri', + 'xrm' => 'xrm', + 'xrn' => 'xrn', + 'xrq' => 'xrq', + 'xrr' => 'xrr', + 'xrt' => 'xrt', + 'xru' => 'xru', + 'xrw' => 'xrw', + 'xsa' => 'xsa', + 'xsb' => 'xsb', + 'xsc' => 'xsc', + 'xsd' => 'xsd', + 'xse' => 'xse', + 'xsh' => 'xsh', + 'xsi' => 'xsi', + 'xsl' => 'xsl', + 'xsm' => 'xsm', + 'xsn' => 'xsn', + 'xso' => 'xso', + 'xsp' => 'xsp', + 'xsq' => 'xsq', + 'xsr' => 'xsr', + 'xss' => 'xss', + 'xsu' => 'xsu', + 'xsv' => 'xsv', + 'xsy' => 'xsy', + 'xta' => 'xta', + 'xtb' => 'xtb', + 'xtc' => 'xtc', + 'xtd' => 'xtd', + 'xte' => 'xte', + 'xtg' => 'xtg', + 'xth' => 'xth', + 'xti' => 'xti', + 'xtj' => 'xtj', + 'xtl' => 'xtl', + 'xtm' => 'xtm', + 'xtn' => 'xtn', + 'xto' => 'xto', + 'xtp' => 'xtp', + 'xtq' => 'xtq', + 'xtr' => 'xtr', + 'xts' => 'xts', + 'xtt' => 'xtt', + 'xtu' => 'xtu', + 'xtv' => 'xtv', + 'xtw' => 'xtw', + 'xty' => 'xty', + 'xtz' => 'xtz', + 'xua' => 'xua', + 'xub' => 'xub', + 'xud' => 'xud', + 'xug' => 'xug', + 'xuj' => 'xuj', + 'xul' => 'xul', + 'xum' => 'xum', + 'xun' => 'xun', + 'xuo' => 'xuo', + 'xup' => 'xup', + 'xur' => 'xur', + 'xut' => 'xut', + 'xuu' => 'xuu', + 'xve' => 'xve', + 'xvi' => 'xvi', + 'xvn' => 'xvn', + 'xvo' => 'xvo', + 'xvs' => 'xvs', + 'xwa' => 'xwa', + 'xwc' => 'xwc', + 'xwd' => 'xwd', + 'xwe' => 'xwe', + 'xwg' => 'xwg', + 'xwj' => 'xwj', + 'xwk' => 'xwk', + 'xwl' => 'xwl', + 'xwo' => 'xwo', + 'xwr' => 'xwr', + 'xwt' => 'xwt', + 'xww' => 'xww', + 'xxb' => 'xxb', + 'xxk' => 'xxk', + 'xxm' => 'xxm', + 'xxr' => 'xxr', + 'xxt' => 'xxt', + 'xya' => 'xya', + 'xyb' => 'xyb', + 'xyj' => 'xyj', + 'xyk' => 'xyk', + 'xyl' => 'xyl', + 'xyt' => 'xyt', + 'xyy' => 'xyy', + 'xzh' => 'xzh', + 'xzm' => 'xzm', + 'xzp' => 'xzp', + 'yaa' => 'yaa', + 'yab' => 'yab', + 'yac' => 'yac', + 'yad' => 'yad', + 'yae' => 'yae', + 'yaf' => 'yaf', + 'yag' => 'yag', + 'yah' => 'yah', + 'yai' => 'yai', + 'yaj' => 'yaj', + 'yak' => 'yak', + 'yal' => 'yal', + 'yam' => 'yam', + 'yan' => 'yan', + 'yao' => 'yao', + 'yap' => 'yap', + 'yaq' => 'yaq', + 'yar' => 'yar', + 'yas' => 'yas', + 'yat' => 'yat', + 'yau' => 'yau', + 'yav' => 'yav', + 'yaw' => 'yaw', + 'yax' => 'yax', + 'yay' => 'yay', + 'yaz' => 'yaz', + 'yba' => 'yba', + 'ybb' => 'ybb', + 'ybe' => 'ybe', + 'ybh' => 'ybh', + 'ybi' => 'ybi', + 'ybj' => 'ybj', + 'ybk' => 'ybk', + 'ybl' => 'ybl', + 'ybm' => 'ybm', + 'ybn' => 'ybn', + 'ybo' => 'ybo', + 'ybx' => 'ybx', + 'yby' => 'yby', + 'ych' => 'ych', + 'ycl' => 'ycl', + 'ycn' => 'ycn', + 'ycp' => 'ycp', + 'yda' => 'yda', + 'ydd' => 'ydd', + 'yde' => 'yde', + 'ydg' => 'ydg', + 'ydk' => 'ydk', + 'yea' => 'yea', + 'yec' => 'yec', + 'yee' => 'yee', + 'yei' => 'yei', + 'yej' => 'yej', + 'yel' => 'yel', + 'yer' => 'yer', + 'yes' => 'yes', + 'yet' => 'yet', + 'yeu' => 'yeu', + 'yev' => 'yev', + 'yey' => 'yey', + 'yga' => 'yga', + 'ygi' => 'ygi', + 'ygl' => 'ygl', + 'ygm' => 'ygm', + 'ygp' => 'ygp', + 'ygr' => 'ygr', + 'ygs' => 'ygs', + 'ygu' => 'ygu', + 'ygw' => 'ygw', + 'yha' => 'yha', + 'yhd' => 'yhd', + 'yhl' => 'yhl', + 'yhs' => 'yhs', + 'yia' => 'yia', + 'yi' => 'yi', + 'yid' => 'yi', + 'yif' => 'yif', + 'yig' => 'yig', + 'yih' => 'yih', + 'yii' => 'yii', + 'yij' => 'yij', + 'yik' => 'yik', + 'yil' => 'yil', + 'yim' => 'yim', + 'yin' => 'yin', + 'yip' => 'yip', + 'yiq' => 'yiq', + 'yir' => 'yir', + 'yis' => 'yis', + 'yit' => 'yit', + 'yiu' => 'yiu', + 'yiv' => 'yiv', + 'yix' => 'yix', + 'yiz' => 'yiz', + 'yka' => 'yka', + 'ykg' => 'ykg', + 'yki' => 'yki', + 'ykk' => 'ykk', + 'ykl' => 'ykl', + 'ykm' => 'ykm', + 'ykn' => 'ykn', + 'yko' => 'yko', + 'ykr' => 'ykr', + 'ykt' => 'ykt', + 'yku' => 'yku', + 'yky' => 'yky', + 'yla' => 'yla', + 'ylb' => 'ylb', + 'yle' => 'yle', + 'ylg' => 'ylg', + 'yli' => 'yli', + 'yll' => 'yll', + 'ylm' => 'ylm', + 'yln' => 'yln', + 'ylo' => 'ylo', + 'ylr' => 'ylr', + 'ylu' => 'ylu', + 'yly' => 'yly', + 'ymb' => 'ymb', + 'ymc' => 'ymc', + 'ymd' => 'ymd', + 'yme' => 'yme', + 'ymg' => 'ymg', + 'ymh' => 'ymh', + 'ymi' => 'ymi', + 'ymk' => 'ymk', + 'yml' => 'yml', + 'ymm' => 'ymm', + 'ymn' => 'ymn', + 'ymo' => 'ymo', + 'ymp' => 'ymp', + 'ymq' => 'ymq', + 'ymr' => 'ymr', + 'yms' => 'yms', + 'ymx' => 'ymx', + 'ymz' => 'ymz', + 'yna' => 'yna', + 'ynd' => 'ynd', + 'yne' => 'yne', + 'yng' => 'yng', + 'ynk' => 'ynk', + 'ynl' => 'ynl', + 'ynn' => 'ynn', + 'yno' => 'yno', + 'ynq' => 'ynq', + 'yns' => 'yns', + 'ynu' => 'ynu', + 'yob' => 'yob', + 'yog' => 'yog', + 'yoi' => 'yoi', + 'yok' => 'yok', + 'yol' => 'yol', + 'yom' => 'yom', + 'yon' => 'yon', + 'yo' => 'yo', + 'yor' => 'yo', + 'yot' => 'yot', + 'yox' => 'yox', + 'yoy' => 'yoy', + 'ypa' => 'ypa', + 'ypb' => 'ypb', + 'ypg' => 'ypg', + 'yph' => 'yph', + 'ypm' => 'ypm', + 'ypn' => 'ypn', + 'ypo' => 'ypo', + 'ypp' => 'ypp', + 'ypz' => 'ypz', + 'yra' => 'yra', + 'yrb' => 'yrb', + 'yre' => 'yre', + 'yrk' => 'yrk', + 'yrl' => 'yrl', + 'yrm' => 'yrm', + 'yrn' => 'yrn', + 'yro' => 'yro', + 'yrs' => 'yrs', + 'yrw' => 'yrw', + 'yry' => 'yry', + 'ysc' => 'ysc', + 'ysd' => 'ysd', + 'ysg' => 'ysg', + 'ysl' => 'ysl', + 'ysn' => 'ysn', + 'yso' => 'yso', + 'ysp' => 'ysp', + 'ysr' => 'ysr', + 'yss' => 'yss', + 'ysy' => 'ysy', + 'yta' => 'yta', + 'ytl' => 'ytl', + 'ytp' => 'ytp', + 'ytw' => 'ytw', + 'yty' => 'yty', + 'yua' => 'yua', + 'yub' => 'yub', + 'yuc' => 'yuc', + 'yud' => 'yud', + 'yue' => 'yue', + 'yuf' => 'yuf', + 'yug' => 'yug', + 'yui' => 'yui', + 'yuj' => 'yuj', + 'yuk' => 'yuk', + 'yul' => 'yul', + 'yum' => 'yum', + 'yun' => 'yun', + 'yup' => 'yup', + 'yuq' => 'yuq', + 'yur' => 'yur', + 'yut' => 'yut', + 'yuw' => 'yuw', + 'yux' => 'yux', + 'yuy' => 'yuy', + 'yuz' => 'yuz', + 'yva' => 'yva', + 'yvt' => 'yvt', + 'ywa' => 'ywa', + 'ywg' => 'ywg', + 'ywl' => 'ywl', + 'ywn' => 'ywn', + 'ywq' => 'ywq', + 'ywr' => 'ywr', + 'ywt' => 'ywt', + 'ywu' => 'ywu', + 'yww' => 'yww', + 'yxa' => 'yxa', + 'yxg' => 'yxg', + 'yxl' => 'yxl', + 'yxm' => 'yxm', + 'yxu' => 'yxu', + 'yxy' => 'yxy', + 'yyr' => 'yyr', + 'yyu' => 'yyu', + 'yyz' => 'yyz', + 'yzg' => 'yzg', + 'yzk' => 'yzk', + 'zaa' => 'zaa', + 'zab' => 'zab', + 'zac' => 'zac', + 'zad' => 'zad', + 'zae' => 'zae', + 'zaf' => 'zaf', + 'zag' => 'zag', + 'zah' => 'zah', + 'zai' => 'zai', + 'zaj' => 'zaj', + 'zak' => 'zak', + 'zal' => 'zal', + 'zam' => 'zam', + 'zao' => 'zao', + 'zap' => 'zap', + 'zaq' => 'zaq', + 'zar' => 'zar', + 'zas' => 'zas', + 'zat' => 'zat', + 'zau' => 'zau', + 'zav' => 'zav', + 'zaw' => 'zaw', + 'zax' => 'zax', + 'zay' => 'zay', + 'zaz' => 'zaz', + 'zbc' => 'zbc', + 'zbe' => 'zbe', + 'zbl' => 'zbl', + 'zbt' => 'zbt', + 'zbw' => 'zbw', + 'zca' => 'zca', + 'zch' => 'zch', + 'zdj' => 'zdj', + 'zea' => 'zea', + 'zeg' => 'zeg', + 'zeh' => 'zeh', + 'zen' => 'zen', + 'zga' => 'zga', + 'zgb' => 'zgb', + 'zgh' => 'zgh', + 'zgm' => 'zgm', + 'zgn' => 'zgn', + 'zgr' => 'zgr', + 'za' => 'za', + 'zha' => 'za', + 'zhb' => 'zhb', + 'zhd' => 'zhd', + 'zhi' => 'zhi', + 'zhn' => 'zhn', + 'zh' => 'zh', + 'zho' => 'zh', + 'zhw' => 'zhw', + 'zia' => 'zia', + 'zib' => 'zib', + 'zik' => 'zik', + 'zil' => 'zil', + 'zim' => 'zim', + 'zin' => 'zin', + 'zir' => 'zir', + 'ziw' => 'ziw', + 'ziz' => 'ziz', + 'zka' => 'zka', + 'zkb' => 'zkb', + 'zkd' => 'zkd', + 'zkg' => 'zkg', + 'zkh' => 'zkh', + 'zkk' => 'zkk', + 'zkn' => 'zkn', + 'zko' => 'zko', + 'zkp' => 'zkp', + 'zkr' => 'zkr', + 'zkt' => 'zkt', + 'zku' => 'zku', + 'zkv' => 'zkv', + 'zkz' => 'zkz', + 'zlj' => 'zlj', + 'zlm' => 'zlm', + 'zln' => 'zln', + 'zlq' => 'zlq', + 'zma' => 'zma', + 'zmb' => 'zmb', + 'zmc' => 'zmc', + 'zmd' => 'zmd', + 'zme' => 'zme', + 'zmf' => 'zmf', + 'zmg' => 'zmg', + 'zmh' => 'zmh', + 'zmi' => 'zmi', + 'zmj' => 'zmj', + 'zmk' => 'zmk', + 'zml' => 'zml', + 'zmm' => 'zmm', + 'zmn' => 'zmn', + 'zmo' => 'zmo', + 'zmp' => 'zmp', + 'zmq' => 'zmq', + 'zmr' => 'zmr', + 'zms' => 'zms', + 'zmt' => 'zmt', + 'zmu' => 'zmu', + 'zmv' => 'zmv', + 'zmw' => 'zmw', + 'zmx' => 'zmx', + 'zmy' => 'zmy', + 'zmz' => 'zmz', + 'zna' => 'zna', + 'zne' => 'zne', + 'zng' => 'zng', + 'znk' => 'znk', + 'zns' => 'zns', + 'zoc' => 'zoc', + 'zoh' => 'zoh', + 'zom' => 'zom', + 'zoo' => 'zoo', + 'zoq' => 'zoq', + 'zor' => 'zor', + 'zos' => 'zos', + 'zpa' => 'zpa', + 'zpb' => 'zpb', + 'zpc' => 'zpc', + 'zpd' => 'zpd', + 'zpe' => 'zpe', + 'zpf' => 'zpf', + 'zpg' => 'zpg', + 'zph' => 'zph', + 'zpi' => 'zpi', + 'zpj' => 'zpj', + 'zpk' => 'zpk', + 'zpl' => 'zpl', + 'zpm' => 'zpm', + 'zpn' => 'zpn', + 'zpo' => 'zpo', + 'zpp' => 'zpp', + 'zpq' => 'zpq', + 'zpr' => 'zpr', + 'zps' => 'zps', + 'zpt' => 'zpt', + 'zpu' => 'zpu', + 'zpv' => 'zpv', + 'zpw' => 'zpw', + 'zpx' => 'zpx', + 'zpy' => 'zpy', + 'zpz' => 'zpz', + 'zqe' => 'zqe', + 'zra' => 'zra', + 'zrg' => 'zrg', + 'zrn' => 'zrn', + 'zro' => 'zro', + 'zrp' => 'zrp', + 'zrs' => 'zrs', + 'zsa' => 'zsa', + 'zsk' => 'zsk', + 'zsl' => 'zsl', + 'zsm' => 'zsm', + 'zsr' => 'zsr', + 'zsu' => 'zsu', + 'zte' => 'zte', + 'ztg' => 'ztg', + 'ztl' => 'ztl', + 'ztm' => 'ztm', + 'ztn' => 'ztn', + 'ztp' => 'ztp', + 'ztq' => 'ztq', + 'zts' => 'zts', + 'ztt' => 'ztt', + 'ztu' => 'ztu', + 'ztx' => 'ztx', + 'zty' => 'zty', + 'zua' => 'zua', + 'zuh' => 'zuh', + 'zu' => 'zu', + 'zul' => 'zu', + 'zum' => 'zum', + 'zun' => 'zun', + 'zuy' => 'zuy', + 'zwa' => 'zwa', + 'zxx' => 'zxx', + 'zyb' => 'zyb', + 'zyg' => 'zyg', + 'zyj' => 'zyj', + 'zyn' => 'zyn', + 'zyp' => 'zyp', + 'zza' => 'zza', + 'zzj' => 'zzj', +]; diff --git a/MLEB/Babel/composer.json b/MLEB/Babel/composer.json index 4bbb4450..670bb2d2 100644 --- a/MLEB/Babel/composer.json +++ b/MLEB/Babel/composer.json @@ -19,28 +19,25 @@ "irc": "irc://irc.freenode.net/mediawiki-i18n" }, "require": { - "php": ">=5.5.9", + "php": ">=7.1", "composer/installers": ">=1.0.1" }, "require-dev": { - "jakub-onderka/php-parallel-lint": "1.0.0", - "mediawiki/mediawiki-codesniffer": "23.0.0", - "jakub-onderka/php-console-highlighter": "0.3.2", - "mediawiki/minus-x": "0.3.1", - "mediawiki/mediawiki-phan-config": "0.3.0" + "mediawiki/mediawiki-codesniffer": "31.0.0", + "mediawiki/mediawiki-phan-config": "0.10.2", + "mediawiki/minus-x": "1.1.0", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0" }, "scripts": { "fix": [ - "phpcbf", - "minus-x fix ." + "minus-x fix .", + "phpcbf" ], "test": [ "parallel-lint . --exclude vendor --exclude node_modules --exclude extensions", "phpcs -p -s", "minus-x check ." ] - }, - "extra": { - "phan-taint-check-plugin": "1.5.0" } } diff --git a/MLEB/Babel/extension.json b/MLEB/Babel/extension.json index fc60fbef..ba1e936b 100644 --- a/MLEB/Babel/extension.json +++ b/MLEB/Babel/extension.json @@ -1,6 +1,6 @@ { "name": "Babel", - "version": "1.11.1 [https://www.mediawiki.org/wiki/MLEB MLEB 2019.01]", + "version": "1.12.0 [https://www.mediawiki.org/wiki/MLEB MLEB 2020.07]", "author": [ "Robert Leverington", "Thiemo Kreuz", @@ -14,11 +14,12 @@ "license-name": "GPL-2.0-or-later", "type": "parserhook", "requires": { - "MediaWiki": ">= 1.30.0" + "MediaWiki": ">= 1.31.0" }, "MessagesDirs": { "Babel": [ - "i18n" + "i18n", + "i18n/api" ] }, "ExtensionMessagesFiles": { @@ -28,13 +29,10 @@ "Babel": "includes/Babel.php", "BabelLanguageCodes": "includes/BabelLanguageCodes.php", "BabelStatic": "includes/BabelStatic.php", - "BabelAutoCreate": "includes/BabelAutoCreate.php", - "MediaWiki\\Babel\\ApiQueryBabel": "includes/ApiQueryBabel.php", - "MediaWiki\\Babel\\Database": "includes/Database.php", - "MediaWiki\\Babel\\BabelBox\\BabelBox": "includes/BabelBox/BabelBox.php", - "MediaWiki\\Babel\\BabelBox\\LanguageBabelBox": "includes/BabelBox/LanguageBabelBox.php", - "MediaWiki\\Babel\\BabelBox\\NotBabelBox": "includes/BabelBox/NotBabelBox.php", - "MediaWiki\\Babel\\BabelBox\\NullBabelBox": "includes/BabelBox/NullBabelBox.php" + "BabelAutoCreate": "includes/BabelAutoCreate.php" + }, + "AutoloadNamespaces": { + "MediaWiki\\Babel\\": "includes/" }, "APIMetaModules": { "babel": "MediaWiki\\Babel\\ApiQueryBabel" @@ -59,23 +57,33 @@ "UserGetReservedNames": "BabelAutoCreate::onUserGetReservedNames" }, "config": { - "BabelCategorizeNamespaces": null, + "BabelCategorizeNamespaces": { + "value": null + }, "BabelCategoryNames": { - "0": "%code%-0", - "1": "%code%-1", - "2": "%code%-2", - "3": "%code%-3", - "4": "%code%-4", - "5": "%code%-5", - "N": "%code%-N", - "_merge_strategy": "array_plus" + "value": { + "0": "%code%-0", + "1": "%code%-1", + "2": "%code%-2", + "3": "%code%-3", + "4": "%code%-4", + "5": "%code%-5", + "N": "%code%-N" + }, + "merge_strategy": "array_plus" + }, + "BabelMainCategory": { + "value": "%code%" }, - "BabelMainCategory": "%code%", - "BabelDefaultLevel": "N", - "BabelUseUserLanguage": false, - "BabelUseDatabase": false, - "BabelCentralDb": false, - "BabelCentralApi": false + "BabelDefaultLevel": { + "value": "N" + }, + "BabelUseUserLanguage": { + "value": false + }, + "BabelCentralDb": { + "value": false + } }, - "manifest_version": 1 + "manifest_version": 2 } \ No newline at end of file diff --git a/MLEB/Babel/i18n/ab.json b/MLEB/Babel/i18n/ab.json index c138a2e1..6e6380cb 100644 --- a/MLEB/Babel/i18n/ab.json +++ b/MLEB/Babel/i18n/ab.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Purodha" + "Purodha", + "Surprizi" ] }, "babel-footer-url": ":Category:Иалахәцәа рбызшәақәа", @@ -12,9 +13,9 @@ "babel-4": "Ари алахәҩы идыруеит [[$2|$3]] [[$1|ахатәы бызшәа еиҧш]].", "babel-N": "Ари алахәҩы и(л)зы [[$2|$3]] [[$1|и(л)хатәы бызшәас]] иамоуп.", "babel-0-n": "Ари алахәҩы еилыикааӡом [[$1|ма аарла]] еилыикааоит [[$2|аҧсуа бызшәа]].", - "babel-1-n": "Ари алахәҩы [[$2|аҧсшәа]] [[$1|хәҷык]] и(л)дыроит.", + "babel-1-n": "Ари алахәҩы [[$2|аԥсшәа]] [[$1|хәҷык]] и(л)дыроит.", "babel-2-n": "Ари алахәҩы [[$1|абжьаратәи аҳракыра]] [[$2|аҧсышәала]] дцәажәоит.", - "babel-3-n": "Ари алахәҩы [[$2|аҧсшәа]] [[$1|ибзианы]] и(л)дыроит.", + "babel-3-n": "Ари алахәҩы [[$2|аԥсшәа]] [[$1|ибзианы]] и(л)дыроит.", "babel-4-n": "Ари алахәҩы идыруеит [[$2|аҧсуа]] [[$1|ахатәы бызшәа еиҧш]].", - "babel-N-n": "Ари алахәҩы и(л)зы [[$2|аҧсшәа]] [[$1|и(л)хатәы бызшәас]] иамоуп." + "babel-N-n": "Ари алахәҩы и(л)зы [[$2|аԥсшәа]] [[$1|и(л)хатәы бызшәас]] иамоуп." } diff --git a/MLEB/Babel/i18n/af.json b/MLEB/Babel/i18n/af.json index 086fc63b..6f6f916d 100644 --- a/MLEB/Babel/i18n/af.json +++ b/MLEB/Babel/i18n/af.json @@ -2,10 +2,10 @@ "@metadata": { "authors": [ "Arnobarnard", + "Fwolff", "Naudefj", "SPQRobin", - "Winstonza", - "Fwolff" + "Winstonza" ] }, "babel": "Babel-gebruikersinligting", @@ -29,7 +29,5 @@ "babel-4-n": "Hierdie gebruiker het kennis van [[$2|Afrikaans]] op [[$1|byna-moedertaalvlak]].", "babel-5-n": "Hierdie gebruiker het [[$1|professionele]] kennis van [[$2|Afrikaans]].", "babel-N-n": "Hierdie gebruiker het kennis van [[$2|Afrikaans]] op [[$1|moedertaalvlak]].", - "babel-footer": "Gebruikers per taal", - "apihelp-query+babel-description": "Kry inligting oor watter tale die gebruiker ken", - "apihelp-query+babel-summary": "Kry inligting oor watter tale die gebruiker ken" + "babel-footer": "Gebruikers per taal" } diff --git a/MLEB/Babel/i18n/ais.json b/MLEB/Babel/i18n/ais.json deleted file mode 100644 index aabf5bcb..00000000 --- a/MLEB/Babel/i18n/ais.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Benel", - "Bunukwiki" - ] - }, - "babel": "Babel misaungayay a cesyun", - "babel-desc": "nipabeli #babel mapulita taneng malunuk masanga’ cacay tanengay pisaungay pakuniza misanga’ taazihan mitudungaya misaungayay kamu cesyun a langat", - "babel-url": "Project:Babel", - "babel-footer-url": ":Category:Babel - misaungayay (ahizan tu kamu)", - "babel-autocreate-reason": "lunuk patizeng [[$1|Babel]] kakuniza kasabelih.", - "babel-autocreate-text-levels": "i tina kakuniza a misaungayay dayhiw kya izaway kasaselel $1 a $2 kamu a icel.", - "babel-autocreate-text-main": "ilabu tina kakuniza a misaungayay dayhiw niza a kamu $1 matinengay a kasaselal.", - "babel-0": "tina misaungayay [[$1|caay]] matineng saca caay katinengen [[$2|$3]] (saca izaw ku kakaliyuhan matineng).", - "babel-1": "tina misaungayay matineng [[$1|angangan]] da’su a [[$2|$3]].", - "babel-2": "tina misaungayay matineng [[$1|teban]] da’su a [[$2|$3]].", - "babel-3": "tina misaungayay matineng [[$1|tapabaw]] da’su a [[$2|$3]].", - "babel-4": "tina misaungayay matineng [[$1|micapi kamu-nina]] da’su a [[$2|$3]].", - "babel-5": "tina misaungayay matineng [[$1|mitesekay]] da’su a [[$2|$3]]", - "babel-N": "tina misaungayay matineng [[$1|kamu nina]] da’su a [[$2|$3]].", - "babel-0-n": "tina misaungayay [[$1|caay]] matineng saca kaliyuhan matineng [[$2|Taywan Hulam a kamu]] (saca izaw ku cacay a kaliyuhan matineng).", - "babel-1-n": "tina misaungayay matineng [[$1|tapabaway a cakat]] da’su a [[$2|kamu nu Sakizaya]].", - "babel-2-n": "tina misaungayay matineng [[$1|teban a cakat]] da’su a [[$2|kamu nu Sakizya]].", - "babel-3-n": "tina misaungayay matineng [[$1| tapabaway a cakat ]] da’su a [[$2|kamu nu Sakizaya]].", - "babel-4-n": "tina misaungayay matineng [[$1|micapi tu kamu nu ina]] tanusukay [[$2|kamu nu Sakizaya]]", - "babel-5-n": "tina misaungayay matineng [[$1|mitesekay]] da’su a [[$2|kamu nu Sakizaya]].", - "babel-N-n": "tina misaungayay matineng[[$1|kamu-nina]] da’su a [[$2|kamu nu Sakizaya]].", - "babel-footer": "misaungayay (ahizan tu kamu)", - "apihelp-query+babel-description": "maala mahizaay misaungayay matineng canan a kamu cesyun", - "apihelp-query+babel-param-user": "amiala mahizaay cesyun a misaungayay", - "apihelp-query+babel-example-1": "mialaan tu misaungayay Example a Babel cesyun" -} diff --git a/MLEB/Babel/i18n/aln.json b/MLEB/Babel/i18n/aln.json index 0ad70e87..2c34d8b1 100644 --- a/MLEB/Babel/i18n/aln.json +++ b/MLEB/Babel/i18n/aln.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Bresta", - "Ammartivari" + "Ammartivari", + "Bresta" ] }, "babel": "Informatat e përdoruesit në babel", diff --git a/MLEB/Babel/i18n/am.json b/MLEB/Babel/i18n/am.json index e59c172d..9423966f 100644 --- a/MLEB/Babel/i18n/am.json +++ b/MLEB/Babel/i18n/am.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ - "Purodha", "Elfalem", - "Liuxinyu970226" + "Liuxinyu970226", + "Purodha" ] }, "babel-url": "Project:ልሳናት", diff --git a/MLEB/Babel/i18n/ann.json b/MLEB/Babel/i18n/ann.json new file mode 100644 index 00000000..b2f442ee --- /dev/null +++ b/MLEB/Babel/i18n/ann.json @@ -0,0 +1,29 @@ +{ + "@metadata": { + "authors": [ + "Katelem" + ] + }, + "babel": "Etip \"Babel\" ofolek òsikwaan̄", + "babel-desc": "Ìkitap \"parsar function\" eyi #babel isọkọ kè okop-òsikwaan̄ eyi babel isibi ikeke me lek kan̄ mè ikaan̄ si unye itatap lek tempulet eweekbe.", + "babel-url": "Project:Babel", + "babel-footer-url": ":Category:Babel - Ebi kè òsikwaan̄ gọọk me otu-usem", + "babel-autocreate-reason": "Òkinama akpọk eyi ukpa [[$1|Babel]] me lek kan̄.", + "babel-autocreate-text-levels": "Òsikwaan̄ ìkup me ukpa keyi ejeen̄ ibe ke ema mîriọọn̄ usem $2 kire $1.", + "babel-autocreate-text-main": "Òsikwaan̄ ìkup me ukpa keyi ejeen̄ ibe ke ema mîriọọn̄ usem $1.", + "babel-0": "Òsikwaan̄ yi [[$1|ìkariọọn̄]] usem [[$2|$3]] (sà ìre îkiyọt enenen ọmọ igogobo itet).", + "babel-1": "Òsikwaan̄ yi îriọọn̄ usem [[$2|$3]] inwọn [[$1|sọnja]].", + "babel-2": "Òsikwaan̄ yi îriọọn̄ usem [[$2|$3]] sọn̄ [[$1|oke-oke]].", + "babel-3": "Òsikwaan̄ yi îriọọn̄ [[$2|$3]] [[$1|idọk sọnja]].", + "babel-4": "Òsikwaan̄ yi îriọọn̄ [[$2|$3]] [[$1|igbet bọn-owot]].", + "babel-5": "Òsikwaan̄ yi îriọọn̄ [[$2|$3]] kire ebi [[$1|usọ]].", + "babel-N": "Òsikwaan̄ yi îriọọn̄ [[$2|$3]] kire [[$1|bọn-owot]].", + "babel-0-n": "Òsikwaan̄ yi [[$1|ìkariọọn̄]] usem [[$2|Obolo]] (sà ìre îkiyọt enenen ọmọ igogobo itet).", + "babel-1-n": "Òsikwaan̄ yi îriọọn̄ [[$2|Obolo]] [[$1|sọnja]].", + "babel-2-n": "Òsikwaan̄ yi îriọọn̄ usem [[$2|Obolo]] sọn̄ [[$1|oke-oke]].", + "babel-3-n": "Òsikwaan̄ yi îriọọn̄ [[$2|Obolo]] [[$1|idọk sọnja]].", + "babel-4-n": "Òsikwaan̄ yi îriọọn̄ [[$2|Obolo]] [[$1|igbet bọn-owot]].", + "babel-5-n": "Òsikwaan̄ yi îriọọn̄ [[$2|Obolo]] kire ebi [[$1|usọ]] usem.", + "babel-N-n": "Òsikwaan̄ yi îriọọn̄ [[$2|Obolo]] kire [[$1|bọn-owot]].", + "babel-footer": "Ebi kè òsikwaan̄ gọọk me otu-usem" +} diff --git a/MLEB/Babel/i18n/api/af.json b/MLEB/Babel/i18n/api/af.json new file mode 100644 index 00000000..cef02dc5 --- /dev/null +++ b/MLEB/Babel/i18n/api/af.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Fwolff" + ] + }, + "apihelp-query+babel-description": "Kry inligting oor watter tale die gebruiker ken", + "apihelp-query+babel-summary": "Kry inligting oor watter tale die gebruiker ken" +} diff --git a/MLEB/Babel/i18n/api/ar.json b/MLEB/Babel/i18n/api/ar.json new file mode 100644 index 00000000..49e45773 --- /dev/null +++ b/MLEB/Babel/i18n/api/ar.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Abanima" + ] + }, + "apihelp-query+babel-description": "الحصول على معلومات حول اللغات التي يعرفها المستخدم", + "apihelp-query+babel-summary": "الحصول على معلومات حول اللغات التي يعرفها المستخدم.", + "apihelp-query+babel-param-user": "المستخدم المطلوب الحصول على المعلومات عنه", + "apihelp-query+babel-example-1": "الحصول على معلومات بابل للمستخدم مثال" +} diff --git a/MLEB/Babel/i18n/api/ary.json b/MLEB/Babel/i18n/api/ary.json new file mode 100644 index 00000000..b7ac8ae0 --- /dev/null +++ b/MLEB/Babel/i18n/api/ary.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "SADIQUI" + ] + }, + "apihelp-query+babel-description": "الحصول على معلومات على اللغات اللي كيعرفها المستخدم", + "apihelp-query+babel-summary": "الحصول على معلومات على اللغات اللي كيعرفها المستخدم", + "apihelp-query+babel-param-user": "المستخدم المطلوب الحصول على المعلومات عليه", + "apihelp-query+babel-example-1": "الحصول على معلومات بابل ديال المستخدم مثال" +} diff --git a/MLEB/Babel/i18n/api/ast.json b/MLEB/Babel/i18n/api/ast.json new file mode 100644 index 00000000..fb07d461 --- /dev/null +++ b/MLEB/Babel/i18n/api/ast.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Xuacu" + ] + }, + "apihelp-query+babel-description": "Algamar información de les llingües que sabe l'usuariu", + "apihelp-query+babel-summary": "Ver información de les llingües que conoz l'usuariu", + "apihelp-query+babel-param-user": "Usuariu del que recibir información", + "apihelp-query+babel-example-1": "Algamar la información de Babel del usuariu Exemplu" +} diff --git a/MLEB/Babel/i18n/api/avk.json b/MLEB/Babel/i18n/api/avk.json new file mode 100644 index 00000000..5cb48ca0 --- /dev/null +++ b/MLEB/Babel/i18n/api/avk.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Axel xadolik" + ] + }, + "apihelp-query+babel-description": "Seotara va giva icde ava grupena gan favesik", + "apihelp-query+babel-summary": "Seotara va giva icde ava grupena gan favesik" +} diff --git a/MLEB/Babel/i18n/api/bcl.json b/MLEB/Babel/i18n/api/bcl.json new file mode 100644 index 00000000..36161afd --- /dev/null +++ b/MLEB/Babel/i18n/api/bcl.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Brazal.dang" + ] + }, + "apihelp-query+babel-description": "Magkua nin impormasyon sa kun anu ang lengguaheng aram kan paragamit", + "apihelp-query+babel-summary": "Magkua nin impormasyon sa kun anu-ano an mga lengguaheng aram kan paragamit", + "apihelp-query+babel-param-user": "Paragamit na kukuanan impormasyon", + "apihelp-query+babel-example-1": "Magkua kan impormasyon Babel para sa paragamit" +} diff --git a/MLEB/Babel/i18n/api/be-tarask.json b/MLEB/Babel/i18n/api/be-tarask.json new file mode 100644 index 00000000..e781ebc2 --- /dev/null +++ b/MLEB/Babel/i18n/api/be-tarask.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Red Winged Duck" + ] + }, + "apihelp-query+babel-description": "Атрымаць зьвесткі, якімі мовамі валодае ўдзельнік", + "apihelp-query+babel-summary": "Атрымаць інфармацыю пра мовы, якія ведае ўдзельнік", + "apihelp-query+babel-param-user": "Удзельнік, пра якога атрымаць інфармацыю", + "apihelp-query+babel-example-1": "Атрымаць зьвесткі Бабілёнскай вежы для ўдзельніка Example" +} diff --git a/MLEB/Babel/i18n/api/be.json b/MLEB/Babel/i18n/api/be.json new file mode 100644 index 00000000..d2940520 --- /dev/null +++ b/MLEB/Babel/i18n/api/be.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Mechanizatar" + ] + }, + "apihelp-query+babel-description": "Атрымаць звесткі пра тое, якімі мовамі валодае ўдзельнік", + "apihelp-query+babel-param-user": "Удзельнік, пра якога атрымаць інфармацыю", + "apihelp-query+babel-example-1": "Атрымаць інфармацыю пра валоданне моваў для ўдзельніка Example" +} diff --git a/MLEB/Babel/i18n/api/bqi.json b/MLEB/Babel/i18n/api/bqi.json new file mode 100644 index 00000000..bce5aee3 --- /dev/null +++ b/MLEB/Babel/i18n/api/bqi.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Mogoeilor" + ] + }, + "apihelp-query+babel-param-user": "کاریار اْخا دونسمٱندی ز .... داشداْ بۊ" +} diff --git a/MLEB/Babel/i18n/api/br.json b/MLEB/Babel/i18n/api/br.json new file mode 100644 index 00000000..eabe1b1c --- /dev/null +++ b/MLEB/Babel/i18n/api/br.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Fulup" + ] + }, + "apihelp-query+babel-description": "Gouzout peseurt yezhoù a oar an implijer", + "apihelp-query+babel-param-user": "Implijer da gaout titouroù diwar e benn", + "apihelp-query+babel-example-1": "Gouzout an titouroù Babel evit an implijer Example" +} diff --git a/MLEB/Babel/i18n/api/ca.json b/MLEB/Babel/i18n/api/ca.json new file mode 100644 index 00000000..ddf49c79 --- /dev/null +++ b/MLEB/Babel/i18n/api/ca.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Ssola", + "Vriullop" + ] + }, + "apihelp-query+babel-description": "Obtenció d'informació sobre les llengües que l'usuari coneix", + "apihelp-query+babel-summary": "Obté informació sobre les llengües que l'usuari coneix", + "apihelp-query+babel-param-user": "Usuari del qual obtenir informació", + "apihelp-query+babel-example-1": "Obtenir la informació Babel per a l'usuari Example" +} diff --git a/MLEB/Babel/i18n/api/cs.json b/MLEB/Babel/i18n/api/cs.json new file mode 100644 index 00000000..82d6fd8f --- /dev/null +++ b/MLEB/Babel/i18n/api/cs.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Clon" + ] + }, + "apihelp-query+babel-description": "Získat informace o tom, jaké jazyky uživatel zná" +} diff --git a/MLEB/Babel/i18n/api/csb.json b/MLEB/Babel/i18n/api/csb.json new file mode 100644 index 00000000..6243df56 --- /dev/null +++ b/MLEB/Babel/i18n/api/csb.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Kaszeba" + ] + }, + "apihelp-query+babel-description": "Dobiwô wëdowiédzã ò tim, jaczé jãzëczi znaje nen brëkòwnik.", + "apihelp-query+babel-summary": "Dobiwô wëdowiédzã ò tim, jaczé jãzëczi znaje nen brëkòwnik", + "apihelp-query+babel-param-user": "Brëkòwnik do dobicô ò nim wëdowiédzë", + "apihelp-query+babel-example-1": "Dibiwô wëdowiédzã Babel dlô brëkòwnika Przëmiôr" +} diff --git a/MLEB/Babel/i18n/api/da.json b/MLEB/Babel/i18n/api/da.json new file mode 100644 index 00000000..b62d680e --- /dev/null +++ b/MLEB/Babel/i18n/api/da.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Saederup92" + ] + }, + "apihelp-query+babel-description": "Hent oplysninger om hvilke sprog brugeren kender", + "apihelp-query+babel-summary": "Hent oplysninger om hvilke sprog brugeren kender", + "apihelp-query+babel-param-user": "Bruger der skal hentes information om" +} diff --git a/MLEB/Babel/i18n/api/de.json b/MLEB/Babel/i18n/api/de.json new file mode 100644 index 00000000..20cfa076 --- /dev/null +++ b/MLEB/Babel/i18n/api/de.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Crazy1880", + "Metalhead64" + ] + }, + "apihelp-query+babel-description": "Ruft Informationen darüber ab, welche Sprachen der Benutzer beherrscht.", + "apihelp-query+babel-summary": "Ruft Informationen darüber ab, welche Sprachen der Benutzer beherrscht.", + "apihelp-query+babel-param-user": "Benutzer, für den die Informationen abgerufen werden sollen.", + "apihelp-query+babel-example-1": "Ruft die Babel-Informationen für den Benutzer Beispiel ab" +} diff --git a/MLEB/Babel/i18n/api/diq.json b/MLEB/Babel/i18n/api/diq.json new file mode 100644 index 00000000..41558165 --- /dev/null +++ b/MLEB/Babel/i18n/api/diq.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Kumkumuk", + "Mirzali" + ] + }, + "apihelp-query+babel-description": "Karbero kı çı zıwan zano şo heqdë cı malumat bıvin", + "apihelp-query+babel-summary": "Karber kamci zıwanan zaneno, derheqê ey melumat bıgê", + "apihelp-query+babel-param-user": "Şo heqdë karberi malumat", + "apihelp-query+babel-example-1": "Misal şo Babil malumata karberi" +} diff --git a/MLEB/Babel/i18n/api/el.json b/MLEB/Babel/i18n/api/el.json new file mode 100644 index 00000000..749b58e0 --- /dev/null +++ b/MLEB/Babel/i18n/api/el.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Nikosgranturismogt" + ] + }, + "apihelp-query+babel-description": "Λάβετε πληροφορίες για το ποιες γλώσσες ξέρει ο χρήστης", + "apihelp-query+babel-summary": "Λάβετε πληροφορίες για το ποιες γλώσσες ξέρει ο χρήστης", + "apihelp-query+babel-param-user": "Χρήστης για τον οποίο θα ληφθούν πληροφορίες", + "apihelp-query+babel-example-1": "Λάβετε πληροφορίες Βαβέλ για τον χρήστη Παράδειγμα" +} diff --git a/MLEB/Babel/i18n/api/en-gb.json b/MLEB/Babel/i18n/api/en-gb.json new file mode 100644 index 00000000..c9db9079 --- /dev/null +++ b/MLEB/Babel/i18n/api/en-gb.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Dejavu" + ] + }, + "apihelp-query+babel-description": "Get information about what languages the user knows", + "apihelp-query+babel-param-user": "User to get information about", + "apihelp-query+babel-example-1": "Get the Babel information for user Example" +} diff --git a/MLEB/Babel/i18n/api/en.json b/MLEB/Babel/i18n/api/en.json new file mode 100644 index 00000000..c50f69e0 --- /dev/null +++ b/MLEB/Babel/i18n/api/en.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Kunal Mehta", + "Brad Jorsch" + ] + }, + "apihelp-query+babel-description": "Get information about what languages the user knows", + "apihelp-query+babel-summary": "Get information about what languages the user knows", + "apihelp-query+babel-param-user": "User to get information about", + "apihelp-query+babel-example-1": "Get the Babel information for user Example" +} diff --git a/MLEB/Babel/i18n/api/eo.json b/MLEB/Babel/i18n/api/eo.json new file mode 100644 index 00000000..f48ca20d --- /dev/null +++ b/MLEB/Babel/i18n/api/eo.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Mirin" + ] + }, + "apihelp-query+babel-description": "Akiri informon pri kiujn lingvojn la uzanto scias", + "apihelp-query+babel-summary": "Akiri informon pri kiujn lingvojn la uzanto scias", + "apihelp-query+babel-param-user": "Uzanto pri kiu oni volas scii", + "apihelp-query+babel-example-1": "Akiri la Babel-informon pri uzanto Example" +} diff --git a/MLEB/Babel/i18n/api/es.json b/MLEB/Babel/i18n/api/es.json new file mode 100644 index 00000000..e79c6c2d --- /dev/null +++ b/MLEB/Babel/i18n/api/es.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Fitoschido", + "Macofe" + ] + }, + "apihelp-query+babel-description": "Obtener información sobre los idiomas que el usuario sabe", + "apihelp-query+babel-summary": "Obtener información sobre los idiomas que conoce el usuario", + "apihelp-query+babel-param-user": "Usuario del cual obtener información", + "apihelp-query+babel-example-1": "Obtener la información de Babel del usuario Example" +} diff --git a/MLEB/Babel/i18n/api/eu.json b/MLEB/Babel/i18n/api/eu.json new file mode 100644 index 00000000..7ba8b81b --- /dev/null +++ b/MLEB/Babel/i18n/api/eu.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Sator", + "Theklan" + ] + }, + "apihelp-query+babel-description": "Eskuratu lakideak dakizkien hizkuntzen inguruko informazioa", + "apihelp-query+babel-summary": "Lankideak dakizkien hizkuntzen inguruko informazioa jaso", + "apihelp-query+babel-param-user": "Zein lankideren informazioa lortu", + "apihelp-query+babel-example-1": "Adibide lankidearen Babel informazioa lortu" +} diff --git a/MLEB/Babel/i18n/api/fa.json b/MLEB/Babel/i18n/api/fa.json new file mode 100644 index 00000000..58287dc3 --- /dev/null +++ b/MLEB/Babel/i18n/api/fa.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Ladsgroup", + "Rtemis" + ] + }, + "apihelp-query+babel-description": "درباره اینکه کاربر چه زبان‌هایی می‌داند اطلاعات دریافت کن", + "apihelp-query+babel-summary": "درباره زبان‌هایی که کاربر می‌داند اطلاعاتی بگیر", + "apihelp-query+babel-param-user": "کاربر برای دریافت اطلاعات", + "apihelp-query+babel-example-1": "گرفتن اطلاعات زبانی برای کاربر Example" +} diff --git a/MLEB/Babel/i18n/api/fr.json b/MLEB/Babel/i18n/api/fr.json new file mode 100644 index 00000000..9b8e82e0 --- /dev/null +++ b/MLEB/Babel/i18n/api/fr.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Gomoko", + "Urhixidur" + ] + }, + "apihelp-query+babel-description": "Obtenir des informations sur les langues connues de l’utilisateur", + "apihelp-query+babel-summary": "Obtenir des informations sur les langues que connaît l’utilisateur", + "apihelp-query+babel-param-user": "Utilisateur à propos duquel obtenir des informations", + "apihelp-query+babel-example-1": "Obtenir les informations de Babel pour l’utilisateur Example" +} diff --git a/MLEB/Babel/i18n/api/gcr.json b/MLEB/Babel/i18n/api/gcr.json new file mode 100644 index 00000000..9a6b92e1 --- /dev/null +++ b/MLEB/Babel/i18n/api/gcr.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "LeGuyanaisPure" + ] + }, + "apihelp-query+babel-description": "Òbténi dé lenfòrmasyon asou lanng-yan ki konnèt pa itilizatò-a", + "apihelp-query+babel-summary": "Òbténi dé lenfòrmasyon asou lanng-yan ki itilizatò-a ka konnèt", + "apihelp-query+babel-param-user": "Itilizatò apropo dikèl òbténi dé lenfòrmasyon", + "apihelp-query+babel-example-1": "Òbténi lenfòrmasyon-yan di Babel pou itilizatò-a Example" +} diff --git a/MLEB/Babel/i18n/api/gl.json b/MLEB/Babel/i18n/api/gl.json new file mode 100644 index 00000000..17587cf8 --- /dev/null +++ b/MLEB/Babel/i18n/api/gl.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Elisardojm" + ] + }, + "apihelp-query+babel-description": "Obter información sobre as linguas que o usuario coñece", + "apihelp-query+babel-summary": "Obter información sobre as linguas que coñece o usuario", + "apihelp-query+babel-param-user": "Usuario do cal obter a información", + "apihelp-query+babel-example-1": "Obtener a información de Babel do usuario Example" +} diff --git a/MLEB/Babel/i18n/api/gu.json b/MLEB/Babel/i18n/api/gu.json new file mode 100644 index 00000000..dadffd00 --- /dev/null +++ b/MLEB/Babel/i18n/api/gu.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "KartikMistry" + ] + }, + "apihelp-query+babel-description": "સભ્ય કઇ ભાષા જાણે છે તે વિશે માહિતી મેળવો", + "apihelp-query+babel-param-user": "સભ્ય આ વિશે માહિતી મેળવશે", + "apihelp-query+babel-example-1": "સભ્ય માટે બાબેલ માહિતી મેળવો ઉદાહરણ" +} diff --git a/MLEB/Babel/i18n/api/he.json b/MLEB/Babel/i18n/api/he.json new file mode 100644 index 00000000..ca9a205b --- /dev/null +++ b/MLEB/Babel/i18n/api/he.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Amire80" + ] + }, + "apihelp-query+babel-description": "קבלת מידע על שפות שהמשתמש יודע", + "apihelp-query+babel-summary": "קבלת מידע על השפות שהמשתמש יודע", + "apihelp-query+babel-param-user": "על איזה משתמש לקבל מידע", + "apihelp-query+babel-example-1": "קבלת מידע Babel על המשתמש Example" +} diff --git a/MLEB/Babel/i18n/api/hi.json b/MLEB/Babel/i18n/api/hi.json new file mode 100644 index 00000000..ae25f74d --- /dev/null +++ b/MLEB/Babel/i18n/api/hi.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Innocentbunny", + "Sfic" + ] + }, + "apihelp-query+babel-description": "सदस्य कितनी भाषाओं को जानता है, इस बारे में जानकारी लें", + "apihelp-query+babel-summary": "उपयोक्ता द्वारा ज्ञात भाषाओँ की सूचना अर्जित करें", + "apihelp-query+babel-param-user": "सदस्य के बारे में जानकारी लें", + "apihelp-query+babel-example-1": "सदस्य उदाहरण के बारे में बबेल जानकारी लें" +} diff --git a/MLEB/Babel/i18n/api/hu.json b/MLEB/Babel/i18n/api/hu.json new file mode 100644 index 00000000..b3a13fe9 --- /dev/null +++ b/MLEB/Babel/i18n/api/hu.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Tacsipacsi" + ] + }, + "apihelp-query+babel-description": "Információk lekérése a felhasználó által beszélt nyelvekről", + "apihelp-query+babel-summary": "Információk lekérése a felhasználó által beszélt nyelvekről", + "apihelp-query+babel-param-user": "Lekérdezendő felhasználó", + "apihelp-query+babel-example-1": "Bábel-információk lekérése Example-ről" +} diff --git a/MLEB/Babel/i18n/api/ia.json b/MLEB/Babel/i18n/api/ia.json new file mode 100644 index 00000000..46e7547e --- /dev/null +++ b/MLEB/Babel/i18n/api/ia.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "McDutchie" + ] + }, + "apihelp-query+babel-description": "Obtener information sur le linguas que le usator cognosce", + "apihelp-query+babel-summary": "Obtener information sur le linguas que le usator cognosce", + "apihelp-query+babel-param-user": "Le usator sur le qual obtener information", + "apihelp-query+babel-example-1": "Obtener information Babel pro usator Example" +} diff --git a/MLEB/Babel/i18n/api/id.json b/MLEB/Babel/i18n/api/id.json new file mode 100644 index 00000000..adc239b0 --- /dev/null +++ b/MLEB/Babel/i18n/api/id.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Gombang", + "Rachmat04" + ] + }, + "apihelp-query+babel-description": "Dapatkan informasi mengenai bahasa yang diketahui pengguna ini", + "apihelp-query+babel-summary": "Dapatkan informasi mengenai bahasa apa yang diketahui oleh pengguna ini", + "apihelp-query+babel-param-user": "Pengguna yang informasinya akan didapatkan", + "apihelp-query+babel-example-1": "Dapatkan informasi Babel untuk pengguna Contoh" +} diff --git a/MLEB/Babel/i18n/api/ilo.json b/MLEB/Babel/i18n/api/ilo.json new file mode 100644 index 00000000..6c64ab05 --- /dev/null +++ b/MLEB/Babel/i18n/api/ilo.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Lam-ang" + ] + }, + "apihelp-query+babel-description": "Agala ti pakaammo a maipanggep no ania dagiti pagsasao nga ammo ti agar-aramat", + "apihelp-query+babel-summary": "Agala iti pakaammo a maipanggep kadagiti pagsasao nga ammo ti agar-aramat", + "apihelp-query+babel-param-user": "Ti agar-aramat a pagalaan iti pakaammo", + "apihelp-query+babel-example-1": "Alaen ti pakaammo ti Babel para kenni agar-aramat Pagarigan" +} diff --git a/MLEB/Babel/i18n/api/it.json b/MLEB/Babel/i18n/api/it.json new file mode 100644 index 00000000..743ac239 --- /dev/null +++ b/MLEB/Babel/i18n/api/it.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Beta16" + ] + }, + "apihelp-query+babel-description": "Ottieni informazioni su quali lingue l'utente conosce", + "apihelp-query+babel-summary": "Ottieni informazioni su quali lingue l'utente conosce", + "apihelp-query+babel-param-user": "Utente sul quale ottenere informazioni", + "apihelp-query+babel-example-1": "Ottieni informazioni Babel per l'utente Example" +} diff --git a/MLEB/Babel/i18n/api/ja.json b/MLEB/Babel/i18n/api/ja.json new file mode 100644 index 00000000..42abc903 --- /dev/null +++ b/MLEB/Babel/i18n/api/ja.json @@ -0,0 +1,13 @@ +{ + "@metadata": { + "authors": [ + "Afaz", + "Shirayuki", + "ネイ" + ] + }, + "apihelp-query+babel-description": "利用者が知識を有する言語の情報を取得", + "apihelp-query+babel-summary": "利用者が知っている言語についての情報を取得する", + "apihelp-query+babel-param-user": "情報を取得する対象の利用者", + "apihelp-query+babel-example-1": "利用者Exampleのバベル情報を取得" +} diff --git a/MLEB/Babel/i18n/api/jv.json b/MLEB/Babel/i18n/api/jv.json new file mode 100644 index 00000000..b1165d36 --- /dev/null +++ b/MLEB/Babel/i18n/api/jv.json @@ -0,0 +1,13 @@ +{ + "@metadata": { + "authors": [ + "Diki Ananta", + "NoiX180", + "Sumbukompor" + ] + }, + "apihelp-query+babel-description": "Golèk katerangan bab basa sing dingertèni naraguna", + "apihelp-query+babel-summary": "Golèk katerangan bab basa sing dingertèni naraguna", + "apihelp-query+babel-param-user": "Naraguna sing arep digolèki katerangané", + "apihelp-query+babel-example-1": "Golèk katerangan Babel tumrap naraguna Conto" +} diff --git a/MLEB/Babel/i18n/api/ka.json b/MLEB/Babel/i18n/api/ka.json new file mode 100644 index 00000000..42283a12 --- /dev/null +++ b/MLEB/Babel/i18n/api/ka.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "BRUTE" + ] + }, + "apihelp-query+babel-param-user": "მომხმარებელი, რომელზეც გვინდა ვნახოთ ინფორმაცია" +} diff --git a/MLEB/Babel/i18n/api/kjp.json b/MLEB/Babel/i18n/api/kjp.json new file mode 100644 index 00000000..5c8f2aa4 --- /dev/null +++ b/MLEB/Babel/i18n/api/kjp.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Rul1902" + ] + }, + "apihelp-query+babel-description": "မ်ုယောဝ်ႋဆ်ုသုံ့ဆာသှ်ေယာ့ ဆ်ုခၠါင်ဘာႋသာ့အ်ုၯာင်ႋအ်ုကျံင် အ်ုကျံင်ႋ", + "apihelp-query+babel-summary": "မ်ုယောဝ်ႋဆ်ုသုံ့ဆာသှ်ေယာ့ ဆ်ုခၠါင်ဘာႋသာ့အ်ုၯာင်ႋအ်ုကျံင် အ်ုကျံင်ႋ", + "apihelp-query+babel-param-user": "ဆ်ုသုံ့ဆာ မ်ုမာၮေဝ်ႋအ်ုၯာင်ႋအ်ုကျံင်", + "apihelp-query+babel-example-1": "မ်ုမာ ဆ်ုသုံ့ဆာၯင်း ၜေပ်ုအ်ုၯာင်ႋအ်ုကျံင် အ်ုဍံင်" +} diff --git a/MLEB/Babel/i18n/api/kk-cyrl.json b/MLEB/Babel/i18n/api/kk-cyrl.json new file mode 100644 index 00000000..51902091 --- /dev/null +++ b/MLEB/Babel/i18n/api/kk-cyrl.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Mirgulkali" + ] + }, + "apihelp-query+babel-description": "Пайдаланушы білетін тілдер туралы мәлімет тауып алу", + "apihelp-query+babel-example-1": "Пайдаланушы Example үшін Бабыл мәліметтерін тауып алу" +} diff --git a/MLEB/Babel/i18n/api/ko.json b/MLEB/Babel/i18n/api/ko.json new file mode 100644 index 00000000..5ea02416 --- /dev/null +++ b/MLEB/Babel/i18n/api/ko.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Kwj2772", + "Ykhwong" + ] + }, + "apihelp-query+babel-description": "사용자가 알고 있는 언어에 관한 정보를 가져옵니다", + "apihelp-query+babel-summary": "사용자가 알고 있는 언어에 관한 정보를 가져옵니다", + "apihelp-query+babel-param-user": "정보를 받아올 대상 사용자", + "apihelp-query+babel-example-1": "사용자 Example의 바벨 정보를 불러오기" +} diff --git a/MLEB/Babel/i18n/api/lb.json b/MLEB/Babel/i18n/api/lb.json new file mode 100644 index 00000000..cb4fdffa --- /dev/null +++ b/MLEB/Babel/i18n/api/lb.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Robby" + ] + }, + "apihelp-query+babel-description": "Informatioune kréien iwwer déi Sproochen déi de Benotzer kann", + "apihelp-query+babel-param-user": "Benotzer fir den d'Informatiounen ugefrot ginn", + "apihelp-query+babel-example-1": "Babel-Informatioun fir de Benotzer Beispill kréien" +} diff --git a/MLEB/Babel/i18n/api/li.json b/MLEB/Babel/i18n/api/li.json new file mode 100644 index 00000000..397507ed --- /dev/null +++ b/MLEB/Babel/i18n/api/li.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Ooswesthoesbes" + ] + }, + "apihelp-query+babel-description": "Krieg infermasie euver welche spraoke de gebroeker kèntj", + "apihelp-query+babel-summary": "Krieg infermasie euver welche spraoke de gebroeker kèntj", + "apihelp-query+babel-param-user": "Gebroeker wo me infermasie euver krieg", + "apihelp-query+babel-example-1": "Veure Babel-infermasie veure gebroeker Veurbild" +} diff --git a/MLEB/Babel/i18n/api/lij.json b/MLEB/Babel/i18n/api/lij.json new file mode 100644 index 00000000..c3884308 --- /dev/null +++ b/MLEB/Babel/i18n/api/lij.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Giromin Cangiaxo" + ] + }, + "apihelp-query+babel-description": "Otegni informaçioin insce quæ lengue l'utente o conosce", + "apihelp-query+babel-param-user": "Utente in sciô quæ otegnî informaçioin", + "apihelp-query+babel-example-1": "Otegni informaçioin Babel pe l'utente Example" +} diff --git a/MLEB/Babel/i18n/api/lt.json b/MLEB/Babel/i18n/api/lt.json new file mode 100644 index 00000000..6befaf62 --- /dev/null +++ b/MLEB/Babel/i18n/api/lt.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Eitvys200" + ] + }, + "apihelp-query+babel-description": "Gauti informaciją, kokias kalbas naudotojas žino", + "apihelp-query+babel-param-user": "Vartotojas, apie kurį gausite informaciją", + "apihelp-query+babel-example-1": "Gauti Babelio informaciją vartotojui Example" +} diff --git a/MLEB/Babel/i18n/api/lv.json b/MLEB/Babel/i18n/api/lv.json new file mode 100644 index 00000000..c6ced632 --- /dev/null +++ b/MLEB/Babel/i18n/api/lv.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Papuass" + ] + }, + "apihelp-query+babel-description": "Iegūsti informāciju par to, kādas valodas pārzina lietotājs", + "apihelp-query+babel-summary": "Iegūsti informāciju par to, kādas valodas pārzina lietotājs", + "apihelp-query+babel-param-user": "Lietotājs, par ko iegūt informāciju", + "apihelp-query+babel-example-1": "Iegūt Babel informāciju par lietotāju Piemērs" +} diff --git a/MLEB/Babel/i18n/api/mk.json b/MLEB/Babel/i18n/api/mk.json new file mode 100644 index 00000000..ad45e6a9 --- /dev/null +++ b/MLEB/Babel/i18n/api/mk.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Bjankuloski06" + ] + }, + "apihelp-query+babel-description": "Дава информации за тоа кои јазици ги знае корисникот", + "apihelp-query+babel-summary": "Дава сознанија кои јазици корисникот ги познава", + "apihelp-query+babel-param-user": "За кој корисник да се дадат информациите", + "apihelp-query+babel-example-1": "Давање на информации од „Вавилон“ за корисникот Пример" +} diff --git a/MLEB/Babel/i18n/api/ml.json b/MLEB/Babel/i18n/api/ml.json new file mode 100644 index 00000000..3f33eb8f --- /dev/null +++ b/MLEB/Babel/i18n/api/ml.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Praveenp" + ] + }, + "apihelp-query+babel-description": "ഉപയോക്താവിന് ഏതൊക്കെ ഭാഷകളറിയാം എന്ന വിവരങ്ങൾ എടുക്കുക", + "apihelp-query+babel-summary": "ഉപയോക്താവിന് ഏതൊക്കെ ഭാഷകളറിയാം എന്ന വിവരങ്ങൾ എടുക്കുക" +} diff --git a/MLEB/Babel/i18n/api/mni.json b/MLEB/Babel/i18n/api/mni.json new file mode 100644 index 00000000..3d753a74 --- /dev/null +++ b/MLEB/Babel/i18n/api/mni.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Awangba Mangang" + ] + }, + "apihelp-query+babel-description": "ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏꯁꯤꯡꯅ ꯈꯡꯕ ꯂꯣꯟꯁꯤꯡꯒꯤ ꯑꯀꯨꯞꯄ ꯃꯔꯣꯜꯁꯤꯡ ꯂꯧ ꯫" +} diff --git a/MLEB/Babel/i18n/api/mnw.json b/MLEB/Babel/i18n/api/mnw.json new file mode 100644 index 00000000..8d3b4dce --- /dev/null +++ b/MLEB/Babel/i18n/api/mnw.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Aue Nai" + ] + }, + "apihelp-query+babel-description": "ဂွံတၚ်နၚ်ပရူနကဵုဘာသာညးလွပ်တီ", + "apihelp-query+babel-summary": "ဂွံတၚ်နၚ်ပရူပရာမုဘာသာညးလွပ်ဏအ်ကၠိုဟ်", + "apihelp-query+babel-param-user": "ညးလွပ်သ္ဂောံဂွံတၚ်နၚ်ပရူ", + "apihelp-query+babel-example-1": "ဂွံတၚ်နၚ်ပရိုၚ် Babel သွက်ညးလွပ် ဥပမာ" +} diff --git a/MLEB/Babel/i18n/api/mr.json b/MLEB/Babel/i18n/api/mr.json new file mode 100644 index 00000000..bca7a4a9 --- /dev/null +++ b/MLEB/Babel/i18n/api/mr.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Sureshkhole", + "V.narsikar" + ] + }, + "apihelp-query+babel-description": "सदस्य कोणती भाषा जाणतो याबद्दल माहिती मिळवा", + "apihelp-query+babel-summary": "सदस्य कोणती भाषा जाणतो याबद्दल माहिती मिळवा", + "apihelp-query+babel-param-user": "सदस्याने ही माहिती प्राप्त करावी", + "apihelp-query+babel-example-1": "उदाहरणया सदस्याबद्दलची बॅबेल माहिती मिळवा" +} diff --git a/MLEB/Babel/i18n/api/mrh.json b/MLEB/Babel/i18n/api/mrh.json new file mode 100644 index 00000000..b5ef76dd --- /dev/null +++ b/MLEB/Babel/i18n/api/mrh.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Teitei Para" + ] + }, + "apihelp-query+babel-description": "Kheihhawhpa reihchâzy he hmâhtuhpa nawh ama pahno tahpa thâtih dao teih", + "apihelp-query+babel-summary": "Kheihhawhpa reihchâzy he hmâhtuhpa a pahno tahpa thâtih dao teih", + "apihelp-query+babel-param-user": "Thâtih dao awpa hmâhtuhpa", + "apihelp-query+babel-example-1": "Hmâhtuhpa Example châta Babel chhichâna dao" +} diff --git a/MLEB/Babel/i18n/api/mui.json b/MLEB/Babel/i18n/api/mui.json new file mode 100644 index 00000000..43eaffe5 --- /dev/null +++ b/MLEB/Babel/i18n/api/mui.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Masjawad99" + ] + }, + "apihelp-query+babel-description": "Gari baso apo yang pacak dipakék pemakék ini", + "apihelp-query+babel-summary": "Gari baso apo yang pacak dipakék pemakék ini", + "apihelp-query+babel-param-user": "Pemakék yang informasinyo nak dijingok", + "apihelp-query+babel-example-1": "Jingok informasi Babel dari pemakék Contoh" +} diff --git a/MLEB/Babel/i18n/api/nah.json b/MLEB/Babel/i18n/api/nah.json new file mode 100644 index 00000000..cf53c7c0 --- /dev/null +++ b/MLEB/Babel/i18n/api/nah.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Akapochtli" + ] + }, + "apihelp-query+babel-description": "Ticahxiltiz in neixmachiliztli itechpa tlahtolli in quixmati", + "apihelp-query+babel-summary": "Ticahxiltiz in neixmachiliztli itechpa tlahtolli in quixmati", + "apihelp-query+babel-param-user": "Inin tequitiuhqui quipiya neixmachiliztli", + "apihelp-query+babel-example-1": "Ticahxiltiz ineixmachiliz itech tequitiuhqui Example" +} diff --git a/MLEB/Babel/i18n/api/nap.json b/MLEB/Babel/i18n/api/nap.json new file mode 100644 index 00000000..f1fd2e38 --- /dev/null +++ b/MLEB/Babel/i18n/api/nap.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "BaRaN6161 TURK", + "Sannita" + ] + }, + "apihelp-query+babel-description": "Piglia 'nfurmaziune ncopp e llengue ca l'utente canosce", + "apihelp-query+babel-summary": "Piglia 'nfurmaziune ncopp e llengue ca l'utente canosce", + "apihelp-query+babel-param-user": "Utente a se piglià 'nfurmaziune", + "apihelp-query+babel-example-1": "Piglia 'nfurmaziune Babbel 'e ll'utente Esempio" +} diff --git a/MLEB/Babel/i18n/api/nb.json b/MLEB/Babel/i18n/api/nb.json new file mode 100644 index 00000000..dd5ab4ef --- /dev/null +++ b/MLEB/Babel/i18n/api/nb.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Jon Harald Søby" + ] + }, + "apihelp-query+babel-description": "Få informasjon om hvilke språk brukeren kan", + "apihelp-query+babel-summary": "Hent informasjon om hvilke språk brukeren kan", + "apihelp-query+babel-param-user": "Bruker det skal hentes informasjon om", + "apihelp-query+babel-example-1": "Hent Babel-informasjon for brukeren Eksempel" +} diff --git a/MLEB/Babel/i18n/api/nia.json b/MLEB/Babel/i18n/api/nia.json new file mode 100644 index 00000000..27586c26 --- /dev/null +++ b/MLEB/Babel/i18n/api/nia.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Anugrahgori" + ] + }, + "apihelp-query+babel-description": "Alui hadia Li si tola ifake niha da'a", + "apihelp-query+babel-summary": "Alui hadia Li si tola ifake niha da'a", + "apihelp-query+babel-param-user": "Niha ni'alui turia", + "apihelp-query+babel-example-1": "Alui Turia Mbabeli khö Example" +} diff --git a/MLEB/Babel/i18n/api/nl.json b/MLEB/Babel/i18n/api/nl.json new file mode 100644 index 00000000..1c467427 --- /dev/null +++ b/MLEB/Babel/i18n/api/nl.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Huhbakker", + "Mainframe98" + ] + }, + "apihelp-query+babel-description": "Informatie verkrijgen over de talen die de gebruiker kent", + "apihelp-query+babel-summary": "Informatie verkrijgen over de talen die de gebruiker kent", + "apihelp-query+babel-param-user": "Gebruiker om informatie over te verkrijgen", + "apihelp-query+babel-example-1": "Voor de Babel informatie voor de gebruiker Voorbeeld" +} diff --git a/MLEB/Babel/i18n/api/ny.json b/MLEB/Babel/i18n/api/ny.json new file mode 100644 index 00000000..b71227a9 --- /dev/null +++ b/MLEB/Babel/i18n/api/ny.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Icem4k" + ] + }, + "apihelp-query+babel-description": "Pezani zambiri pazinenero zomwe wosuta amadziwa", + "apihelp-query+babel-summary": "Pezani zambiri pazinenero zomwe wosuta amadziwa", + "apihelp-query+babel-param-user": "Mtumiki kuti mudziwe zambiri", + "apihelp-query+babel-example-1": "Pezani zambiri za Babel kwa mtumiaji Chitsanzo" +} diff --git a/MLEB/Babel/i18n/api/pl.json b/MLEB/Babel/i18n/api/pl.json new file mode 100644 index 00000000..1898e1c0 --- /dev/null +++ b/MLEB/Babel/i18n/api/pl.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "InternerowyGołąb", + "Woytecr" + ] + }, + "apihelp-query+babel-description": "Pobiera informacje o tym, jakie użytkownik zna języki", + "apihelp-query+babel-summary": "Uzyskaj informacje o językach, które zna użytkownik", + "apihelp-query+babel-param-user": "Użytkownik, o którym pobrać informacje", + "apihelp-query+babel-example-1": "Pobranie informacji Babel dla użytkownika Example" +} diff --git a/MLEB/Babel/i18n/api/pt-br.json b/MLEB/Babel/i18n/api/pt-br.json new file mode 100644 index 00000000..761aee99 --- /dev/null +++ b/MLEB/Babel/i18n/api/pt-br.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Felipe L. Ewald", + "TheEduGobi" + ] + }, + "apihelp-query+babel-description": "Obter informações sobre quais línguas o(a) usuário(a) conhece", + "apihelp-query+babel-summary": "Obter informações sobre quais línguas o(a) usuário(a) conhece", + "apihelp-query+babel-param-user": "Usuário(a) do(a) qual serão obtidas as informações", + "apihelp-query+babel-example-1": "Obter informações do Babel sobre Example" +} diff --git a/MLEB/Babel/i18n/api/pt.json b/MLEB/Babel/i18n/api/pt.json new file mode 100644 index 00000000..d5f0efc3 --- /dev/null +++ b/MLEB/Babel/i18n/api/pt.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Hamilton Abreu" + ] + }, + "apihelp-query+babel-description": "Obter informação sobre as línguas que o utilizador conhece", + "apihelp-query+babel-summary": "Obter informação sobre as línguas que o utilizador conhece", + "apihelp-query+babel-param-user": "O utilizador sobre o qual a informação será recolhida", + "apihelp-query+babel-example-1": "Obter a informação Babel para o utilizador Example" +} diff --git a/MLEB/Babel/i18n/api/qqq.json b/MLEB/Babel/i18n/api/qqq.json new file mode 100644 index 00000000..2c87398d --- /dev/null +++ b/MLEB/Babel/i18n/api/qqq.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Brad Jorsch", + "Kunal Mehta" + ] + }, + "apihelp-query+babel-description": "{{doc-apihelp-description|query+babel}}", + "apihelp-query+babel-summary": "{{doc-apihelp-summary|query+babel}}", + "apihelp-query+babel-param-user": "{{doc-apihelp-param|query+babel|user}}", + "apihelp-query+babel-example-1": "{{doc-apihelp-example|query+babel}}" +} diff --git a/MLEB/Babel/i18n/api/ro.json b/MLEB/Babel/i18n/api/ro.json new file mode 100644 index 00000000..c4d13ff0 --- /dev/null +++ b/MLEB/Babel/i18n/api/ro.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Strainu" + ] + }, + "apihelp-query+babel-description": "Obține informații despre limbile cunoscute de utilizator", + "apihelp-query+babel-summary": "Obține informații despre limbile cunoscute de utilizator", + "apihelp-query+babel-param-user": "Utilizatorul despre care să se obțină informații", + "apihelp-query+babel-example-1": "Obțineți informații Babel pentru utilizatorul Exemplu" +} diff --git a/MLEB/Babel/i18n/api/roa-tara.json b/MLEB/Babel/i18n/api/roa-tara.json new file mode 100644 index 00000000..d8186cde --- /dev/null +++ b/MLEB/Babel/i18n/api/roa-tara.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Joetaras" + ] + }, + "apihelp-query+babel-description": "Pigghie 'mbormaziune sus a quale lènghe l'utende canosce", + "apihelp-query+babel-summary": "Pigghie le 'mbormazziune sus a quale lènghe l'utende canosce", + "apihelp-query+babel-param-user": "Utende sus a 'u quale pigghià 'mbormaziune", + "apihelp-query+babel-example-1": "Pigghie 'mbormaziune de Babel pe l'utende Example" +} diff --git a/MLEB/Babel/i18n/api/ru.json b/MLEB/Babel/i18n/api/ru.json new file mode 100644 index 00000000..208ba26d --- /dev/null +++ b/MLEB/Babel/i18n/api/ru.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Facenapalm" + ] + }, + "apihelp-query+babel-description": "Получение информации о том, какими языками участник владеет", + "apihelp-query+babel-summary": "Получение информации о том, какими языками участник владеет", + "apihelp-query+babel-param-user": "Участник, о котором необходимо получить информацию", + "apihelp-query+babel-example-1": "Получить сведения о языках участника Example" +} diff --git a/MLEB/Babel/i18n/api/sah.json b/MLEB/Babel/i18n/api/sah.json new file mode 100644 index 00000000..ef349ac2 --- /dev/null +++ b/MLEB/Babel/i18n/api/sah.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Туллук" + ] + }, + "apihelp-query+babel-description": "Туттааччы ханнык эбии тыллары билэрин туһунан бил" +} diff --git a/MLEB/Babel/i18n/api/sat.json b/MLEB/Babel/i18n/api/sat.json new file mode 100644 index 00000000..b88f9355 --- /dev/null +++ b/MLEB/Babel/i18n/api/sat.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Ramjit Tudu" + ] + }, + "apihelp-query+babel-description": "ᱡᱚᱛᱚ ᱠᱷᱚᱵᱚᱨ ᱧᱟᱢ ᱢᱮ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱚᱠᱟ ᱯᱟᱹᱨᱥᱤ ᱵᱟᱰᱟᱭᱟᱭ", + "apihelp-query+babel-summary": "ᱡᱚᱛᱚ ᱠᱷᱚᱵᱚᱨ ᱧᱟᱢ ᱢᱮ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱚᱠᱟ ᱯᱟᱹᱨᱥᱤ ᱵᱟᱰᱟᱭᱟᱭ", + "apihelp-query+babel-param-user": "ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱠᱷᱚᱵᱚᱨ ᱵᱟᱰᱟᱭ ᱞᱟᱹᱜᱤᱫ", + "apihelp-query+babel-example-1": "ᱧᱟᱢ ᱢᱮ ᱵᱟᱵᱮᱞ ᱥᱩᱪᱚᱱᱟ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱞᱟᱹᱜᱤᱫ ᱫᱟᱹᱭᱠᱟᱹ" +} diff --git a/MLEB/Babel/i18n/api/sd.json b/MLEB/Babel/i18n/api/sd.json new file mode 100644 index 00000000..6ddf5939 --- /dev/null +++ b/MLEB/Babel/i18n/api/sd.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Tweety" + ] + }, + "apihelp-query+babel-description": "ڄاڻ وٺو ته واپرائيندڙ ڪهڙيون ٻوليون ڄاڻي ٿو" +} diff --git a/MLEB/Babel/i18n/api/sdc.json b/MLEB/Babel/i18n/api/sdc.json new file mode 100644 index 00000000..32e91ed8 --- /dev/null +++ b/MLEB/Babel/i18n/api/sdc.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Jun Misugi" + ] + }, + "apihelp-query+babel-description": "Infoimmazioni chi lingui fabedda l'utenti", + "apihelp-query+babel-summary": "Infoimmazioni chi lingui fabedda l'utenti", + "apihelp-query+babel-example-1": "Pa infoimmazioni pa l'utenti Esémpiu" +} diff --git a/MLEB/Babel/i18n/api/sh.json b/MLEB/Babel/i18n/api/sh.json new file mode 100644 index 00000000..3d27a348 --- /dev/null +++ b/MLEB/Babel/i18n/api/sh.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Vlad5250" + ] + }, + "apihelp-query+babel-param-user": "Za kojeg korisnika da se daju informacije", + "apihelp-query+babel-example-1": "Davanje informacija od „Babel“ za korisnika Primjer" +} diff --git a/MLEB/Babel/i18n/api/sk.json b/MLEB/Babel/i18n/api/sk.json new file mode 100644 index 00000000..7624c52e --- /dev/null +++ b/MLEB/Babel/i18n/api/sk.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Spider 001757" + ] + }, + "apihelp-query+babel-description": "Získať informácie o tom, aké jazyky používateľ pozná", + "apihelp-query+babel-summary": "Získať informácie o tom, aké jazyky používateľ pozná" +} diff --git a/MLEB/Babel/i18n/api/sty.json b/MLEB/Babel/i18n/api/sty.json new file mode 100644 index 00000000..b8d29207 --- /dev/null +++ b/MLEB/Babel/i18n/api/sty.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Sorbat" + ] + }, + "apihelp-query+babel-description": "Ҡатнашыуцы пеләтеген телләр туры мәләмәт алғалы.", + "apihelp-query+babel-summary": "Ҡатнашыуцы пеләтеген телләрне туры мәләмәт алғалы", + "apihelp-query+babel-param-user": "Мәләмәт алыу өцөн ҡатнашыуцы" +} diff --git a/MLEB/Babel/i18n/api/sv.json b/MLEB/Babel/i18n/api/sv.json new file mode 100644 index 00000000..ed18d29b --- /dev/null +++ b/MLEB/Babel/i18n/api/sv.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Ainali", + "WikiPhoenix" + ] + }, + "apihelp-query+babel-description": "Hämta information om vilka språk användaren kan", + "apihelp-query+babel-summary": "Hämta information om vilka språk användaren kan", + "apihelp-query+babel-param-user": "Användare att hämta information om", + "apihelp-query+babel-example-1": "Hämta Babel-information för användaren Example" +} diff --git a/MLEB/Babel/i18n/api/szy.json b/MLEB/Babel/i18n/api/szy.json new file mode 100644 index 00000000..e2e31d08 --- /dev/null +++ b/MLEB/Babel/i18n/api/szy.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Benel", + "Bunukwiki" + ] + }, + "apihelp-query+babel-description": "maala mahizaay misaungayay matineng canan a kamu cesyun", + "apihelp-query+babel-param-user": "amiala mahizaay cesyun a misaungayay", + "apihelp-query+babel-example-1": "mialaan tu misaungayay Example a Babel cesyun" +} diff --git a/MLEB/Babel/i18n/api/th.json b/MLEB/Babel/i18n/api/th.json new file mode 100644 index 00000000..1d546e03 --- /dev/null +++ b/MLEB/Babel/i18n/api/th.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Aefgh39622" + ] + }, + "apihelp-query+babel-description": "รับข้อมูลเกี่ยวกับภาษาที่ผู้ใช้เข้าใจ", + "apihelp-query+babel-summary": "รับข้อมูลเกี่ยวกับภาษาที่ผู้ใช้เข้าใจ", + "apihelp-query+babel-param-user": "ผู้ใช้ที่ต้องการรับข้อมูล" +} diff --git a/MLEB/Babel/i18n/api/tr.json b/MLEB/Babel/i18n/api/tr.json new file mode 100644 index 00000000..c0874d8c --- /dev/null +++ b/MLEB/Babel/i18n/api/tr.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "BaRaN6161 TURK", + "Hedda" + ] + }, + "apihelp-query+babel-description": "Kullanıcının bildiği diller hakkında bilgi alın", + "apihelp-query+babel-summary": "Kullanıcının bildiği diller hakkında bilgi alın", + "apihelp-query+babel-param-user": "Hakkında bilgi edinilecek kullanıcı", + "apihelp-query+babel-example-1": "Example kullanıcısı için Babil bilgisini alın" +} diff --git a/MLEB/Babel/i18n/api/uk.json b/MLEB/Babel/i18n/api/uk.json new file mode 100644 index 00000000..1443342c --- /dev/null +++ b/MLEB/Babel/i18n/api/uk.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Piramidion" + ] + }, + "apihelp-query+babel-description": "Отримати інформацію про мови, якими володіє користувач", + "apihelp-query+babel-summary": "Отримати інформацію про те, якими мовами володіє користувач", + "apihelp-query+babel-param-user": "Користувач, про якого отримати інформацію", + "apihelp-query+babel-example-1": "Отримати Babel-інформацію про користувача Example" +} diff --git a/MLEB/Babel/i18n/api/wa.json b/MLEB/Babel/i18n/api/wa.json new file mode 100644 index 00000000..1a052473 --- /dev/null +++ b/MLEB/Babel/i18n/api/wa.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Reptilien.19831209BE1" + ] + }, + "apihelp-query+babel-description": "Obtini ds infôrmåcions so les cnoxhous lingaedjes di ci uzeu ci", + "apihelp-query+babel-summary": "Obtini ds infôrmåcions so les cnoxhous lingaedjes pa ci uzeu ci", + "apihelp-query+babel-param-user": "Uzeu la ki fåt-st obtini ds infôrmåcions", + "apihelp-query+babel-example-1": "Obtini ls infôrmåcions di Babel po l' uzeu Example" +} diff --git a/MLEB/Babel/i18n/api/yue.json b/MLEB/Babel/i18n/api/yue.json new file mode 100644 index 00000000..195690a9 --- /dev/null +++ b/MLEB/Babel/i18n/api/yue.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Ktchankt" + ] + }, + "apihelp-query+babel-description": "攞用戶識咩嘢語言嘅資訊", + "apihelp-query+babel-param-user": "要攞相關資訊嘅用戶", + "apihelp-query+babel-example-1": "攞用戶 Example 嘅 Babel 資訊" +} diff --git a/MLEB/Babel/i18n/api/zh-hans.json b/MLEB/Babel/i18n/api/zh-hans.json new file mode 100644 index 00000000..997bd0d5 --- /dev/null +++ b/MLEB/Babel/i18n/api/zh-hans.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Liuxinyu970226" + ] + }, + "apihelp-query+babel-description": "获取有关用户理解的语言的信息", + "apihelp-query+babel-summary": "获取有关用户可以理解语言的信息", + "apihelp-query+babel-param-user": "要获取相关信息的用户", + "apihelp-query+babel-example-1": "获取用户Example的巴别信息" +} diff --git a/MLEB/Babel/i18n/api/zh-hant.json b/MLEB/Babel/i18n/api/zh-hant.json new file mode 100644 index 00000000..57909608 --- /dev/null +++ b/MLEB/Babel/i18n/api/zh-hant.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Cwlin0416", + "Kly" + ] + }, + "apihelp-query+babel-description": "取得有關使用者瞭解何種語言的資訊", + "apihelp-query+babel-summary": "獲得關於使用者所能理解語言的資訊", + "apihelp-query+babel-param-user": "要取得相關資訊的使用者", + "apihelp-query+babel-example-1": "取得使用者 Example 的 Babel 資訊" +} diff --git a/MLEB/Babel/i18n/ar.json b/MLEB/Babel/i18n/ar.json index eb6e3bb0..8516b0d8 100644 --- a/MLEB/Babel/i18n/ar.json +++ b/MLEB/Babel/i18n/ar.json @@ -31,9 +31,5 @@ "babel-5-n": "{{GENDER:{{PAGENAME}}|هذا المستخدم لديه|هذه المستخدمة لديها}} معرفة [[$1|احترافية]] ب[[$2|العربية]].", "babel-N-n": "{{GENDER:{{PAGENAME}}|هذا المستخدم|هذه المستخدمة}} [[$1|{{GENDER:{{PAGENAME}}|لغته|لغتها}} الأم]] هي [[$2|العربية]].", "babel-template": "Template:مستخدم $1", - "babel-footer": "المستخدمون حسب اللغة", - "apihelp-query+babel-description": "الحصول على معلومات حول اللغات التي يعرفها المستخدم", - "apihelp-query+babel-summary": "الحصول على معلومات حول اللغات التي يعرفها المستخدم.", - "apihelp-query+babel-param-user": "المستخدم المطلوب الحصول على المعلومات عنه", - "apihelp-query+babel-example-1": "الحصول على معلومات بابل للمستخدم مثال" + "babel-footer": "المستخدمون حسب اللغة" } diff --git a/MLEB/Babel/i18n/ary.json b/MLEB/Babel/i18n/ary.json index be78c08d..3c385112 100644 --- a/MLEB/Babel/i18n/ary.json +++ b/MLEB/Babel/i18n/ary.json @@ -2,27 +2,32 @@ "@metadata": { "authors": [ "Enzoreg", - "GerardM" + "GerardM", + "SADIQUI" ] }, - "babel": "Meĝlomaṫ Babil ĝel l-mosṫeĥdim", - "babel-desc": "Zid l-fonksyon #babel baċ ṫṣayeb otomaṫikiyan sendoq Babil o ṫeĝmel fih modélaṫ maḫelliyin.", - "babel-url": "Project:Babel", - "babel-autocreate-reason": "Ĥṫiraĝ otomaṫiki dyal l-katégori [[$1|Babel]].", - "babel-autocreate-text-levels": "L-mosṫeĥdimin li fe had n-noĝ ĝendhom mosṫawa $1 fe had l-loġa : $2.", - "babel-autocreate-text-main": "L-mosṫeĥdimin li fe had n-noĝ ĝendhom meĝrifa fe had l-loġa : $1.", - "babel-0": "Had l-mosṫeĥdim ma ĝendo [[$1|ḫṫa]] meĝrifa fe l-loġa [[$2|l-Meġribiya]] (ola kayfhemha be soĝoba).", - "babel-1": "Had l-mosṫeĥdim ĝendo mosṫawa [[$1|asasi]] fe [[$2|l-Meġribiya]].", - "babel-2": "Had l-mosṫeĥdim ĝendo mosṫawa [[$1|meṫweṣṣet]] fe [[$2|l-Meġribiya]].", - "babel-3": "Had l-mosṫeĥdim ĝendo mosṫawa [[$1|meṫqeddem]] fe [[$2|l-Meġribiya]].", - "babel-4": "Had l-mosṫeĥdim ĝendo mosṫawa [[$1|qrib le loġaṫ l-'om]] fe [[$2|l-Meġribiya]].", - "babel-5": "Had l-mosṫeĥdim ĝendo meĝrifa [[$1|ḫṫirafiya]] fe [[$2|l-Meġribiya]].", - "babel-N": "Had l-mosṫeĥdim kayfhem l-loġa [[$2|l-Meġribiya]] bḫal [[$1|loġṫo l-'om]].", - "babel-0-n": "Had l-mosṫeĥdim ma ĝendo [[$1|ḫṫa]] meĝrifa fe l-loġa [[$2|l-Meġribiya]] (ola kayfhemha be soĝoba).", - "babel-1-n": "Had l-mosṫeĥdim ĝendo mosṫawa [[$1|asasi]] fe [[$2|l-Meġribiya]].", - "babel-2-n": "Had l-mosṫeĥdim ĝendo mosṫawa [[$1|meṫweṣṣet]] fe [[$2|l-Meġribiya]].", - "babel-3-n": "Had l-mosṫeĥdim ĝendo mosṫawa [[$1|meṫqeddem]] fe [[$2|l-Meġribiya]].", - "babel-4-n": "Had l-mosṫeĥdim ĝendo mosṫawa [[$1|qrib le loġṫo l-'om]] fe [[$2|l-Meġribiya]].", - "babel-5-n": "Had l-mosṫeĥdim ĝendo meĝrifa [[$1|ḫṫirafiya]] dyal [[$2|l-Meġribiya]].", - "babel-N-n": "Had l-mosṫeĥdim kayfhem l-loġa [[$2|l-Meġribiya]] bḫal [[$1|loġto l-'om]]." + "babel": "معلومات بابل ديال المستخدم", + "babel-desc": "كيزيد الفونكسيون ديال #babel اللي كتسمح باش تصايب أوتوماتيكيا صندوق بابل ويمكن ليك دير معاه شي قَوالب أخرى", + "babel-url": "Project:بابل", + "babel-footer-url": ":Category:بابل - المستخدمون على حسب اللغة", + "babel-autocreate-reason": "إنشاء تصنيف [[$1|بابل]] بشكل تلقائي.", + "babel-autocreate-text-levels": "المستخدمين اللي كاينين في هاد التصنيف عندهم مهارات بمستوى $1 بالنسبة للغة $2.", + "babel-autocreate-text-main": "المستخدمون في هاد التصنيف كيشيرو لمستوى معرفتهم باللغة $1.", + "babel-autocreate-user": "إنشاء بابل التلقائي", + "babel-0": "{{GENDER:{{PAGENAME}}|هاد المستخدم|هاد المستخدمة}} [[$1|ما]] {{GENDER:{{PAGENAME}}|عندوش|عندهاش}} معرفة في [[$2|$3]] (أولا {{GENDER:{{PAGENAME}}|كيفهمها|كتفهمها}} بصعوبة بالغة).", + "babel-1": "{{GENDER:{{PAGENAME}}|هاد المستخدم عندو|هاد المستخدمة عندها}} معرفة [[$1|أساسية]] في [[$2|$3]].", + "babel-2": "{{GENDER:{{PAGENAME}}|هاد المستخدم عندو|هاد المستخدمة عندها}} معرفة [[$1|متوسطة]] في [[$2|$3]].", + "babel-3": "{{GENDER:{{PAGENAME}}|هاد المستخدم عندو|هاد المستخدمة عندها}} معرفة [[$1|متقدمة]] في [[$2|$3]].", + "babel-4": "{{GENDER:{{PAGENAME}}|هاد المستخدم عندو|هاد المستخدمة عندها}} معرفة [[$1|قريبة من مستوى اللغة الأم]] في [[$2|$3]].", + "babel-5": "{{GENDER:{{PAGENAME}}|هاد المستخدم عندو|هاد المستخدمة عندها}} معرفة [[$1|احترافية]] في [[$2|$3]].", + "babel-N": "{{GENDER:{{PAGENAME}}|هاد المستخدم|هاد المستخدمة}} [[$1|{{GENDER:{{PAGENAME}}|لوغتو|لوغتها}} الأم]] هي [[$2|$3]].", + "babel-0-n": "{{GENDER:{{PAGENAME}}|هاد المستخدم|هاد المستخدمة}} [[$1|ما]] {{GENDER:{{PAGENAME}}|عندوش|عندهاش}} معرفة في [[$2|الدارجة]] (أولا {{GENDER:{{PAGENAME}}|كيفهمها|كتفهمها}} بصعوبة بالغة).", + "babel-1-n": "{{GENDER:{{PAGENAME}}|هاد المستخدم|هاد المستخدمة}} {{GENDER:{{PAGENAME}}|عندو|عندها}} معرفة [[$1|أساسية]] في [[$2|الدارجة]].", + "babel-2-n": "{{GENDER:{{PAGENAME}}|هاد المستخدم عندو|هاد المستخدمة عندها}} معرفة [[$1|متوسطة]] في [[$2|الدارجة]].", + "babel-3-n": "{{GENDER:{{PAGENAME}}|هاد المستخدم عندو|هاد المستخدمة عندها}} معرفة [[$1|متقدمة]] في [[$2|الدارجة]].", + "babel-4-n": "{{GENDER:{{PAGENAME}}|هاد المستخدم عندو|هاد المستخدمة عندها}} معرفة [[$1|قريبة من مستوى اللغة الأم]] في [[$2|الدارجة]].", + "babel-5-n": "{{GENDER:{{PAGENAME}}|هاد المستخدم عندو|هاد المستخدمة عندها}} معرفة [[$1|احترافية]] في [[$2|الدارجة]].", + "babel-N-n": "{{GENDER:{{PAGENAME}}|هاد المستخدم|هاد المستخدمة}} [[$1|{{GENDER:{{PAGENAME}}|لوغتو|لوغتها}} الأم]] هي [[$2|الدارجة]].", + "babel-template": "Template:مستخدم $1", + "babel-footer": "المستخدمون على حسب اللغة" } diff --git a/MLEB/Babel/i18n/ast.json b/MLEB/Babel/i18n/ast.json index 926c67f3..f8eb7641 100644 --- a/MLEB/Babel/i18n/ast.json +++ b/MLEB/Babel/i18n/ast.json @@ -26,9 +26,5 @@ "babel-4-n": "{{GENDER:$4|Esti usuariu|Esta usuaria}} tien un conocimientu [[$1|cuasi nativu]] d'[[$2|asturianu]].", "babel-5-n": "{{GENDER:$4|Esti usuariu|Esta usuaria}} tien un conocimientu [[$1|profesional]] d'[[$2|asturianu]].", "babel-N-n": "{{GENDER:$4|Esti usuariu|Esta usuaria}} ye {{GENDER:$4|un|una}} falante [[$1|{{GENDER:$4|nativu|nativa}}]] d'[[$2|asturianu]].", - "babel-footer": "Usuarios por llingua", - "apihelp-query+babel-description": "Algamar información de les llingües que sabe l'usuariu", - "apihelp-query+babel-summary": "Ver información de les llingües que conoz l'usuariu", - "apihelp-query+babel-param-user": "Usuariu del que recibir información", - "apihelp-query+babel-example-1": "Algamar la información de Babel del usuariu Exemplu" + "babel-footer": "Usuarios por llingua" } diff --git a/MLEB/Babel/i18n/avk.json b/MLEB/Babel/i18n/avk.json index f19fa815..62869159 100644 --- a/MLEB/Babel/i18n/avk.json +++ b/MLEB/Babel/i18n/avk.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Axel xadolik", "Sab", - "Wikimistusik", - "Axel xadolik" + "Wikimistusik" ] }, "babel": "Babel webesikgiva", @@ -27,7 +27,5 @@ "babel-4-n": "Bat webesik kan [[$2|Kotava]] ton [[$1|nazbokavusik]] lewe grugoler.", "babel-5-n": "Bat webesik kan [[$2|Kotava]] [[$1|ebekon]] grugoler.", "babel-N-n": "Bat webesik kan [[$2|Kotava]] ton [[$1|nazbokavusik]] grugoler.", - "babel-footer": "Webesik kare ava", - "apihelp-query+babel-description": "Seotara va giva icde ava grupena gan favesik", - "apihelp-query+babel-summary": "Seotara va giva icde ava grupena gan favesik" + "babel-footer": "Webesik kare ava" } diff --git a/MLEB/Babel/i18n/awa.json b/MLEB/Babel/i18n/awa.json index e214e3d1..732a29c7 100644 --- a/MLEB/Babel/i18n/awa.json +++ b/MLEB/Babel/i18n/awa.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "1AnuraagPandey" + "1AnuraagPandey", + "1PandeyAnurag" ] }, "babel": "बेबल सदस्य जानकारी", @@ -24,6 +25,6 @@ "babel-3-n": "इ सदस्य कय [[$2|अवधी]] कय [[$1|बहुत बढिया]] ज्ञान है।", "babel-4-n": "इ सदस्य कय [[$2|अवधी]] कय [[$1|लगभग मातृभाषी स्तर]] कय ज्ञान है।", "babel-5-n": "इ सदस्य कय [[$2|अवधी]] कय [[$1|व्यावसायिक स्तर]] कय ज्ञान है।", - "babel-N-n": "इ सदस्य कय [[$2|अवधी]] कय [[$1|मातृभाषी कय जैसन]] ज्ञान है।", + "babel-N-n": "इ सदस्य कय मातृभाषा [[$2|अवधी]] होय ।", "babel-footer": "भाषा अनुसार सदस्य" } diff --git a/MLEB/Babel/i18n/azb.json b/MLEB/Babel/i18n/azb.json index 14cc5f11..4871d144 100644 --- a/MLEB/Babel/i18n/azb.json +++ b/MLEB/Babel/i18n/azb.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ + "Alp Er Tunqa", "Arjanizary", "E THP", - "Mousa", "Koroğlu", - "Alp Er Tunqa" + "Mousa" ] }, "babel": "بابیل ایشلدن بیلگی‌لری", diff --git a/MLEB/Babel/i18n/bcc.json b/MLEB/Babel/i18n/bcc.json index 7fb5ea2e..b83169f0 100644 --- a/MLEB/Babel/i18n/bcc.json +++ b/MLEB/Babel/i18n/bcc.json @@ -1,12 +1,13 @@ { "@metadata": { "authors": [ + "Baloch Afghanistan", "Mostafadaneshvar", "RigiMahnoor", - "Baloch Afghanistan" + "Sultanselim baloch" ] }, - "babel": "اطلاعات کاربری بابل", + "babel": "بابلء کارگرگء زانشتاں", "babel-desc": "اضافه کنت #babel عملگر وانوک په اجازه داتن په یک ستون جعبه کاربری گون توانایی اضافه کتن وتی تمپلتان", "babel-url": "Project:بابل", "babel-footer-url": ":Category:بابل - کار زوروکان گون زبانان", diff --git a/MLEB/Babel/i18n/be-tarask.json b/MLEB/Babel/i18n/be-tarask.json index 8dd245c8..c733722a 100644 --- a/MLEB/Babel/i18n/be-tarask.json +++ b/MLEB/Babel/i18n/be-tarask.json @@ -3,9 +3,9 @@ "authors": [ "EugeneZelenko", "Jim-by", + "Red Winged Duck", "Wizardist", - "Zedlik", - "Red Winged Duck" + "Zedlik" ] }, "babel": "Мовы, якімі валодае {{GENDER:$1|ўдзельнік|ўдзельніца}}", @@ -29,9 +29,5 @@ "babel-4-n": "{{GENDER:$4|Гэты ўдзельнік|Гэтая ўдзельніца}} ведае [[$2|беларускую мову]] амаль [[$1|як родную]].", "babel-5-n": "{{GENDER:$4|Гэты ўдзельнік|Гэтая ўдзельніца}} ведае [[$2|беларускую мову]] на [[$1|прафэсійным]] узроўні.", "babel-N-n": "[[$2|Беларуская мова]] — [[$1|родная мова]] {{GENDER:$4|гэтага ўдзельніка|гэтай ўдзельніцы}}.", - "babel-footer": "Удзельнікі паводле мовы", - "apihelp-query+babel-description": "Атрымаць зьвесткі, якімі мовамі валодае ўдзельнік", - "apihelp-query+babel-summary": "Атрымаць інфармацыю пра мовы, якія ведае ўдзельнік", - "apihelp-query+babel-param-user": "Удзельнік, пра якога атрымаць інфармацыю", - "apihelp-query+babel-example-1": "Атрымаць зьвесткі Бабілёнскай вежы для ўдзельніка Example" + "babel-footer": "Удзельнікі паводле мовы" } diff --git a/MLEB/Babel/i18n/be.json b/MLEB/Babel/i18n/be.json index 89c4f154..9d45a09f 100644 --- a/MLEB/Babel/i18n/be.json +++ b/MLEB/Babel/i18n/be.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ + "Mechanizatar", + "Mikalai Udodau", "Yury Tarasievich", "Тест", - "Хомелка", - "Mikalai Udodau", - "Mechanizatar" + "Хомелка" ] }, "babel": "Моўныя звесткі ўдзельніка", @@ -29,8 +29,5 @@ "babel-4-n": "Ведаю [[$2|беларускую]] мову [[$1|амаль як родную]].", "babel-5-n": "Ведаю [[$2|беларускую]] мову [[$1|прафесійна]].", "babel-N-n": "[[$2|Беларуская]] — [[$1|родная]] мова ўдзельніка.", - "babel-footer": "Удзельнікі паводле моў", - "apihelp-query+babel-description": "Атрымаць звесткі пра тое, якімі мовамі валодае ўдзельнік", - "apihelp-query+babel-param-user": "Удзельнік, пра якога атрымаць інфармацыю", - "apihelp-query+babel-example-1": "Атрымаць інфармацыю пра валоданне моваў для ўдзельніка Example" + "babel-footer": "Удзельнікі паводле моў" } diff --git a/MLEB/Babel/i18n/bg.json b/MLEB/Babel/i18n/bg.json index 5285dfaf..4bb9858f 100644 --- a/MLEB/Babel/i18n/bg.json +++ b/MLEB/Babel/i18n/bg.json @@ -3,9 +3,9 @@ "authors": [ "DCLXVI", "Spiritia", + "StanProg", "Vladimir Penov", - "Петър Петров", - "StanProg" + "Петър Петров" ] }, "babel": "Информация за езиците на потребителите", @@ -29,5 +29,6 @@ "babel-4-n": "{{GENDER:$4|Този потребител|Тази потребителка}} владее [[$2|български език]] на ниво [[$1|почти като роден]].", "babel-5-n": "{{GENDER:$4|Този потребител|Тази потребителка}} има [[$1|професионални]] познания по [[$2|български език]].", "babel-N-n": "За {{GENDER:$4|този потребител|тази потребителка}} [[$2|българският език]] e [[$1|роден]].", + "babel-template": "Шаблон:Потребител $1", "babel-footer": "Потребители по език" } diff --git a/MLEB/Babel/i18n/bn.json b/MLEB/Babel/i18n/bn.json index 7b396b33..1444c9ea 100644 --- a/MLEB/Babel/i18n/bn.json +++ b/MLEB/Babel/i18n/bn.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Aftabuzzaman", "Bellayet", "RIPENDIL", - "Aftabuzzaman", "আফতাবুজ্জামান" ] }, diff --git a/MLEB/Babel/i18n/bqi.json b/MLEB/Babel/i18n/bqi.json index 120b2ceb..3c00350a 100644 --- a/MLEB/Babel/i18n/bqi.json +++ b/MLEB/Babel/i18n/bqi.json @@ -2,17 +2,27 @@ "@metadata": { "authors": [ "Bonevarluri", + "Kikumoron", "Mogoeilor" ] }, - "babel-url": "پروجه:بابل", - "babel-autocreate-text-levels": "کارورآ ای دسته نشون ادن که کاردونی د سطح $1 سی زون $2 دارن", - "babel-1": "ای کاریار [[$1|یتی]] [[$2|$3]] دونه.", - "babel-2": "ای کاریار مئن سطح[[$1|منجقایی]] [[$2|$3]] دونه.", - "babel-3": "ای کاریار [[$1|غلوه]] [[$2|$3]] دونه.", - "babel-4": "ای کاریار [[$1|مئن سطح هو که زون داس بختیاریه]] [[$2|$3]] دونه.", - "babel-5": "ای کاریار [[$1|غلوه خوو]] [[$2|$3]] دونه.", - "babel-N": " زون دا [[$1|کاریار]] [[$2|$3]] یه.", - "babel-0-n": "ای کاریار [[$1|غلوه کم]] [[$2|بختیاری]] دونه (یا اصلا بختیاری هالینس نیبو).", - "babel-footer": "کاروآ وا زون" + "babel": "دونسمٱندیٱل کاریار بابل", + "babel-url": "پوروجاْ:بابل", + "babel-footer-url": ":Category:بابل-کاریارٱل ڤا زڤون", + "babel-autocreate-reason": "دٱسداْ بٱلگاْ [[$1|Babel]]راس کردن ب هال و بال خودٱنجوم", + "babel-autocreate-text-levels": "کاریارٱلی کاْ ای دٱسداْ دیاری اْکونن کاْ کاردونی ز ریتراز $1 سی زڤون $2 دارن", + "babel-autocreate-text-main": "کاریارٱلی ای دٱسداْ چونو دیاری اْکونن کاْ زڤون $1 باْلٱڌن", + "babel-0": "ای کاریار [[$1|غٱلٱڤاْ کم]] [[$2|بختیاری]] دوناْ (یا ٱسلٱن بختیاری هالینس نیبۊ).", + "babel-1": "ای کاریار [[$1|یاْتی]] [[$2|$3]] دوناْ.", + "babel-2": "ای کاریار میٛن ریتراز [[$1|میٛنجقایی]] [[$2|$3]] دوناْ.", + "babel-3": "ای کاریار [[$1|غٱلٱڤاْ]] [[$2|$3]] دوناْ.", + "babel-4": "ای کاریار [[$1|میٛن ریتراز هو کاْ زڤون داس بختیاریاْ]] [[$2|$3]] دوناْ.", + "babel-5": "ای کاریار [[$1|غٱلٱڤاْ خۊڤ]] [[$2|$3]] دوناْ.", + "babel-N": " زڤون دا [[$1|کاریار]] [[$2|$3]] اْ.", + "babel-0-n": "ای کاریار [[$1|غٱلٱڤاْ کم]] [[$2|بختیاری]] دوناْ (یا ٱسلٱن بختیاری هالینس نیبۊ).", + "babel-1-n": "ای کاریار [[$1|یاْتی]] دونسمندی ز [[$2|بختیاری]] داراْ.", + "babel-4-n": "ای کاریار [[$2|بختیاری]] ناْ چی [[$1|کسی زڤون داس بختیاری]] دوناْ.", + "babel-5-n": "ای کاریار [[$2|بختیاری]] ناْ چی [[$1|دونسمٱند]] دوناْ.", + "babel-N-n": "ای کاریار [[$2|بختیاری]] ناْ چی [[$1|زڤون دا]] دوناْ.", + "babel-footer": "کاریارٱل ڤا زڤون" } diff --git a/MLEB/Babel/i18n/br.json b/MLEB/Babel/i18n/br.json index 2756a336..f00d0376 100644 --- a/MLEB/Babel/i18n/br.json +++ b/MLEB/Babel/i18n/br.json @@ -26,8 +26,5 @@ "babel-4-n": "[[$2|Brezhoneg]] a oar an implijer-mañ [[$1|evel pa vefe bet desket gantañ war barlenn e vamm]].", "babel-5-n": "Ul live [[$2|Brezhoneg]] [[$1|a-vicher]] zo gant an implijer-mañ.", "babel-N-n": "[[$1|A-vihanik]] e oar [[$2|brezhoneg]] an implijer-mañ.", - "babel-footer": "Implijerien dre yezh", - "apihelp-query+babel-description": "Gouzout peseurt yezhoù a oar an implijer", - "apihelp-query+babel-param-user": "Implijer da gaout titouroù diwar e benn", - "apihelp-query+babel-example-1": "Gouzout an titouroù Babel evit an implijer Example" + "babel-footer": "Implijerien dre yezh" } diff --git a/MLEB/Babel/i18n/bs.json b/MLEB/Babel/i18n/bs.json index 071114cc..7848ea06 100644 --- a/MLEB/Babel/i18n/bs.json +++ b/MLEB/Babel/i18n/bs.json @@ -3,7 +3,8 @@ "authors": [ "CERminator", "Palapa", - "Srdjan m" + "Srdjan m", + "Srđan" ] }, "babel": "Babel korisničke informacije", diff --git a/MLEB/Babel/i18n/ca.json b/MLEB/Babel/i18n/ca.json index fa294a0d..cb8f9c7e 100644 --- a/MLEB/Babel/i18n/ca.json +++ b/MLEB/Babel/i18n/ca.json @@ -2,11 +2,11 @@ "@metadata": { "authors": [ "Aleator", + "Fitoschido", "SMP", + "Ssola", "Toniher", - "Vriullop", - "Fitoschido", - "Ssola" + "Vriullop" ] }, "babel": "Informació Babel de {{GENDER:$1|l'usuari|la usuària}}", @@ -30,9 +30,5 @@ "babel-4-n": "{{GENDER:$4|Aquest usuari|Aquesta usuària}} té un coneixement [[$1|gairebé natiu]] de [[$2|català]].", "babel-5-n": "{{GENDER:$4|Aquest usuari|Aquesta usuària}} té coneixement [[$1|professional]] de la llengua [[$2|catalana]].", "babel-N-n": "{{GENDER:$4|Aquest usuari és un|Aquesta usuària és una}} parlant [[$1|{{GENDER:$4|natiu|nativa}}]] de [[$2|català]].", - "babel-footer": "Usuaris per idioma", - "apihelp-query+babel-description": "Obtenció d'informació sobre les llengües que l'usuari coneix", - "apihelp-query+babel-summary": "Obté informació sobre les llengües que l'usuari coneix", - "apihelp-query+babel-param-user": "Usuari del qual obtenir informació", - "apihelp-query+babel-example-1": "Obtenir la informació Babel per a l'usuari Example" + "babel-footer": "Usuaris per idioma" } diff --git a/MLEB/Babel/i18n/cak.json b/MLEB/Babel/i18n/cak.json new file mode 100644 index 00000000..2c24c691 --- /dev/null +++ b/MLEB/Babel/i18n/cak.json @@ -0,0 +1,23 @@ +{ + "@metadata": { + "authors": [ + "Mynor Archila" + ] + }, + "babel-footer-url": ":Kiwäch:Babel - Okisanela’ pa ruch’ab’äl", + "babel-autocreate-text-main": "Okinasela’ chi k’o re molaj ruetamab’al pa ri[[$2|Kaqchikel]].", + "babel-1": "Re okinasel k’o [[$1|ruxe’]] etamab’al pa ri [[$2|$3]].", + "babel-2": "Re okinasel k’o [[$1|nik’aj]] etamab’al pa ri [[$2|$3]].", + "babel-3": "Re okinasel k’o [[$1|ik’owinem]] etamab’al pa ri [[$2|$3]].", + "babel-4": "Re okinasel k’o [[$1|chunaqaj alaxik]] etamab’al pa ri [[$2|$3]].", + "babel-5": "Re okinasel k’o [[$1|tijtijonem]] etamab’al pa ri [[$2|$3]].", + "babel-N": "Re okinasel k’o [[$1|alaxik]] etamab’al pa ri [[$2|$3]].", + "babel-0-n": "Re okinasel [[$1|man]] k’o etamab’al pa ri [[$2|Kaqchikel]].", + "babel-1-n": "Re okinasel k’o [[$1|ruxe’]] etamab’al pa ri [[$2|Kaqchikel]].", + "babel-2-n": "Re okinasel k’o [[$1|nik’aj]] etamab’al pa ri [[$2|Kaqchikel]].", + "babel-3-n": "Re okinasel k’o [[$1|ik’owinem]] etamab’al pa ri [[$2|Kaqchikel]].", + "babel-4-n": "Re okinasel k’o [[$1|chunaqaj alaxik]] etamab’al pa ri [[$2|Kaqchikel]].", + "babel-5-n": "Re okinasel k’o [[$1|tijtijonem]] etamab’al pa ri [[$2|Kaqchikel]].", + "babel-N-n": "Re okinasel k’o [[$1|alaxik]] etamab’al pa ri [[$2|Kaqchikel]].", + "babel-footer": "Okisanela’ pa ruch’ab’äl" +} diff --git a/MLEB/Babel/i18n/cdo.json b/MLEB/Babel/i18n/cdo.json index 8dce16f9..66dfb96d 100644 --- a/MLEB/Babel/i18n/cdo.json +++ b/MLEB/Babel/i18n/cdo.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "唐吉訶德的侍從", - "Yejianfei" + "Yejianfei", + "唐吉訶德的侍從" ] }, "babel": "用戶信息", diff --git a/MLEB/Babel/i18n/ce.json b/MLEB/Babel/i18n/ce.json index 0d3e89bd..e89100d1 100644 --- a/MLEB/Babel/i18n/ce.json +++ b/MLEB/Babel/i18n/ce.json @@ -3,8 +3,8 @@ "authors": [ "Purodha", "Sasan700", - "Умар", - "Исмаил Садуев" + "Исмаил Садуев", + "Умар" ] }, "babel": "Декъашхошна хууш болу меттанийн хаам", diff --git a/MLEB/Babel/i18n/ckb.json b/MLEB/Babel/i18n/ckb.json index 147b6e21..95006f85 100644 --- a/MLEB/Babel/i18n/ckb.json +++ b/MLEB/Babel/i18n/ckb.json @@ -2,9 +2,9 @@ "@metadata": { "authors": [ "Asoxor", + "Calak", "GerardM", - "Muhammed taha", - "Calak" + "Muhammed taha" ] }, "babel": "زانیاریی بەکارھێنەریی بابل", diff --git a/MLEB/Babel/i18n/cs.json b/MLEB/Babel/i18n/cs.json index a253239a..636c1591 100644 --- a/MLEB/Babel/i18n/cs.json +++ b/MLEB/Babel/i18n/cs.json @@ -1,15 +1,15 @@ { "@metadata": { "authors": [ + "Clon", "Danny B.", "Kuvaly", "Li-sung", "Littledogboy", "Matěj Grabovský", - "Mormegil", - "Mr. Richard Bolla", "Matěj Suchánek", - "Clon" + "Mormegil", + "Mr. Richard Bolla" ] }, "babel": "Babylon – informace o {{GENDER:$1|uživateli|uživatelce|uživateli}}", @@ -33,6 +33,5 @@ "babel-4-n": "{{GENDER:$4|Tento uživatel|Tato uživatelka}} má znalosti [[$2|češtiny]] [[$1|téměř na úrovni rodilého mluvčího]].", "babel-5-n": "{{GENDER:$4|Tento uživatel|Tato uživatelka}} má [[$1|profesionální]] znalosti [[$2|češtiny]].", "babel-N-n": "{{GENDER:$4|Tento uživatel|Tato uživatelka}} je [[$1|{{GENDER:$4|rodilý|rodilá}} mluvčí]] [[$2|češtiny]].", - "babel-footer": "Uživatelé podle jazyka", - "apihelp-query+babel-description": "Získat informace o tom, jaké jazyky uživatel zná" + "babel-footer": "Uživatelé podle jazyka" } diff --git a/MLEB/Babel/i18n/csb.json b/MLEB/Babel/i18n/csb.json index d7f48bbf..70c25d09 100644 --- a/MLEB/Babel/i18n/csb.json +++ b/MLEB/Babel/i18n/csb.json @@ -26,9 +26,5 @@ "babel-4-n": "Nen brëkòwnik rozmieje [[$2|kaszëbsczi jãzëk]] wnetka jakno [[$1|rodną mòwã]].", "babel-5-n": "Nen brëkòwnik rozmieje [[$2|kaszëbsczi jãzëk]] na równi z [[$1|rodną mòwą]].", "babel-N-n": "[[$2|Kaszëbsczi jãzëk]] je [[$1|rodną mòwą]] negò brëkòwnika.", - "babel-footer": "Jãzëczi brëkòwników", - "apihelp-query+babel-description": "Dobiwô wëdowiédzã ò tim, jaczé jãzëczi znaje nen brëkòwnik.", - "apihelp-query+babel-summary": "Dobiwô wëdowiédzã ò tim, jaczé jãzëczi znaje nen brëkòwnik", - "apihelp-query+babel-param-user": "Brëkòwnik do dobicô ò nim wëdowiédzë", - "apihelp-query+babel-example-1": "Dibiwô wëdowiédzã Babel dlô brëkòwnika Przëmiôr" + "babel-footer": "Jãzëczi brëkòwników" } diff --git a/MLEB/Babel/i18n/cv.json b/MLEB/Babel/i18n/cv.json index 49c1ee8c..124e6417 100644 --- a/MLEB/Babel/i18n/cv.json +++ b/MLEB/Babel/i18n/cv.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ + "Chuvash2014", "PCode", "Salam", - "Блокнот", - "Chuvash2014" + "Блокнот" ] }, "babel": "Хутшăнакан çинчен", diff --git a/MLEB/Babel/i18n/da.json b/MLEB/Babel/i18n/da.json index 5626f4b6..66976903 100644 --- a/MLEB/Babel/i18n/da.json +++ b/MLEB/Babel/i18n/da.json @@ -6,8 +6,8 @@ "Froztbyte", "Jan Friberg", "Peter Alberti", - "Sarrus", - "Saederup92" + "Saederup92", + "Sarrus" ] }, "babel": "Babel brugeroplysninger", @@ -32,8 +32,5 @@ "babel-5-n": "Denne bruger har [[$1|professionelt]] kendskab til [[$2|dansk]].", "babel-N-n": "Denne bruger har [[$2|dansk]] som [[$1|modersmål]].", "babel-template": "Template:Bruger $1", - "babel-footer": "Brugere efter sprog", - "apihelp-query+babel-description": "Hent oplysninger om hvilke sprog brugeren kender", - "apihelp-query+babel-summary": "Hent oplysninger om hvilke sprog brugeren kender", - "apihelp-query+babel-param-user": "Bruger der skal hentes information om" + "babel-footer": "Brugere efter sprog" } diff --git a/MLEB/Babel/i18n/de.json b/MLEB/Babel/i18n/de.json index e4b19bb4..4ae6dfc6 100644 --- a/MLEB/Babel/i18n/de.json +++ b/MLEB/Babel/i18n/de.json @@ -2,17 +2,17 @@ "@metadata": { "authors": [ "ChrisiPK", + "Crazy1880", "Forrester", "Iwan Novirion", + "J. 'mach' wust", "Kghbln", "Metalhead64", "Purodha", "Raimond Spekking", "Revolus", "The Evil IP address", - "Umherirrender", - "J. 'mach' wust", - "Crazy1880" + "Umherirrender" ] }, "babel": "Babel – Benutzerinformationen", @@ -38,9 +38,5 @@ "babel-5-n": "{{GENDER:$4|Dieser Benutzer|Diese Benutzerin}} beherrscht [[$2|Deutsch]] auf [[$1|professionellem]] Niveau.", "babel-N-n": "{{GENDER:$4|Dieser Benutzer|Diese Benutzerin}} spricht [[$2|Deutsch]] als [[$1|Muttersprache]].", "babel-template": "Template:User $1", - "babel-footer": "Benutzer nach Sprache", - "apihelp-query+babel-description": "Ruft Informationen darüber ab, welche Sprachen der Benutzer beherrscht.", - "apihelp-query+babel-summary": "Ruft Informationen darüber ab, welche Sprachen der Benutzer beherrscht.", - "apihelp-query+babel-param-user": "Benutzer, für den die Informationen abgerufen werden sollen.", - "apihelp-query+babel-example-1": "Ruft die Babel-Informationen für den Benutzer Beispiel ab" + "babel-footer": "Benutzer nach Sprache" } diff --git a/MLEB/Babel/i18n/diq.json b/MLEB/Babel/i18n/diq.json index 0f673889..96716951 100644 --- a/MLEB/Babel/i18n/diq.json +++ b/MLEB/Babel/i18n/diq.json @@ -1,18 +1,18 @@ { "@metadata": { "authors": [ + "1917 Ekim Devrimi", "Erdemaslancan", + "Gambollar", "Gorizon", - "Mirzali", - "Neribij", - "Marmase", - "Kumkumuk", - "1917 Ekim Devrimi", "Gırd", - "Gambollar" + "Kumkumuk", + "Marmase", + "Mirzali", + "Neribij" ] }, - "babel": "Zanışekê babilê karberi", + "babel": "Melumatê karberiyê Babili", "babel-desc": "Menıne de otomatik désé karberi vırazşten da şablonan ré, fonksiyona #babili kena de", "babel-url": "Project:Babil", "babel-footer-url": ":Kategori:Babil - Hetê zıwanan ra karberi", @@ -35,8 +35,5 @@ "babel-5-n": "Karber [[$1|profesyonel]] sewiya de [[$2|Zazaki]] zano.", "babel-N-n": "Zıwané [[$1|may u pér]] dê karberi [[$2|Zazaki]] yo.", "babel-template": "Template:User $1", - "babel-footer": "Zıwana deyne karberi", - "apihelp-query+babel-description": "Karbero kı çı zıwan zano şo heqdë cı malumat bıvin", - "apihelp-query+babel-param-user": "Şo heqdë karberi malumat", - "apihelp-query+babel-example-1": "Misal şo Babil malumata karberi" + "babel-footer": "Goreyê zıwanan ra karberi" } diff --git a/MLEB/Babel/i18n/dv.json b/MLEB/Babel/i18n/dv.json index 60bd158b..bd6ad7f5 100644 --- a/MLEB/Babel/i18n/dv.json +++ b/MLEB/Babel/i18n/dv.json @@ -1,9 +1,10 @@ { "@metadata": { "authors": [ + "Epok", "Purodha" ] }, - "babel-0-n": "މި ބޭފުޅާއަށް [[$2|ދިވެހި ބަސް[[ އެނގިވަޑައެއްނުގަނޭ", - "babel-4-n": "މި ބޭފުޅާއަށް ދިވެހި ބަސް [[$2|އެނގިވަޑައެއްނުގަނޭ[[" + "babel-0-n": "މި ބޭފުޅާއަށް [[$2|ދިވެހި ބަސް]] އެނގިވަޑައެއްނުގަނޭ", + "babel-4-n": "މި ބޭފުޅާއަށް ދިވެހި ބަސް [[$2|އެނގިވަޑައެއްނުގަނޭ]]" } diff --git a/MLEB/Babel/i18n/el.json b/MLEB/Babel/i18n/el.json index bee60e1d..8864f9da 100644 --- a/MLEB/Babel/i18n/el.json +++ b/MLEB/Babel/i18n/el.json @@ -4,9 +4,9 @@ "AK", "Consta", "Glavkos", + "Nikosgranturismogt", "Omnipaedista", - "Αντιγόνη", - "Nikosgranturismogt" + "Αντιγόνη" ] }, "babel": "Πληροφορίες Βαβέλ Χρήστη", @@ -31,9 +31,5 @@ "babel-5-n": "Αυτός ο χρήστης μπορεί να συνεισφέρει σε [[$1|επαγγελματικού]] επιπέδου [[$2|Ελληνικά]].", "babel-N-n": "Αυτός ο χρήστης έχει ως [[$1|μητρική]] του γλώσσα τα [[$2|Ελληνικά]].", "babel-template": "Template:Χρήστης $1", - "babel-footer": "Χρήστες ανά γλώσσα", - "apihelp-query+babel-description": "Λάβετε πληροφορίες για το ποιες γλώσσες ξέρει ο χρήστης", - "apihelp-query+babel-summary": "Λάβετε πληροφορίες για το ποιες γλώσσες ξέρει ο χρήστης", - "apihelp-query+babel-param-user": "Χρήστης για τον οποίο θα ληφθούν πληροφορίες", - "apihelp-query+babel-example-1": "Λάβετε πληροφορίες Βαβέλ για τον χρήστη Παράδειγμα" + "babel-footer": "Χρήστες ανά γλώσσα" } diff --git a/MLEB/Babel/i18n/en-gb.json b/MLEB/Babel/i18n/en-gb.json index dfd3aaaa..cda02e67 100644 --- a/MLEB/Babel/i18n/en-gb.json +++ b/MLEB/Babel/i18n/en-gb.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ - "Jdforrester", - "Pooja.srivastava", - "Chase me ladies, I'm the Cavalry", "Andibing", - "Dejavu" + "Chase me ladies, I'm the Cavalry", + "Dejavu", + "Jdforrester", + "Pooja.srivastava" ] }, "babel": "Babel user information", @@ -29,8 +29,5 @@ "babel-4-n": "This user has [[$1|near native speaker]] knowledge of [[$2|English]].", "babel-5-n": "This user has [[$1|professional]] knowledge of [[$2|English]].", "babel-N-n": "This user has a [[$1|native]] understanding of [[$2|English]].", - "babel-footer": "Users by language", - "apihelp-query+babel-description": "Get information about what languages the user knows", - "apihelp-query+babel-param-user": "User to get information about", - "apihelp-query+babel-example-1": "Get the Babel information for user Example" + "babel-footer": "Users by language" } diff --git a/MLEB/Babel/i18n/en.json b/MLEB/Babel/i18n/en.json index dbb3de78..1d561b78 100644 --- a/MLEB/Babel/i18n/en.json +++ b/MLEB/Babel/i18n/en.json @@ -29,9 +29,5 @@ "babel-N-n": "This user has a [[$1|native]] understanding of [[$2|English]].", "babel-portal": "", "babel-template": "Template:User $1", - "babel-footer": "Users by language", - "apihelp-query+babel-description": "Get information about what languages the user knows", - "apihelp-query+babel-summary": "Get information about what languages the user knows", - "apihelp-query+babel-param-user": "User to get information about", - "apihelp-query+babel-example-1": "Get the Babel information for user Example" + "babel-footer": "Users by language" } diff --git a/MLEB/Babel/i18n/eo.json b/MLEB/Babel/i18n/eo.json index af37733c..d293f42e 100644 --- a/MLEB/Babel/i18n/eo.json +++ b/MLEB/Babel/i18n/eo.json @@ -1,12 +1,13 @@ { "@metadata": { "authors": [ + "Joao Xavier", "KuboF", "Malafaya", "Michawiki", - "Yekrats", + "Mirin", "Robin van der Vliet", - "Joao Xavier" + "Yekrats" ] }, "babel": "Babela informo pri uzanto", @@ -30,5 +31,6 @@ "babel-4-n": "Ĉi tiu uzanto parolas kun [[$1|preskaŭ denaska]] scio de [[$2|Esperanto]].", "babel-5-n": "Ĉi tiu uzanto estas [[$1|profesia]] parolanto de [[$2|Esperanto]].", "babel-N-n": "Ĉi tiu uzanto estas [[$1|denaska parolanto]] de [[$2|Esperanto]].", + "babel-template": "Template:Uzanto $1", "babel-footer": "Uzantoj laŭ lingvoj" } diff --git a/MLEB/Babel/i18n/es.json b/MLEB/Babel/i18n/es.json index 122b667a..502fff0b 100644 --- a/MLEB/Babel/i18n/es.json +++ b/MLEB/Babel/i18n/es.json @@ -6,9 +6,9 @@ "Fitoschido", "Fluence", "GerardM", + "Macofe", "Sanbec", - "Vivaelcelta", - "Macofe" + "Vivaelcelta" ] }, "babel": "Información de idiomas {{GENDER:$1|del usuario|de la usuaria}}", @@ -32,9 +32,5 @@ "babel-4-n": "{{GENDER:$4|Este usuario|Esta usuaria}} tiene un conocimiento [[$1|casi nativo]] del [[$2|español]].", "babel-5-n": "{{GENDER:$4|Este usuario|Esta usuaria}} tiene un conocimiento [[$1|profesional]] del [[$2|español]].", "babel-N-n": "{{GENDER:$4|Este usuario|Esta usuaria}} tiene una comprensión [[$1|nativa]] del [[$2|español]].", - "babel-footer": "Usuarios por idioma", - "apihelp-query+babel-description": "Obtener información sobre los idiomas que el usuario sabe", - "apihelp-query+babel-summary": "Obtener información sobre los idiomas que conoce el usuario", - "apihelp-query+babel-param-user": "Usuario del cual obtener información", - "apihelp-query+babel-example-1": "Obtener la información de Babel del usuario Example" + "babel-footer": "Usuarios por idioma" } diff --git a/MLEB/Babel/i18n/eu.json b/MLEB/Babel/i18n/eu.json index e8442740..e48cb7dd 100644 --- a/MLEB/Babel/i18n/eu.json +++ b/MLEB/Babel/i18n/eu.json @@ -3,8 +3,8 @@ "authors": [ "An13sa", "Kobazulo", - "Theklan", - "Sator" + "Sator", + "Theklan" ] }, "babel": "Lankideen babel informazioa", @@ -29,9 +29,5 @@ "babel-4-n": "Erabiltzaile honek [[$1|euskaldun zahar baten antzeko mailan]] lagun dezake [[$2|euskara]]z.", "babel-5-n": "Erabiltzaile honek [[$2|euskara]] [[$1|aditu]] mailan erabiltzen du.", "babel-N-n": "Erabiltzaile hau [[$1|euskaldun zaharra]] da ([[$2|euskara]] du ama hizkuntza).", - "babel-footer": "Lankideak hizkuntzaren arabera", - "apihelp-query+babel-description": "Eskuratu lakideak dakizkien hizkuntzen inguruko informazioa", - "apihelp-query+babel-summary": "Lankideak dakizkien hizkuntzen inguruko informazioa jaso", - "apihelp-query+babel-param-user": "Zein lankideren informazioa lortu", - "apihelp-query+babel-example-1": "Adibide lankidearen Babel informazioa lortu" + "babel-footer": "Lankideak hizkuntzaren arabera" } diff --git a/MLEB/Babel/i18n/fa.json b/MLEB/Babel/i18n/fa.json index d0f64d3f..e20ac2bb 100644 --- a/MLEB/Babel/i18n/fa.json +++ b/MLEB/Babel/i18n/fa.json @@ -7,8 +7,8 @@ "Ladsgroup", "Mjbmr", "Reza1615", - "ZxxZxxZ", - "Rtemis" + "Rtemis", + "ZxxZxxZ" ] }, "babel": "اطلاعات کاربری بابل", @@ -33,9 +33,5 @@ "babel-5-n": "این کاربر [[$2|فارسی]] را در حد [[$1|حرفه‌ای]] می‌فهمد.", "babel-N-n": "این کاربر [[$2|فارسی]] را در حد [[$1|زبان مادری]] می‌فهمد.", "babel-template": "Template:User $1", - "babel-footer": "کاربران بر پایهٔ زبان", - "apihelp-query+babel-description": "درباره اینکه کاربر چه زبان‌هایی می‌داند اطلاعات دریافت کن", - "apihelp-query+babel-summary": "درباره زبان‌هایی که کاربر می‌داند اطلاعاتی بگیر", - "apihelp-query+babel-param-user": "کاربر برای دریافت اطلاعات", - "apihelp-query+babel-example-1": "گرفتن اطلاعات زبانی برای کاربر Example" + "babel-footer": "کاربران بر پایهٔ زبان" } diff --git a/MLEB/Babel/i18n/fi.json b/MLEB/Babel/i18n/fi.json index 2cc95316..ede34124 100644 --- a/MLEB/Babel/i18n/fi.json +++ b/MLEB/Babel/i18n/fi.json @@ -1,14 +1,14 @@ { "@metadata": { "authors": [ + "4shadoww", "Crt", "Ilaiho", "Jaakonam", "Linnea", "Nedergard", "Nike", - "Pxos", - "4shadoww" + "Pxos" ] }, "babel": "Käyttäjän kielitaito", diff --git a/MLEB/Babel/i18n/fit.json b/MLEB/Babel/i18n/fit.json index 107ab4b2..93565c3e 100644 --- a/MLEB/Babel/i18n/fit.json +++ b/MLEB/Babel/i18n/fit.json @@ -1,8 +1,27 @@ { "@metadata": { "authors": [ - "Mestos" + "Mestos", + "Pyscowicz" ] }, + "babel-url": "Project:Kielitaito", + "babel-autocreate-reason": "[[$1|Kielitaidon]] katekuurisivun automaattinen luonti.", + "babel-autocreate-text-levels": "Käyttäjät tässä katekuurissa ovat ilmottaneet ossaavansa kieltä $2 tasolla $1.", + "babel-autocreate-text-main": "Käyttäjät tässä katekuurissa ovat ilmottaneet ymmärtävänsä kieltä $1.", + "babel-0": "Tämä käyttäjä ossaa [[$1|hyvin vähän tai ei lainkhaan]] kieltä [[$2|$3]].", + "babel-1": "Tällä käyttäjällä oon kielen [[$2|$3]] [[$1|perustaiot]]", + "babel-2": "Tämä käyttäjä ossaa kieltä [[$2|$3]] [[$1|kohtalaisesti]].", + "babel-3": "Tämä käyttäjä ossaa kieltä [[$2|$3]] [[$1|erinomaisesti]].", + "babel-4": "Tämä käyttäjä ossaa kieltä [[$2|$3]] [[$1|lähes äidinkielen tavoin]].", + "babel-5": "Tämä käyttäjä ossaa käyttää kieltä [[$2|$3]] [[$1|ammattimaisesti]].", + "babel-N": "Tämän käyttäjän [[$1|äitinkieli]] oon [[$2|$3]].", + "babel-0-n": "Tämä käyttäjä ossaa [[$1|hyvin vähän tai ei lainkhaan]] [[$2|meänkieltä]].", + "babel-1-n": "Tämä käyttäjä puhhuu [[$2|meänkieltä]] [[$1|vähän]].", + "babel-2-n": "Tämä käyttäjä ossaa [[$2|meänkieltä]] [[$1|kohtalaisesti]].", + "babel-3-n": "Tämä käyttäjä ossaa [[$2|meänkieltä]] [[$1|erinomaisesti]].", + "babel-4-n": "Tämä käyttäjä ossaa [[$2|meänkieltä]] [[$1|melkein äidinkielen tavoin]].", + "babel-5-n": "Tämä käyttäjä käyttää [[$2|meänkieltä]] [[$1|ammattimaisesti]].", + "babel-N-n": "Tämän käyttäjän [[$1|äitinkieli]] oon [[$2|meänkieli]].", "babel-footer": "Käyttäjät kielitten mukhaan" } diff --git a/MLEB/Babel/i18n/fr.json b/MLEB/Babel/i18n/fr.json index 99c1b9a2..cca9216e 100644 --- a/MLEB/Babel/i18n/fr.json +++ b/MLEB/Babel/i18n/fr.json @@ -4,45 +4,43 @@ "Cedric31", "ChrisPtDe", "Crochet.david", + "Epok", + "Gomoko", "Grondin", "IAlex", + "JackPotte", "Jens Liebenau", "Louperivois", + "NickK", + "TTO", "UV", "Urhixidur", "Verdy p", - "Zebulon84", - "Gomoko", - "TTO", "Wladek92", - "JackPotte" + "Zebulon84" ] }, "babel": "Informations Babel sur l’{{GENDER:$1|utilisateur|utilisatrice|utilisateur}}", "babel-desc": "Ajoute la fonction de l’analyseur syntaxique #babel permettant la création automatique d’une colonne de boîtes utilisateur Babel avec la possibilité d’inclure des modèles locaux", "babel-url": "Project:Babel", - "babel-footer-url": ":Catégorie:Babel - Utilisateurs par langue", - "babel-autocreate-reason": "Création automatique de la page des catégories [[$1|Babel]].", + "babel-footer-url": ":Catégorie:Babel – Utilisateurs par langue", + "babel-autocreate-reason": "Création automatique de la page de catégorie [[$1|Babel]].", "babel-autocreate-text-levels": "Les utilisateurs dans cette catégorie ont indiqué qu’ils ont le niveau $1 pour la langue $2.", "babel-autocreate-text-main": "Les utilisateurs dans cette catégorie ont indiqué leur connaissance de la langue $1.", "babel-0": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} n’a [[$1|aucune]] connaissance en [[$2|$3]] (ou le comprend avec de grandes difficultés).", - "babel-1": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} peut contribuer avec un niveau [[$1|élémentaire]] en [[$2|$3]].", - "babel-2": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} a une connaissance [[$1|moyenne]] en [[$2|$3]].", - "babel-3": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose d’une connaissance [[$1|avancée]] en [[$2|$3]].", - "babel-4": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} a une connaissance proche de la [[$1|langue maternelle]] en [[$2|$3]].", - "babel-5": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} a un niveau de connaissance [[$1|professionnel]] en [[$2|$3]].", + "babel-1": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose de connaissances [[$1|de base]] en [[$2|$3]].", + "babel-2": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose de connaissances [[$1|intermédiaires]] en [[$2|$3]].", + "babel-3": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose de connaissances [[$1|avancées]] en [[$2|$3]].", + "babel-4": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose de connaissances proches de la [[$1|langue maternelle]] en [[$2|$3]].", + "babel-5": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose de connaissances [[$1|professionnelles]] en [[$2|$3]].", "babel-N": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} parle en [[$2|$3]] comme [[$1|langue maternelle]].", "babel-0-n": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} n’a [[$1|aucune]] connaissance en [[$2|français]] (ou le comprend avec de grandes difficultés).", "babel-1-n": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose de connaissances [[$1|de base]] en [[$2|français]].", - "babel-2-n": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose d’un [[$1|niveau intermédiaire]] de connaissance en [[$2|français]].", + "babel-2-n": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose de connaissances [[$1|intermédiaires]] en [[$2|français]].", "babel-3-n": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose de connaissances [[$1|avancées]] en [[$2|français]].", - "babel-4-n": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose de connaissances proches de la [[$1|langue maternelle]] en [[$2|français]].", - "babel-5-n": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose d’un niveau de connaissances [[$1|professionnel]] du [[$2|français]].", + "babel-4-n": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose de connaissances [[$1|proches de la langue maternelle]] en [[$2|français]].", + "babel-5-n": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} dispose de connaissances [[$1|professionnelles]] en [[$2|français]].", "babel-N-n": "{{GENDER:$4|Cet utilisateur|Cette utilisatrice}} a pour [[$1|langue maternelle]] le [[$2|français]].", "babel-template": "Modèle:User $1", - "babel-footer": "Utilisateurs par langue", - "apihelp-query+babel-description": "Obtenir des informations sur les langues connues de l’utilisateur", - "apihelp-query+babel-summary": "Obtenir des informations sur les langues que connaît l’utilisateur", - "apihelp-query+babel-param-user": "Utilisateur à propos duquel obtenir des informations", - "apihelp-query+babel-example-1": "Obtenir les informations de Babel pour l’utilisateur Example" + "babel-footer": "Utilisateurs par langue" } diff --git a/MLEB/Babel/i18n/fy.json b/MLEB/Babel/i18n/fy.json index 7665b1a3..e76d6b44 100644 --- a/MLEB/Babel/i18n/fy.json +++ b/MLEB/Babel/i18n/fy.json @@ -2,13 +2,15 @@ "@metadata": { "authors": [ "Crazymadlover", + "PiefPafPier", "SK-luuut", "Snakesteuben" ] }, - "babel": "Babel-meidoggersynformaasje", + "babel": "Meidoggerynfo Babel", "babel-desc": "Foeget de #babel automatyske opdielerfunksje ta om it automatysk meitsjen fan in Babel meidoggerskolom ta stean mei de mooglikheid om eigen berjochten ta te foegjen.", "babel-url": "Project:Babel", + "babel-footer-url": ":Category:Babel - Meidoggers op taal", "babel-autocreate-reason": "Makket automatysk in [[$1|Babel]]-kategory oan.", "babel-autocreate-text-levels": "Meidoggers yn dizze kategory jouwe oan dat harren taalkennis foar $2 $1 is.", "babel-autocreate-text-main": "Meidoggers yn dizze kategory jouwe oan dat hja kennis fan $1 hawwe.", @@ -25,5 +27,6 @@ "babel-3-n": "It [[$2|Frysk]] fan dizze meidogger is [[$1|treflik]].", "babel-4-n": "It [[$2|Frysk]] is benei de [[$1|memmetaal]] fan dizze meidogger.", "babel-5-n": "De kennis fan it [[$2|Frysk]] fan dizze meidogger is [[$1|beropsmatich]].", - "babel-N-n": "It [[$2|Frysk]] is de [[$1|memmetaal]] fan dizze meidogger." + "babel-N-n": "It [[$2|Frysk]] is de [[$1|memmetaal]] fan dizze meidogger.", + "babel-footer": "Meidoggers op taal" } diff --git a/MLEB/Babel/i18n/gcr.json b/MLEB/Babel/i18n/gcr.json index 2a022c3c..dc09ea7d 100644 --- a/MLEB/Babel/i18n/gcr.json +++ b/MLEB/Babel/i18n/gcr.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "LeGuyanaisPure" + "LeGuyanaisPure", + "Léon973" ] }, "babel": "Lenfòrmasyon Babel asou {{GENDER:$1|itilizatò}}-a", @@ -9,25 +10,21 @@ "babel-url": "Project:Babel", "babel-footer-url": ":Katégori:Babel - Itilizatò pa lanng", "babel-autocreate-reason": "Kréyasyon otonmatik di paj-a dé katégori [[$1|Babel]].", - "babel-autocreate-text-levels": "Itilizatò-ya ki annan sa katégori endiké ki yé gen nivo-a $1 pou lanng-an $2.", + "babel-autocreate-text-levels": "Itilizatò-ya ki annan sa katégori endiké ki yé gen nivèl-a $1 pou lanng $2.", "babel-autocreate-text-main": "Itilizatò-ya ki annan sa katégori endiké yé konnésans di lanng-an $1.", - "babel-0": "{{GENDER:$4|Sa itilizatò}} pa gen [[$1|pyès]] konnésans an [[$2|$3]] (oben ka konprann li ké rounlo difikilté).", - "babel-1": "{{GENDER:$4|Sa itilizatò}} pouvé kontribiyé ké roun nivo ki [[$1|élémantèr]] an [[$2|$3]].", + "babel-0": "{{GENDER:$4|Sa itilizatò}} gen [[$1|pyès]] konnésans an [[$2|$3]] (oben ka konprann li ké rounlo difikilté).", + "babel-1": "Sa itilizatò gangnen konnésans [[$1|bazik]] an [[$2|$3]].", "babel-2": "{{GENDER:$4|Sa itilizatò}} gen roun konnésans ki [[$1|mwayen]] an [[$2|$3]].", - "babel-3": "{{GENDER:$4|Sa itilizatò}} ka dispozé di roun konnésans ki [[$1|avansé]] an [[$2|$3]].", + "babel-3": "Sa itilizatò gangnen konnésans ki [[$1|avansé]] an [[$2|$3]].", "babel-4": "{{GENDER:$4|Sa itilizatò}} gen roun konnésans ki pròch di [[$1|lanng matèrnèl-a]] an [[$2|$3]].", - "babel-5": "{{GENDER:$4|Sa itilizatò-a}} gen roun nivo di konnésans ki [[$1|profésyonnèl]] an [[$2|$3]].", + "babel-5": "Sa itilizatò gangnen konnésans kou [[$1|dòkò]] an [[$2|$3]].", "babel-N": "{{GENDER:$4|Sa itilizatò}} ka palé an [[$2|$3]] kou [[$1|lanng matèrnèl]].", "babel-0-n": "{{GENDER:$4|Sa itilizatò}} gen [[$1|pyès]] konnésans an [[$2|Kriyòl Gwiyannen]] (oben ka konprann li ké rounlo difikilté).", - "babel-1-n": "{{GENDER:$4|Sa itilizatò}} ka dispozé di konnésans ki [[$1|bazik]] an [[$2|Kriyòl Gwiyannen]].", - "babel-2-n": "{{GENDER:$4|Sa itilizatò}} ka dispozé di roun [[$1|nivo entèrmédjèr]] di konnésans an [[$2|Kriyòl Gwiyannen]].", - "babel-3-n": "{{GENDER:$4|Sa itilizatò}} ka dispozé di konnésans ki [[$1|avansé]] an [[$2|Kriyòl Gwiyannen]].", - "babel-4-n": "{{GENDER:$4|Sa itilizatò}} ka dispozé di konnésans ki pròch di [[$1|lanng matèrnèl-a]] an [[$2|Kriyòl Gwiyannen]].", - "babel-5-n": "{{GENDER:$4|Sa itilizatò}} ka dispozé di roun nivo di konnésans ki [[$1|profésyonnèl]] di [[$2|Kriyòl Gwiyannen]].", + "babel-1-n": "Sa itilizatò gangnen konnésans ki [[$1|bazik]] an [[$2|Kriyòl Gwiyannen]].", + "babel-2-n": "Sa itilizatò gangnen konnésans ki [[$1|entèrmédjèr]] an [[$2|Kriyòl Gwiyannen]].", + "babel-3-n": "Sa itilizatò gangnen konnésans ki [[$1|avansé]] an [[$2|Kriyòl Gwiyannen]].", + "babel-4-n": "Sa itilizatò gangnen konnésans ki pròch di [[$1|lanng matèrnèl-a]] an [[$2|Kriyòl Gwiyannen]].", + "babel-5-n": "Sa itilizatò gangnen konnésans kou [[$1|dòkò]] an [[$2|Kriyòl Gwiyannen]].", "babel-N-n": "{{GENDER:$4|Sa itilizatò}} gen pou [[$1|lanng matèrnèl]] [[$2|Kriyòl Gwiyannen]]-an.", - "babel-footer": "Itilizatò pa lanng", - "apihelp-query+babel-description": "Òbténi dé lenfòrmasyon asou lanng-yan ki konnèt pa itilizatò-a", - "apihelp-query+babel-summary": "Òbténi dé lenfòrmasyon asou lanng-yan ki itilizatò-a ka konnèt", - "apihelp-query+babel-param-user": "Itilizatò apropo dikèl òbténi dé lenfòrmasyon", - "apihelp-query+babel-example-1": "Òbténi lenfòrmasyon-yan di Babel pou itilizatò-a Example" + "babel-footer": "Itilizatò pa lanng" } diff --git a/MLEB/Babel/i18n/gd.json b/MLEB/Babel/i18n/gd.json index c2681931..b0c00a83 100644 --- a/MLEB/Babel/i18n/gd.json +++ b/MLEB/Babel/i18n/gd.json @@ -3,9 +3,9 @@ "authors": [ "Akerbeltz", "Caoimhin", + "GunChleoc", "Sionnach", - "Steafan31", - "GunChleoc" + "Steafan31" ] }, "babel": "Fiosrachadh Babel mun chleachdaiche", diff --git a/MLEB/Babel/i18n/gl.json b/MLEB/Babel/i18n/gl.json index f12093bc..715056e3 100644 --- a/MLEB/Babel/i18n/gl.json +++ b/MLEB/Babel/i18n/gl.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Toliño", - "Elisardojm" + "Elisardojm", + "Toliño" ] }, "babel": "Información Babel {{GENDER:$1|do usuario|da usuaria}}", @@ -26,9 +26,5 @@ "babel-4-n": "{{GENDER:$4|Este usuario|Esta usuaria}} ten un coñecemento [[$1|similar ao dun nativo]] de [[$2|galego]].", "babel-5-n": "{{GENDER:$4|Este usuario|Esta usuaria}} ten un coñecemento [[$1|profesional]] de [[$2|galego]].", "babel-N-n": "{{GENDER:$4|Este usuario|Esta usuaria}} é {{GENDER:$4|un|unha}} falante [[$1|{{GENDER:$4|nativo|nativa}}]] de [[$2|galego]].", - "babel-footer": "Usuarios por lingua", - "apihelp-query+babel-description": "Obter información sobre as linguas que o usuario coñece", - "apihelp-query+babel-summary": "Obter información sobre as linguas que coñece o usuario", - "apihelp-query+babel-param-user": "Usuario do cal obter a información", - "apihelp-query+babel-example-1": "Obtener a información de Babel do usuario Example" + "babel-footer": "Usuarios por lingua" } diff --git a/MLEB/Babel/i18n/gn.json b/MLEB/Babel/i18n/gn.json index 9b962e02..eddce04c 100644 --- a/MLEB/Babel/i18n/gn.json +++ b/MLEB/Babel/i18n/gn.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Purodha", - "Guillermo2149" + "Guillermo2149", + "Purodha" ] }, "babel-footer-url": "Category:Yvypóra ñe'ẽnguéra", diff --git a/MLEB/Babel/i18n/got.json b/MLEB/Babel/i18n/got.json index 9d29caed..079564a2 100644 --- a/MLEB/Babel/i18n/got.json +++ b/MLEB/Babel/i18n/got.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ - "Purodha", "Gothicspeaker", - "Od1n" + "Od1n", + "Purodha" ] }, "babel-url": "Project:𐌱𐌰𐌱𐍅𐌻𐌰𐌿𐌽", diff --git a/MLEB/Babel/i18n/gu.json b/MLEB/Babel/i18n/gu.json index a7e676c4..b7dac7b3 100644 --- a/MLEB/Babel/i18n/gu.json +++ b/MLEB/Babel/i18n/gu.json @@ -28,8 +28,5 @@ "babel-4-n": "[[$2|ગુજરાતી]]ની આ સભ્યને [[$1|માતૃભાષા]] જેટલી જાણકારી છે.", "babel-5-n": "આ સભ્યને [[$2|ગુજરાતી]] ઉપર [[$1|પ્રભુત્વ]] છે.", "babel-N-n": "[[$2|ગુજરાતી]] આ સભ્યની [[$1|માતૃભાષા]] છે.", - "babel-footer": "ભાષાવાર સભ્યો", - "apihelp-query+babel-description": "સભ્ય કઇ ભાષા જાણે છે તે વિશે માહિતી મેળવો", - "apihelp-query+babel-param-user": "સભ્ય આ વિશે માહિતી મેળવશે", - "apihelp-query+babel-example-1": "સભ્ય માટે બાબેલ માહિતી મેળવો ઉદાહરણ" + "babel-footer": "ભાષાવાર સભ્યો" } diff --git a/MLEB/Babel/i18n/ha.json b/MLEB/Babel/i18n/ha.json index f9625f2f..489239a0 100644 --- a/MLEB/Babel/i18n/ha.json +++ b/MLEB/Babel/i18n/ha.json @@ -4,7 +4,10 @@ "Ammarpad" ] }, + "babel": "Harsunan edita", "babel-0": "Wannan edita [[$1|baya jin]] [[$2|$3]] (ko kuma zai iya fahimta da ƙyar).", "babel-5": "Wannan edita [[$1|ya karanci]] [[$2|$3]] sosai.", - "babel-N": "Wannan edita [[$1|cikakken]] [[$2|Bahaushe]] ne." + "babel-N": "Wannan edita [[$1|cikakken]] [[$2|Bahaushe]] ne.", + "babel-N-n": "Wannan edita [[$1|cikakken]] [[$2|Bahaushe]] ne.", + "babel-footer": "Editoci da yarensu" } diff --git a/MLEB/Babel/i18n/he.json b/MLEB/Babel/i18n/he.json index fbc2b5fb..d368c4bc 100644 --- a/MLEB/Babel/i18n/he.json +++ b/MLEB/Babel/i18n/he.json @@ -4,9 +4,9 @@ "Agbad", "Amire80", "GerardM", + "Guycn2", "Rotemliss", - "YaronSh", - "Guycn2" + "YaronSh" ] }, "babel": "מידע על כישורי שפה של המשתמש", @@ -31,9 +31,5 @@ "babel-4-n": "{{GENDER:$4|משתמש זה יודע|משתמשת זו יודעת}} [[$2|עברית]] ברמה [[$1|קרובה לשפת אם]].", "babel-5-n": "{{GENDER:$4|משתמש זה יודע|משתמשת זו יודעת}} [[$2|עברית]] ברמה [[$1|מקצועית]].", "babel-N-n": "{{GENDER:$4|משתמש זה דובר|משתמשת זו דוברת}} [[$2|עברית]] כ[[$1|שפת אם]].", - "babel-footer": "משתמשים לפי שפה", - "apihelp-query+babel-description": "קבלת מידע על שפות שהמשתמש יודע", - "apihelp-query+babel-summary": "קבלת מידע על השפות שהמשתמש יודע", - "apihelp-query+babel-param-user": "על איזה משתמש לקבל מידע", - "apihelp-query+babel-example-1": "קבלת מידע Babel על המשתמש Example" + "babel-footer": "משתמשים לפי שפה" } diff --git a/MLEB/Babel/i18n/hi.json b/MLEB/Babel/i18n/hi.json index b34608ec..a1c17785 100644 --- a/MLEB/Babel/i18n/hi.json +++ b/MLEB/Babel/i18n/hi.json @@ -3,11 +3,11 @@ "authors": [ "Bhawani Gautam", "Bhawani Gautam Rhk", + "Innocentbunny", "Kaustubh", "Pooja.srivastava", - "Siddhartha Ghai", "Sfic", - "Innocentbunny" + "Siddhartha Ghai" ] }, "babel": "बेबल सदस्य जानकारी", @@ -33,9 +33,5 @@ "babel-5-n": "इस सदस्य को [[$2|हिन्दी]] का [[$1|व्यावसायिक स्तर]] का ज्ञान है।", "babel-N-n": "इस सदस्य को [[$2|हिन्दी]] का [[$1|मातृभाषा के समान]] ज्ञान है।", "babel-template": "Template:सदस्य $1", - "babel-footer": "भाषा अनुसार सदस्य", - "apihelp-query+babel-description": "सदस्य कितनी भाषाओं को जानता है, इस बारे में जानकारी लें", - "apihelp-query+babel-summary": "उपयोक्ता द्वारा ज्ञात भाषाओँ की सूचना अर्जित करें", - "apihelp-query+babel-param-user": "सदस्य के बारे में जानकारी लें", - "apihelp-query+babel-example-1": "सदस्य उदाहरण के बारे में बबेल जानकारी लें" + "babel-footer": "भाषा अनुसार सदस्य" } diff --git a/MLEB/Babel/i18n/hif-latn.json b/MLEB/Babel/i18n/hif-latn.json index f47ae6b7..fb688368 100644 --- a/MLEB/Babel/i18n/hif-latn.json +++ b/MLEB/Babel/i18n/hif-latn.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "1997kB", "Girmitya" ] }, @@ -11,13 +12,13 @@ "babel-autocreate-reason": "Apne se [[$1|Babel]] vibhag ke banawa jaae hae", "babel-autocreate-text-levels": "Ii vibhag ke sadasya ke lage $2 bhasa ke khaatir $1 ke baraabar ke jaankari hae.", "babel-autocreate-text-main": "Ii vibhag ke sadasya ii batae hae ki uske lage bhasa $1 ke jaankari hae.", - "babel-0": "Ii sadasya ke lage [[$2|$3]] ke [[$1|kuchh nai]] jaankari nai hae (nai to ii bhasa ke bahut muskil se samjhe hae).", - "babel-1": "Ii sadasya ke lage [[$2|$3]] ke [[$1|khaali thorraa]] jaankari hae.", - "babel-2": "Ii sadasya ke lage [[$2|$3]] ke [[$1|samjhe bhar ke]] jaankari hae.", - "babel-3": "Ii sadasya ke lage [[$2|$3]] ke [[$1|achchhaa]] jaankari hae.", - "babel-4": "Ii sadasya ke lage [[$2|$3]] ke [[$1|lagbhag bachpan ke bhasa ke rakam ke]] jaankari hae.", + "babel-0": "Is sadasya ko [[$2|$3]] ke [[$1|kuchh bhi]] jaankari nai hae.", + "babel-1": "Is sadasya ko [[$2|$3]] ke [[$1|khaali thorraa]] jaankari hae.", + "babel-2": "Is sadasya ko [[$2|$3]] ke [[$1|samjhe bhar ke]] jaankari hae.", + "babel-3": "Is sadasya ko [[$2|$3]] ke [[$1|achchhaa]] jaankari hae.", + "babel-4": "Is sadasya ko [[$2|$3]] ki [[$1|lagbhag bachpan ke bhasa ke saman]] jaankari hae.", "babel-5": "Ii sadasya ke lage [[$2|$3]] ke [[$1|khaas]] jaankari hae.", - "babel-N": "Ii sadasya ke lage [[$2|$3]] ke [[$1|bachpan ke bhasa ke rakam ke]] jaankari hae.", + "babel-N": "Is sadasya ko [[$2|$3]] ke [[$1|bachpan ke bhasa ke saman]] jaankari hae.", "babel-0-n": "Ii sadasya ke lage [[$2|English]] ke [[$1|kuchh nai]] jaankari nai hae (nai to ii bhasa ke bahut muskil se samjhe hae).", "babel-1-n": "Ii sadasya ke lage [[$2|English]] ke [[$1|khaali thorraa]] jaankari hae.", "babel-2-n": "Ii sadasya ke lage [[$2|English]] ke [[$1|samjhe bhar ke]] jaankari hae.", diff --git a/MLEB/Babel/i18n/hr.json b/MLEB/Babel/i18n/hr.json index 16d1e52f..4227ab1c 100644 --- a/MLEB/Babel/i18n/hr.json +++ b/MLEB/Babel/i18n/hr.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ + "Bugoslav", + "Conquistador", "Ex13", "Herr Mlinka", - "Conquistador", - "Bugoslav", "MaGa" ] }, diff --git a/MLEB/Babel/i18n/hu.json b/MLEB/Babel/i18n/hu.json index c1ceee11..7072460e 100644 --- a/MLEB/Babel/i18n/hu.json +++ b/MLEB/Babel/i18n/hu.json @@ -4,8 +4,8 @@ "Dani", "Dj", "Glanthor Reviol", - "Xbspiro", - "Tacsipacsi" + "Tacsipacsi", + "Xbspiro" ] }, "babel": "Bábel szerkesztői információk", @@ -29,9 +29,5 @@ "babel-4-n": "Ez a szerkesztő [[$1|közel anyanyelvi]] szinten beszéli a [[$2|magyar]] nyelvet.", "babel-5-n": "Ez a szerkesztő [[$1|professzionális]] szinten beszéli a [[$2|magyar]] nyelvet.", "babel-N-n": "Ennek a szerkesztőnek [[$2|magyar]] az [[$1|anyanyelve]].", - "babel-footer": "Szerkesztők nyelvek szerint", - "apihelp-query+babel-description": "Információk lekérése a felhasználó által beszélt nyelvekről", - "apihelp-query+babel-summary": "Információk lekérése a felhasználó által beszélt nyelvekről", - "apihelp-query+babel-param-user": "Lekérdezendő felhasználó", - "apihelp-query+babel-example-1": "Bábel-információk lekérése Example-ről" + "babel-footer": "Szerkesztők nyelvek szerint" } diff --git a/MLEB/Babel/i18n/hyw.json b/MLEB/Babel/i18n/hyw.json new file mode 100644 index 00000000..7fa3aa98 --- /dev/null +++ b/MLEB/Babel/i18n/hyw.json @@ -0,0 +1,26 @@ +{ + "@metadata": { + "authors": [ + "Դավիթ Սարոյան" + ] + }, + "babel": "Մասնակիցի լեզուներու իմացութիւն (Բաբելոն)", + "babel-url": "Project:Բաբելոն", + "babel-footer-url": ":Category:Բաբելոն - մասնակիցներ ըստ լեզուներու", + "babel-0": "Այս մասնակիցն [[$2|$3]] լեզուին [[$1|ծանօթ չէ]] կամ դժուարութեամբ կը հասկնայ։", + "babel-1": "Այս մասնակիցն ունի [[$2|$3]]ի [[$1|տարրական]] իմացութիւն։", + "babel-2": "Այս մասնակիցն ունի [[$2|$3]]ի [[$1|միջին]] իմացութիւն։", + "babel-3": "Այս մասնակիցն ունի [[$2|$3]]ի [[$1|գերազանց]] իմացութիւն։", + "babel-4": "Այս մասնակիցն ունի [[$2|$3]]ի [[$1|մայրենիի համազօր]] իմացութիւն։", + "babel-5": "Այս մասնակիցն ունի [[$2|$3]]ի [[$1|մասնագիտացեալ]] իմացութիւն։", + "babel-N": "[[$2|$3]]ը այս մասնակիցին [[$1|մայրենի]] լեզուն է։", + "babel-0-n": "Այս մասնակիցն [[$2|անգլերէն]] լեզուին [[$1|ծանօթ չէ]] կամ դժուարութեամբ կը հասկնայ։", + "babel-1-n": "Այս մասնակիցն ունի [[$2|արեւմտահայերէն]]ի [[$1|տարրական]] իմացութիւն։", + "babel-2-n": "Այս մասնակիցն ունի [[$2|արեւմտահայերէն]]ի [[$1|միջին]] իմացութիւն։", + "babel-3-n": "Այս մասնակիցն ունի [[$2|արեւմտահայերէն]]ի [[$1|գերազանց]] իմացութիւն։", + "babel-4-n": "Այս մասնակիցն ունի [[$2|արեւմտահայերէն]]ի [[$1|մայրենիի համազօր]] իմացութիւն։", + "babel-5-n": "Այս մասնակիցն ունի [[$2|արեւմտահայերէն]]ի [[$1|մասնագիտացեալ]] իմացութիւն։", + "babel-N-n": "[[$2|Արեւմտահայերէն]]ը այս մասնակիցին [[$1|մայրենի]] լեզուն է։", + "babel-template": "Template:Մասնակից $1", + "babel-footer": "Մասնակիցներ ըստ լեզուներու" +} diff --git a/MLEB/Babel/i18n/ia.json b/MLEB/Babel/i18n/ia.json index 638f6704..8acdb4de 100644 --- a/MLEB/Babel/i18n/ia.json +++ b/MLEB/Babel/i18n/ia.json @@ -27,9 +27,5 @@ "babel-5-n": "Iste usator ha cognoscentias [[$1|professional]] de [[$2|interlingua]].", "babel-N-n": "Iste usator ha cognoscentias a nivello [[$1|native]] de [[$2|interlingua]].", "babel-template": "Template:$1", - "babel-footer": "Usatores per lingua", - "apihelp-query+babel-description": "Obtener information sur le linguas que le usator cognosce", - "apihelp-query+babel-summary": "Obtener information sur le linguas que le usator cognosce", - "apihelp-query+babel-param-user": "Le usator sur le qual obtener information", - "apihelp-query+babel-example-1": "Obtener information Babel pro usator Example" + "babel-footer": "Usatores per lingua" } diff --git a/MLEB/Babel/i18n/id.json b/MLEB/Babel/i18n/id.json index 8fcc2b08..85a05799 100644 --- a/MLEB/Babel/i18n/id.json +++ b/MLEB/Babel/i18n/id.json @@ -3,12 +3,12 @@ "authors": [ "Aldnonymous", "Bennylin", + "Gombang", "IvanLanin", "Iwan Novirion", "Meursault2004", - "Rex", "Rachmat04", - "Gombang" + "Rex" ] }, "babel": "Informasi pengguna Babel", @@ -34,9 +34,5 @@ "babel-5-n": "Pengguna ini memiliki pengetahuan [[$1|profesional]] [[$2|bahasa Indonesia]].", "babel-N-n": "Pengguna ini adalah [[$1|penutur ibu]] [[$2|bahasa Indonesia]].", "babel-template": "Template:User $1", - "babel-footer": "Pengguna berdasarkan bahasa", - "apihelp-query+babel-description": "Dapatkan informasi mengenai bahasa yang diketahui pengguna ini", - "apihelp-query+babel-summary": "Dapatkan informasi mengenai bahasa apa yang diketahui oleh pengguna ini", - "apihelp-query+babel-param-user": "Pengguna yang informasinya akan didapatkan", - "apihelp-query+babel-example-1": "Dapatkan informasi Babel untuk pengguna Contoh" + "babel-footer": "Pengguna berdasarkan bahasa" } diff --git a/MLEB/Babel/i18n/ilo.json b/MLEB/Babel/i18n/ilo.json index 0a8c1a2e..ca7c30d2 100644 --- a/MLEB/Babel/i18n/ilo.json +++ b/MLEB/Babel/i18n/ilo.json @@ -26,9 +26,5 @@ "babel-4-n": "Daytoy nga agar-aramat ket [[$1|kasla patneng nga agsasao]] ti pannakaammona iti [[$2|Ilokano]].", "babel-5-n": "Daytoy nga agar-aramat ket [[$1|propesional]] ti pannakaammona iti [[$2|Ilokano]].", "babel-N-n": "Daytoy nga agar-aramat ket [[$1|patneng]] ti pannakaawatna iti [[$2|Ilokano]].", - "babel-footer": "Dagiti agar-aramat babaen ti pagsasao", - "apihelp-query+babel-description": "Agala ti pakaammo a maipanggep no ania dagiti pagsasao nga ammo ti agar-aramat", - "apihelp-query+babel-summary": "Agala iti pakaammo a maipanggep kadagiti pagsasao nga ammo ti agar-aramat", - "apihelp-query+babel-param-user": "Ti agar-aramat a pagalaan iti pakaammo", - "apihelp-query+babel-example-1": "Alaen ti pakaammo ti Babel para kenni agar-aramat Pagarigan" + "babel-footer": "Dagiti agar-aramat babaen ti pagsasao" } diff --git a/MLEB/Babel/i18n/inh.json b/MLEB/Babel/i18n/inh.json index d877b166..a030a5a3 100644 --- a/MLEB/Babel/i18n/inh.json +++ b/MLEB/Babel/i18n/inh.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ - "Sapral Mikail", "Adam-Yourist", - "ElizaMag" + "ElizaMag", + "Sapral Mikail" ] }, "babel": "Доакъашхочун метташ", diff --git a/MLEB/Babel/i18n/io.json b/MLEB/Babel/i18n/io.json index e7e2efa6..07c1abb5 100644 --- a/MLEB/Babel/i18n/io.json +++ b/MLEB/Babel/i18n/io.json @@ -1,13 +1,15 @@ { "@metadata": { "authors": [ + "Joao Xavier", "Malafaya", - "Robin van der Vliet", - "Joao Xavier" + "Robin van der Vliet" ] }, "babel-url": "Project:Babel", "babel-footer-url": "Kategorio:Babel - Uzeri segun linguo", + "babel-autocreate-text-levels": "Uzeri en ca kategorio informas konoco-nivelo $1 pri la linguo $2.", + "babel-autocreate-text-main": "Uzeri en ca kategorio informas lia konoco pri la linguo $1.", "babel-0": "Ca uzero havas [[$1|nula]] savo pri [[$2|$3]] (o komprenas olu kun kelka desfacileso).", "babel-1": "Ca uzero havas [[$1|bazala]] savo pri [[$2|$3]].", "babel-2": "Ca uzero havas [[$1|meza]] savo pri [[$2|$3]].", diff --git a/MLEB/Babel/i18n/it.json b/MLEB/Babel/i18n/it.json index c5d05e2b..3e6c5adc 100644 --- a/MLEB/Babel/i18n/it.json +++ b/MLEB/Babel/i18n/it.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Anto", "Beta16", "Cruccone", "Darth Kule", @@ -8,8 +9,7 @@ "McDutchie", "Melos", "Morel", - "Nemo bis", - "Anto" + "Nemo bis" ] }, "babel": "Babel utente", @@ -34,8 +34,5 @@ "babel-5-n": "Questo utente può contribuire con un livello [[$1|professionale]] in [[$2|italiano]].", "babel-N-n": "Questo utente può contribuire con un livello [[$1|madrelingua]] in [[$2|italiano]].", "babel-template": "Template:Utente $1", - "babel-footer": "Utenti per lingua", - "apihelp-query+babel-description": "Ottenere informazioni su quali lingue l'utente conosce", - "apihelp-query+babel-param-user": "Utente sul quale ottenere informazioni", - "apihelp-query+babel-example-1": "Ottieni informazioni Babel per l'utente Example" + "babel-footer": "Utenti per lingua" } diff --git a/MLEB/Babel/i18n/ja.json b/MLEB/Babel/i18n/ja.json index 286c8987..829b921c 100644 --- a/MLEB/Babel/i18n/ja.json +++ b/MLEB/Babel/i18n/ja.json @@ -7,11 +7,11 @@ "Marine-Blue", "Ohgi", "Shirayuki", - "Vigorous action", - "青子守歌", "Sujiniku", + "Vigorous action", + "Yusuke1109", "ネイ", - "Yusuke1109" + "青子守歌" ] }, "babel": "バベル利用者情報", @@ -37,8 +37,5 @@ "babel-5-n": "この利用者は[[$1|専門的な]][[$2|日本語]]の知識を有しています。", "babel-N-n": "この利用者は[[$2|日本語]]を[[$1|母語]]としています。", "babel-template": "Template:利用者 $1", - "babel-footer": "言語別の利用者", - "apihelp-query+babel-description": "利用者が知識を有する言語の情報を取得", - "apihelp-query+babel-summary": "ユーザーが知っている言語に関する情報を取得する", - "apihelp-query+babel-example-1": "利用者Exampleのバベル情報を取得" + "babel-footer": "言語別の利用者" } diff --git a/MLEB/Babel/i18n/jam.json b/MLEB/Babel/i18n/jam.json index 061db6cf..a45021d3 100644 --- a/MLEB/Babel/i18n/jam.json +++ b/MLEB/Babel/i18n/jam.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Yocahuna", - "StevenJ81" + "StevenJ81", + "Yocahuna" ] }, "babel": "Biebl yuuza infamieshan", diff --git a/MLEB/Babel/i18n/jv.json b/MLEB/Babel/i18n/jv.json index 072ccb43..0fb971af 100644 --- a/MLEB/Babel/i18n/jv.json +++ b/MLEB/Babel/i18n/jv.json @@ -1,38 +1,36 @@ { "@metadata": { "authors": [ + "Diki Ananta", "Iwan Novirion", "Malafaya", "Meursault2004", - "NoiX180" + "NoiX180", + "Sumbukompor" ] }, - "babel": "Katerangan panganggo Babel", + "babel": "Katerangan naraguna Babel", "babel-desc": "Nambah fungsi parser #babel supaya bisa ngasilaké kolem userbox kanthi otomatis uga bisa ngatutaké cithakan-cithakan kustomisasi", "babel-url": "Project:Babel", - "babel-footer-url": ":Kategori:Babèl - Panganggo miturut basané", + "babel-footer-url": ":Kategori:Babèl - Naraguna miturut basané", "babel-autocreate-reason": "Otomatis nggawé kaca kategori [[$1|Babèl]].", - "babel-autocreate-text-levels": "Panganggo saka katégori iki dianggep nduwèni kawruh basa $2 undhak $1.", - "babel-autocreate-text-main": "Panganggo ing kategori iki tegesé wong-wong kang padha bisa basa $1", + "babel-autocreate-text-levels": "Naraguna saka katégori iki dianggep nduwèni kawruh basa $2 undhak $1.", + "babel-autocreate-text-main": "Naraguna ing kategori iki tegesé wong-wong kang padha bisa basa $1", "babel-autocreate-user": "Babel AutoCreate", - "babel-0": "Panganggo iki [[$1|ora]] duwé kawruh bab [[$2|$3]] (utawa angèl banget mangertèni basa iku).", - "babel-1": "Panganggo iki duwé kawruh [[$1|dhasar]] bab [[$2|$3]].", - "babel-2": "Panganggo iki duwé kawruh [[$1|sedhengan]] bab [[$2|$3]].", - "babel-3": "Panganggo iki duwé kawruh [[$1|dhuwur]] bab [[$2|$3]].", - "babel-4": "Panganggo iki duwé kawruh [[$1|sing nyedhaki panutur ibu]] [[$2|$3]].", - "babel-5": "Panganggo iki duwé kawruh [[$1|profésional]] bab [[$2|$3]].", - "babel-N": "Panganggo iki [[$1|panutur ibu]] [[$2|$3]].", - "babel-0-n": "Panganggo iki [[$1|ora]] bisa [[$2|basa Jawa]] (utawa angèl banget mangertèni basa iku).", - "babel-1-n": "Panganggo iki duwé kawruh [[$1|dhasar]] bab [[$2|basa Jawa]].", - "babel-2-n": "Panganggo iki duwé kawruh [[$1|sedhengan]] bab [[$2|basa Jawa]].", - "babel-3-n": "Panganggo iki duwé kawruh [[$1|dhuwur]] bab [[$2|basa Jawa]].", - "babel-4-n": "Panganggo iki duwé kawruh [[$1|sing nyedhaki panutur ibu]] saka [[$2|basa Jawa]].", - "babel-5-n": "Panganggo iki duwé kawruh [[$1|profésional]] [[$2|basa Jawa]].", - "babel-N-n": "Panganggo iki [[$1|panutur ibu]] [[$2|basa Jawa]].", + "babel-0": "Naraguna iki [[$1|ora]] duwé kawruh bab [[$2|$3]] (utawa angèl banget mangertèni basa iku).", + "babel-1": "Naraguna iki duwé kawruh [[$1|dhasar]] bab [[$2|$3]].", + "babel-2": "Naraguna iki duwé kawruh [[$1|sedhengan]] bab [[$2|$3]].", + "babel-3": "Naraguna iki duwé kawruh [[$1|dhuwur]] bab [[$2|$3]].", + "babel-4": "Naraguna iki duwé kawruh [[$1|sing nyedhaki panutur ibu]] [[$2|$3]].", + "babel-5": "Naraguna iki duwé kawruh [[$1|profésional]] bab [[$2|$3]].", + "babel-N": "Naraguna iki [[$1|panutur ibu]] [[$2|$3]].", + "babel-0-n": "Naraguna iki [[$1|ora]] bisa [[$2|basa Jawa]] (utawa angèl banget mangertèni basa iku).", + "babel-1-n": "Naraguna iki duwé kawruh [[$1|dhasar]] bab [[$2|basa Jawa]].", + "babel-2-n": "Naraguna iki duwé kawruh [[$1|sedhengan]] bab [[$2|basa Jawa]].", + "babel-3-n": "Naraguna iki duwé kawruh [[$1|dhuwur]] bab [[$2|basa Jawa]].", + "babel-4-n": "Naraguna iki duwé kawruh [[$1|sing nyedhaki panutur ibu]] saka [[$2|basa Jawa]].", + "babel-5-n": "Naraguna iki duwé kawruh [[$1|profésional]] [[$2|basa Jawa]].", + "babel-N-n": "Naraguna iki [[$1|panutur ibu]] [[$2|basa Jawa]].", "babel-template": "Template:User $1", - "babel-footer": "Panganggo miturut basané", - "apihelp-query+babel-description": "Golèk katerangan bab basa sing dingertèni panganggo", - "apihelp-query+babel-summary": "Golèk katerangan bab basa sing dingertèni panganggo", - "apihelp-query+babel-param-user": "Panganggo sing arep digolèki katerangané", - "apihelp-query+babel-example-1": "Golèk katerangan Babel tumrap panganggo Conto" + "babel-footer": "Naraguna miturut basané" } diff --git a/MLEB/Babel/i18n/ka.json b/MLEB/Babel/i18n/ka.json index 4f56bde6..80c6f958 100644 --- a/MLEB/Babel/i18n/ka.json +++ b/MLEB/Babel/i18n/ka.json @@ -32,6 +32,5 @@ "babel-5-n": "ამ მომხმარებელს შეუძლია წვლილი შეიტანოს [[$2|ქართული ენის]] ცოდნის [[$1|პროფესიონალურ]] დონეზე.", "babel-N-n": "ამ მომხმარებლის [[$1|მშობლიური ენა]] არის [[$2|ქართული]].", "babel-template": "თარგი:მომხმარებელი $1", - "babel-footer": "მომხმარებლები ენის მიხედვით", - "apihelp-query+babel-param-user": "მომხმარებელი, რომელზეც გვინდა ვნახოთ ინფორმაცია" + "babel-footer": "მომხმარებლები ენის მიხედვით" } diff --git a/MLEB/Babel/i18n/kab.json b/MLEB/Babel/i18n/kab.json index 658f41cc..2949ba03 100644 --- a/MLEB/Babel/i18n/kab.json +++ b/MLEB/Babel/i18n/kab.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Purodha", - "Belkacem77" + "Belkacem77", + "Purodha" ] }, "babel": "Talɣut n useqdac Babel", diff --git a/MLEB/Babel/i18n/kea.json b/MLEB/Babel/i18n/kea.json index 7cde1814..837cfd31 100644 --- a/MLEB/Babel/i18n/kea.json +++ b/MLEB/Babel/i18n/kea.json @@ -1,8 +1,9 @@ { "@metadata": { "authors": [ + "Quintino Lopes Castro Tavares", "Waldir", - "Quintino Lopes Castro Tavares" + "Waldyrious" ] }, "babel": "Informason di línguas di utilizador", diff --git a/MLEB/Babel/i18n/kiu.json b/MLEB/Babel/i18n/kiu.json index b2b23d1a..bd169cd1 100644 --- a/MLEB/Babel/i18n/kiu.json +++ b/MLEB/Babel/i18n/kiu.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Erdemaslancan", - "Mirzali", - "Gırd" + "Gırd", + "Mirzali" ] }, "babel": "Melumatê karberê Babili", diff --git a/MLEB/Babel/i18n/kjp.json b/MLEB/Babel/i18n/kjp.json index 180c1617..4ed063ec 100644 --- a/MLEB/Babel/i18n/kjp.json +++ b/MLEB/Babel/i18n/kjp.json @@ -25,9 +25,5 @@ "babel-4-n": "ဆ်ုသုံႋဏင့်ဆာႋယိုဝ် ဏးသှ်ေဝေ့[[$2|ဖၠုံလိက်]] ၜေ့လိက်ဏင့်ဆာႋ[[$1|လ်ုအှ်ၜး]]သိုဝ်။", "babel-5-n": "ဆ်ုသုံႋဏင့်ဆာႋယိုဝ် ဏးသှ်ေဝေ့[[$2|ဖၠုံလိက်]] ၜေ့[[$1|လိက်ဏင့်ဆာႋမ်ုအှ်လ်ုအှ်]]သိုဝ်။", "babel-N-n": "ဆ်ုသုံႋဏင့်ဆာႋယိုဝ် ဏးသှ်ေဝေ့[[$2|ဖၠုံလိက်]] ၜေ့[[$1|လိက်ဏင့်ဆာႋ]]သိုဝ်။", - "babel-footer": "ဆ်ုခၠါင်ဘာႋသာ့အ်ုမိင်မိင် ဆ်ုသုံႋဏင့်ဆာႋလ်ုဖး", - "apihelp-query+babel-description": "မ်ုယောဝ်ႋဆ်ုသုံ့ဆာသှ်ေယာ့ ဆ်ုခၠါင်ဘာႋသာ့အ်ုၯာင်ႋအ်ုကျံင် အ်ုကျံင်ႋ", - "apihelp-query+babel-summary": "မ်ုယောဝ်ႋဆ်ုသုံ့ဆာသှ်ေယာ့ ဆ်ုခၠါင်ဘာႋသာ့အ်ုၯာင်ႋအ်ုကျံင် အ်ုကျံင်ႋ", - "apihelp-query+babel-param-user": "ဆ်ုသုံ့ဆာ မ်ုမာၮေဝ်ႋအ်ုၯာင်ႋအ်ုကျံင်", - "apihelp-query+babel-example-1": "မ်ုမာ ဆ်ုသုံ့ဆာၯင်း ၜေပ်ုအ်ုၯာင်ႋအ်ုကျံင် အ်ုဍံင်" + "babel-footer": "ဆ်ုခၠါင်ဘာႋသာ့အ်ုမိင်မိင် ဆ်ုသုံႋဏင့်ဆာႋလ်ုဖး" } diff --git a/MLEB/Babel/i18n/kk-cyrl.json b/MLEB/Babel/i18n/kk-cyrl.json index e2cb372b..2d9df4dd 100644 --- a/MLEB/Babel/i18n/kk-cyrl.json +++ b/MLEB/Babel/i18n/kk-cyrl.json @@ -2,10 +2,10 @@ "@metadata": { "authors": [ "AlefZet", - "GaiJin", "Arystanbek", - "Нұрлан Рахымжанов", - "Mirgulkali" + "GaiJin", + "Mirgulkali", + "Нұрлан Рахымжанов" ] }, "babel": "Бабыл қатысушы ақпараты", @@ -29,7 +29,5 @@ "babel-4-n": "Бұл қатысушы [[$2|қазақ тілін]] [[$1|ана тіліне жақын деңгейде]] меңгереді.", "babel-5-n": "Бұл қатысушы [[$2|қазақ тілін]] [[$1|кәсіби деңгейде]] меңгереді.", "babel-N-n": "[[$2|Қазақ тілі]] бұл қатысушының [[$1|ана тілі]] боп саналады.", - "babel-footer": "Тілдері бойынша қатысушылар", - "apihelp-query+babel-description": "Пайдаланушы білетін тілдер туралы мәлімет тауып алу", - "apihelp-query+babel-example-1": "Пайдаланушы Example үшін Бабыл мәліметтерін тауып алу" + "babel-footer": "Тілдері бойынша қатысушылар" } diff --git a/MLEB/Babel/i18n/ko.json b/MLEB/Babel/i18n/ko.json index 78d7f85b..838337fd 100644 --- a/MLEB/Babel/i18n/ko.json +++ b/MLEB/Babel/i18n/ko.json @@ -1,14 +1,14 @@ { "@metadata": { "authors": [ + "Delim", "Gapo", - "Kwj2772", - "아라", "IRTC1015", + "Kwj2772", + "Nuevo Paso", "Revi", "Ykhwong", - "Delim", - "Nuevo Paso" + "아라" ] }, "babel": "사용자 언어 정보", @@ -33,9 +33,5 @@ "babel-4-n": "이 사용자는 [[$2|한국어]]를 [[$1|모어에 준하는 수준]]으로 할 수 있습니다.", "babel-5-n": "이 사용자는 [[$2|한국어]]를 [[$1|전문가 수준]]으로 할 수 있습니다.", "babel-N-n": "이 사용자는 [[$2|한국어]]가 [[$1|모어]]입니다.", - "babel-footer": "언어별 사용자", - "apihelp-query+babel-description": "사용자가 알고 있는 언어에 관한 정보를 가져옵니다", - "apihelp-query+babel-summary": "사용자가 알고 있는 언어에 관한 정보를 가져옵니다", - "apihelp-query+babel-param-user": "정보를 받아올 대상 사용자", - "apihelp-query+babel-example-1": "사용자 Example의 바벨 정보를 불러오기" + "babel-footer": "언어별 사용자" } diff --git a/MLEB/Babel/i18n/krc.json b/MLEB/Babel/i18n/krc.json index 6cceaa94..bbec2efb 100644 --- a/MLEB/Babel/i18n/krc.json +++ b/MLEB/Babel/i18n/krc.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Iltever", - "Ernác" + "Ernác", + "Iltever" ] }, "babel": "Къошулуучуну тиллерини юсюнден информация (Вавилон)", diff --git a/MLEB/Babel/i18n/ksw.json b/MLEB/Babel/i18n/ksw.json new file mode 100644 index 00000000..b0b7e566 --- /dev/null +++ b/MLEB/Babel/i18n/ksw.json @@ -0,0 +1,26 @@ +{ + "@metadata": { + "authors": [ + "SawJaemin" + ] + }, + "babel": "ဘ့ဘဲလ် ပှၤသူတၢ်ဖိ အဂ့ၢ်အကျိး", + "babel-url": "Project:ဘ့ဘဲလ်", + "babel-footer-url": ":တၢ်ကရူၢ်:ဘ့ဘဲလ် - ကျိာ်သ့ၣ်တဖၣ် အပှၤသူတၢ်ဖိ", + "babel-autocreate-text-main": "ပှၤသူတၢ်ဖိလၢ တၢ်ကရူၢ် တခါအံၤ ဒုးနဲဝဲဒၣ် အတၢ်သ့ၣ်ညါနၢ်ပၢၢ်လၢ $1 တကျိာ်အံၤ.", + "babel-0": "ပှၤသူတၢ်ဖိတဂၤအံၤ [[$1|တအိၣ်]] လၢအတၢ်သ့ၣ်ညါနၢ်ပၢၢ်ဘၣ်ဃးဒီး [[$2|$3]] (မ့ၢ်တမ့ၢ် အနၢ်ပၢၢ်တစဲးဘၣ်ဆၣ်အအိၣ်လၢတၢ်ကီတခဲလၢကျိာ်တကျိာ်အံၤ).", + "babel-1": "ပှၤသူတၢ်ဖိတဃၤအံၤအိၣ်ဒီး တၢ်သံၣ်ညါနၢ်ပၢၢ်ဘၣ်ဃး [[$2|$3]] [[$1|တစဲးတစဲး]].", + "babel-2": "ပှၤသူတၢ်ဖိတဂၤအံၤ အအိၣ်လၢၤ တၢ်သ့ၣ်ညါနၢ်ပၢၢ် [[$1|အါအါ\n]] ဘၣ်ဃးဒီး [[$2|$3]] န့ၢ်လီၤ.", + "babel-3": "ပှၤသူတၢ်ဖိတဂၤအံၤ အအိၣ်လၢၤ တၢ်သံၣ်ညါနၢ်ပၢၢ် [[$1|အါမး]] ဘၣ်ဃးဒီး\n[[$2|$3]] န့ၢ်လီၤ.", + "babel-4": "ပှၤသူတၢ်ဖိတဂၤအံၤ အကတိၤ [[$2|$3]] ဒ်သိး [[$1|အကဆၢ်ကျိာ်န့ၢ်လီၤ]].", + "babel-5": "ပှၤသူတၢ်ဖိတဂၤအံၤအမ့ၢ် [[$1|ဖြိဖဲၡ့နိ]] လၢ [[$2|$3]]. လီၤ", + "babel-N": "ပှၤသူတၢ်ဖိတဂၤအံၤအမ့ၢ် [[$1|ပှၤကညီစံးနီၢ်]] လၢအသံၣ်ညါနၢ်ပၢၢ်ဘၣ်ဃး [[$2|$3]] ကျိာ်.", + "babel-0-n": "ပှၤသူတၢ်ဖိတဂၤအံၤ [[$1|တအိၣ်]] လၢၤအတၢ်သ့ၣ်ညါနၢ်ပၢၢ်ဘၣ်ဃးဒီး [[$2|အဲကလံးကျိာ်]] (မ့ၢ်တမ့ၢ် အနၢ်ပၢၢ်တစဲးဘၣ်ဆၣ်အအိၣ်လၢၤတၢ်ကီတခဲလၢကျိာ်တကျိာ်အံၤ).", + "babel-1-n": "ပှၤသူတၢ်ဖိတဃၤအံၤအိၣ်ဒီး တၢ်သံၣ်ညါနၢ်ပၢၢ်ဘၣ်ဃး [[$2|အဲကလံးကျိာ်]] [[$1|တစဲးတစဲး]] န့ၢ်လီၤ.", + "babel-2-n": "ပှၤသူတၢ်ဖိတဂၤအံၤ အအိၣ်လၢၤ တၢ်သ့ၣ်ညါနၢ်ပၢၢ် [[$1|အါအါ\n]] ဘၣ်ဃးဒီး [[$2|အဲကလံးကျိာ်]] န့ၢ်လီၤ.", + "babel-3-n": "ပှၤသူတၢ်ဖိတဂၤအံၤ အအိၣ်လၢၤ တၢ်သံၣ်ညါနၢ်ပၢၢ် [[$1|အါမး]] ဘၣ်ဃးဒီး\n[[$2|အဲကလံးကျိာ်]] န့ၢ်လီၤ.", + "babel-4-n": "ပှၤသူတၢ်ဖိတဂၤအံၤ အကတိၤ [[$2|အဲကလံးကျိာ်]] ဒ်သိး [[$1|အကဆၢ်ကျိာ်န့ၢ်လီၤ]].", + "babel-5-n": "ပှၤသူတၢ်ဖိတဂၤအံၤအမ့ၢ် [[$1|ဖြိဖဲၡ့နိ]] လၢ [[$2|အဲကလံးကျိာ်]].", + "babel-N-n": "ပှၤသူတၢ်ဖိတဂၤအံၤအမ့ၢ် [[$1|ပှၤကညီစံးနီၢ်]] လၢအသံၣ်ညါနၢ်ပၢၢ်ဘၣ်ဃး [[$2|အဲကလံးကျိာ်]].", + "babel-footer": "ကျိာ်သ့ၣ်တဖၣ် အပှၤသူတၢ်ဖိ" +} diff --git a/MLEB/Babel/i18n/ku-latn.json b/MLEB/Babel/i18n/ku-latn.json index 419c0afd..ac7d9524 100644 --- a/MLEB/Babel/i18n/ku-latn.json +++ b/MLEB/Babel/i18n/ku-latn.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "George Animal", "Bikarhêner", + "George Animal", "Ghybu" ] }, diff --git a/MLEB/Babel/i18n/la.json b/MLEB/Babel/i18n/la.json index fbd2704c..c02ce051 100644 --- a/MLEB/Babel/i18n/la.json +++ b/MLEB/Babel/i18n/la.json @@ -7,7 +7,8 @@ "Purodha", "SPQRobin", "Tpt", - "UV" + "UV", + "Unbrutal" ] }, "babel": "res usoribus sciendae de Babel", @@ -25,12 +26,12 @@ "babel-4": "Hic usor [[$1|tamquam nativus loquens]] [[$2|$3]] contribuere potest", "babel-5": "Hic usor [[$1|magistrali]] [[$2|$3]] contribuere potest.", "babel-N": "Hic usor [[$1|native]] [[$2|$3]] loquitur.", - "babel-0-n": "Hic usor [[$1|nullo pacto]] aut aegre [[$2|Latinitate]] contribuere potest.", - "babel-1-n": "Hic usor [[$1|simplici]] [[$2|latinitate]] contribuere potest.", - "babel-2-n": "Hic usor [[$1|media]] [[$2|Latinitate]] contribuere potest.", - "babel-3-n": "Hic usor [[$1|callidissima]] [[$2|Latinitate]] contribuere potest.", - "babel-4-n": "Hic usor regulas grammaticas observans [[$1|optima]] [[$2|Latinitate]] scribere (et interdum loqui) scit.", - "babel-5-n": "Hic usor [[$1|magistrali]] [[$2|Latinitate]] contribuere potest", - "babel-N-n": "Hic usor aut [[$1|vere incredibili]] [[$2|Latinitate]] contribuere potest... aut fortasse mentitur.", + "babel-0-n": "Hic usor [[$1|aut parum aut nihil]] [[$2|Latine]] scit.", + "babel-1-n": "Hic usor [[$1|simplici]] [[$2|lingua Latina]] conferre potest.", + "babel-2-n": "Hic usor [[$2|lingua Latina]] [[$1|mediae difficultatis]] conferre potest.", + "babel-3-n": "Hic usor [[$1|probe]] ac [[$2|Latine]] conferre potest.", + "babel-4-n": "Hic usor [[$2|Latine]] similiter ac sermone patrio scit et [[$1|Latinisissme]] conferre potest.", + "babel-5-n": "Hic usor [[$1|artifex]] est [[$2|Latine scribendi]].", + "babel-N-n": "Hic usor [[$1|vere singularis]] est [[$2|orator Latinus]] … siquidem ei credimus.", "babel-footer": "Usores lingua digesti" } diff --git a/MLEB/Babel/i18n/lad.json b/MLEB/Babel/i18n/lad.json index 56ca3c2f..5ec56563 100644 --- a/MLEB/Babel/i18n/lad.json +++ b/MLEB/Babel/i18n/lad.json @@ -4,8 +4,8 @@ "Jewbask", "Maor X", "Purodha", - "Universal Life", - "StevenJ81" + "StevenJ81", + "Universal Life" ] }, "babel": "Enformasyón de usador de Babel", diff --git a/MLEB/Babel/i18n/lb.json b/MLEB/Babel/i18n/lb.json index c3e77c2d..0d67348b 100644 --- a/MLEB/Babel/i18n/lb.json +++ b/MLEB/Babel/i18n/lb.json @@ -27,8 +27,5 @@ "babel-4-n": "Dëse Benotzer beherrscht [[$2|Lëtzebuergesch]] [[$1|bal wéi seng Mammesprooch]].", "babel-5-n": "Dëse Benotzer huet [[$1|professionnell]] Kenntnesser vum [[$2|Lëtzebuergeschen]].", "babel-N-n": "Dësem Benotzer seng [[$1|Mammesprooch]] ass [[$2|Lëtzebuergesch]].", - "babel-footer": "Benotzer pro Sprooch", - "apihelp-query+babel-description": "Informatioune kréien iwwer déi Sproochen déi de Benotzer kann", - "apihelp-query+babel-param-user": "Benotzer fir den d'Informatiounen ugefrot ginn", - "apihelp-query+babel-example-1": "Babel-Informatioun fir de Benotzer Beispill kréien" + "babel-footer": "Benotzer pro Sprooch" } diff --git a/MLEB/Babel/i18n/lfn.json b/MLEB/Babel/i18n/lfn.json index 069c6d3e..01edf3d4 100644 --- a/MLEB/Babel/i18n/lfn.json +++ b/MLEB/Babel/i18n/lfn.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Purodha", + "Robin van der Vliet", "StevenJ81" ] }, @@ -11,6 +12,7 @@ "babel-2": "Esta usor es [[$1|medial capas]] de [[$2|$3]].", "babel-3": "Esta usor es [[$1|bon capas]] de [[$2|$3]].", "babel-4": "Esta usor es [[$1|la plu perfeta capas]] de [[$2|$3]].", + "babel-5": "Esta usor es [[$1|profesal capas]] de [[$2|$3]].", "babel-N": "Esta usor ave [[$2|$3]] se [[$1|lingua propre]].", "babel-0-n": "This user has [[$1|no]] knowledge of [[$2|Elefen (Lingua Franca Nova)]] (or understands it with considerable difficulty).", "babel-1-n": "Esta usor es [[$1|poca capas]] de [[$2|Lingua Franca Nova]].", @@ -18,5 +20,6 @@ "babel-3-n": "Esta usor es [[$1|bon capas]] de [[$2|Lingua Franca Nova]].", "babel-4-n": "Esta usor es [[$1|la plu perfeta capas]] de [[$2|Lingua Franca Nova]].", "babel-5-n": "This user has [[$1|professional]] knowledge of [[$2|Elefen (Lingua Franca Nova)]].", - "babel-N-n": "Esta usor ave [[$2|Lingua Franca Nova]] se [[$1|lingua propre]]." + "babel-N-n": "Esta usor ave [[$2|Lingua Franca Nova]] se [[$1|lingua propre]].", + "babel-template": "Template:Usor $1" } diff --git a/MLEB/Babel/i18n/li.json b/MLEB/Babel/i18n/li.json index f3ee8cf2..361f8816 100644 --- a/MLEB/Babel/i18n/li.json +++ b/MLEB/Babel/i18n/li.json @@ -26,9 +26,5 @@ "babel-4-n": "Deze gebroeker behiersj 't [[$2|Limburgs]] ofwen 't zien [[$1|moderspraok]] woor.", "babel-5-n": "Deze gebroeker haet 'n [[$1|perfesjeneel]] kènnis van 't [[$2|Limburgs]].", "babel-N-n": "Deze gebroeker haet 't [[$2|Limburgs]] es zien [[$1|moderspraok]].", - "babel-footer": "Gebroekers per sjpraok", - "apihelp-query+babel-description": "Krieg infermasie euver welche spraoke de gebroeker kèntj", - "apihelp-query+babel-summary": "Krieg infermasie euver welche spraoke de gebroeker kèntj", - "apihelp-query+babel-param-user": "Gebroeker wo me infermasie euver krieg", - "apihelp-query+babel-example-1": "Veure Babel-infermasie veure gebroeker Veurbild" + "babel-footer": "Gebroekers per sjpraok" } diff --git a/MLEB/Babel/i18n/lij.json b/MLEB/Babel/i18n/lij.json index f3828ecd..4c390ecc 100644 --- a/MLEB/Babel/i18n/lij.json +++ b/MLEB/Babel/i18n/lij.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Giromin Cangiaxo", - "S4b1nuz E.656", - "Luensu1959" + "Luensu1959", + "S4b1nuz E.656" ] }, "babel": "Babel uténte", @@ -27,8 +27,5 @@ "babel-4-n": "St'uténte chi o peu contriboî co-in livéllo [[$1|squæxi madreléngoa]] in [[$2|lìgure]].", "babel-5-n": "St'uténte chi o peu contriboî co-in livéllo [[$1|profescionâle]] in [[$2|lìgure]].", "babel-N-n": "St'uténte chi o peu contriboî co-in livéllo de [[$1|madreléngoa]] in [[$2|lìgure]].", - "babel-footer": "Uténti pe léngoa", - "apihelp-query+babel-description": "Otegni informaçioin insce quæ lengue l'utente o conosce", - "apihelp-query+babel-param-user": "Utente in sciô quæ otegnî informaçioin", - "apihelp-query+babel-example-1": "Otegni informaçioin Babel pe l'utente Example" + "babel-footer": "Uténti pe léngoa" } diff --git a/MLEB/Babel/i18n/lki.json b/MLEB/Babel/i18n/lki.json index a11e9f3b..e7755656 100644 --- a/MLEB/Babel/i18n/lki.json +++ b/MLEB/Babel/i18n/lki.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Hosseinblue", "Arash71", + "Hosseinblue", "Lakzon" ] }, diff --git a/MLEB/Babel/i18n/lld.json b/MLEB/Babel/i18n/lld.json index acb3de29..b0d90d67 100644 --- a/MLEB/Babel/i18n/lld.json +++ b/MLEB/Babel/i18n/lld.json @@ -1,5 +1,7 @@ { - "@metadata": [], + "@metadata": { + "authors": [] + }, "babel-1": "Chësc utënt possa contribuì cun n livel [[$1|bas]] de [[$2|$3]].", "babel-2": "Chësc utënt possa contribuì cun n livel [[$1|mesan]] de [[$2|$3]].", "babel-3": "Chësc utënt possa contribuì cun n livel [[$1|aut]] de [[$2|$3]].", diff --git a/MLEB/Babel/i18n/lrc.json b/MLEB/Babel/i18n/lrc.json index fc0a9b89..91813212 100644 --- a/MLEB/Babel/i18n/lrc.json +++ b/MLEB/Babel/i18n/lrc.json @@ -2,30 +2,31 @@ "@metadata": { "authors": [ "Bonevarluri", - "Mogoeilor", - "Hosseinblue" + "Hosseinblue", + "Lorestani", + "Mogoeilor" ] }, - "babel": "دۊنسمٱنیا کاریار بابل", - "babel-desc": "<رازینٱ>#بابل<رازینٱ/> ناٛ ڤا آلشتیار هیردکار سی سئلا دٱئن سی خودکار راس کردن ستین جٱڤٱ کاریاری ڤا کونشتکار کردن چۊٱیا پایدار اٛزاف بٱکیت.", + "babel": "دونسمنیا کاریار بابل", + "babel-desc": "<رازینٱ>#بابل<رازینٱ/> ناٛ ڤا آلشتیار هیردکار سی ساْلا دٱئن سی خودکار راس کردن ستین جٱڤٱ کاریاری ڤا کنشتکار کردن چۊٱیا پایدار اٛزاف بٱکیت.", "babel-url": "Project:بابل", - "babel-footer-url": ":Category:بابل-کاریاریا ڤا زۊن", + "babel-footer-url": ":Category:بابل-کاریاریٛا ڤا زڤون", "babel-autocreate-reason": "دٱسٱ بٱلگٱ [[$1|Babel]]راس کردن د هال و بال خودٱنجوم", - "babel-autocreate-text-levels": "کاریاریا ای دٱسٱ دیاری میکٱن کاٛ کاردۊنی د ریتراز $1 سی زۊن $2 دارن", - "babel-autocreate-text-main": "کاریاریاای دٱسٱ دیار میکٱن کاٛ زۊن $1 بٱلٱلن", - "babel-0": "ای کاریار فٱمئسنی د ٱنازٱ [[$1|no]] سی [[$2|$3]] دارٱ (یا فئرٱ کم هالینش بۊٱ)", - "babel-1": "ای کاریار دۊنسمٱنی د [[$1|basic]]تا [[$2|$3]]دارٱ.", - "babel-2": "ای کاریار دۊنسمٱنی د [[$1|intermediate]] تا [[$2|$3]] دارٱ.", - "babel-3": "ای کاریار دۊنسمٱنی د [[$1|advanced]] تا [[$2|$3]]دارٱ.", - "babel-4": "ای کاریار [[$1|نزیک ڤ زۊن دا]]،[[$2|$3]]نٱ دۊنٱ.", - "babel-5": "ای کاریار د ٱنازٱ [[$1|فئرٱ خۊ]]،[[$2|$3]] نٱ دۊنٱ.", - "babel-N": "ای کاریار [[$1|native]] چی زۊن دا می تۊنٱ [[$2|$3]] بٱفٱمٱ.", - "babel-0-n": "ای کاریار [[$1|هیچ]] دۊنسمٱنی د [[$2|لۏری مینجایی]] نارٱ (یا فئره کم لۏری مینجایی می فٱمٱ)", - "babel-1-n": "ای کاریار [[$1|کم و کوتی]] دۊنسمٱنی د [[$2|لۏری مینجایی]] دارٱ.", - "babel-2-n": "ای کاریار [[$1|چی ریتراز میۊنٱ]] دۊنسمٱنی د [[$2|لۏری مینجایی]]دارٱ.", - "babel-3-n": "ای کاریار [[$1|فئرٱ]] [[$2|لۏری مینجایی]] دۊنٱ.", - "babel-4-n": "ای کاریار [[$1|چی یاٛ زۊن بٱلٱل]][[$2|لۏری مینجایی]] دۊنٱ.", - "babel-5-n": "ای کاریار [[$1|فئرٱ خۊ]] [[$2|لۏری مینجایی]] هالیش مۊٱ.", - "babel-N-n": "ای کاریار [[$1|زۊن داش]] [[$2|لۏری مینجایی]] ٱ.", - "babel-footer": "کاریار ڤا زۊن" + "babel-autocreate-text-levels": "کاریاریٛا اؽ دٱسٱ دیٛاری میکٱن کاْ کاردونی د ریتراز $1 سی زڤون $2 دارٱن", + "babel-autocreate-text-main": "کاریاریٛا اؽ دٱسٱ دؽار میکٱن کاْ زڤون $1 بلٱلٱن", + "babel-0": "اؽ کاریار فٱمسنی د ٱنازٱ [[$1|no]] سی [[$2|$3]] دارٱ (یا فرٱ کٱم هالٛیش مۊئٱ)", + "babel-1": "اؽ کاریار دونسمنی ڤ [[$1|basic]]تا [[$2|$3]]دارٱ.", + "babel-2": "اؽ کاریار دونسمنی ڤ [[$1|intermediate]] تا [[$2|$3]] دارٱ.", + "babel-3": "اؽ کاریار دونسمنی ڤ [[$1|advanced]] تا [[$2|$3]]دارٱ.", + "babel-4": "اؽ کاریار [[$1|نزیک ڤ زڤون دا]]،[[$2|$3]]ناْ دونٱ.", + "babel-5": "اؽ کاریار د ٱنازٱ [[$1|فرٱ خۊ]]،[[$2|$3]] ناْ دونٱ.", + "babel-N": "اؽ کاریار [[$1|native]] چی زڤون دا مؽ تونٱ [[$2|$3]] بٱفٱمٱ.", + "babel-0-n": "اؽ کاریار [[$1|هیچ]] دونسمنی د [[$2|لٛۏری مؽنجایی]] نارٱ (یا فٱرٱ کٱم لٛۏری ؽنجایی میٛ فٱمٱ)", + "babel-1-n": "اؽ کاریار [[$1|کٱم ۉ کوتؽ]] دونسمنی د [[$2|لٛۏری مؽنجایی]] دارٱ.", + "babel-2-n": "اؽ کاریار [[$1|چی ریتراز مؽونٱ]] دونسمنی د [[$2|لٛۏری مؽنجایی]]دارٱ.", + "babel-3-n": "اؽ کاریار [[$1|فرٱ]] [[$2|لٛۏری مؽنجایی]] دونٱ.", + "babel-4-n": "اؽ کاریار [[$1|چی یاٛ زڤون بلٱل]][[$2|لٛۏری مؽنجایی]] دونٱ.", + "babel-5-n": "اؽ کاریار [[$1|فرٱ خۊ]] [[$2|لٛۏری مؽنجایی]] هالٛیش مۊئٱ.", + "babel-N-n": "اؽ کاریار [[$1|زڤون داش]] [[$2|لٛۏری مؽنجایی]] ٱ.", + "babel-footer": "کاریار ڤا زڤون" } diff --git a/MLEB/Babel/i18n/lt.json b/MLEB/Babel/i18n/lt.json index 7b79b4bd..fbbf5916 100644 --- a/MLEB/Babel/i18n/lt.json +++ b/MLEB/Babel/i18n/lt.json @@ -1,15 +1,15 @@ { "@metadata": { "authors": [ + "Albertas", "Eitvys200", "Garas", "Homo", "Hugo.arg", + "Manvydasz", "Matasg", "Vpovilaitis", - "Albertas", - "Zygimantus", - "Manvydasz" + "Zygimantus" ] }, "babel": "Naudotojo informacijos Babelio bokštas", @@ -33,8 +33,5 @@ "babel-4-n": "Šis naudotojas gali rašyti ir skaityti [[$2|lietuvių]] kalba [[$1|beveik kaip gimtąja]]", "babel-5-n": "Šis naudotojas gali rašyti ir skaityti [[$1|profesionalia]] [[$2|lietuvių]] kalba", "babel-N-n": "Šis naudotojas gali rašyti ir skaityti [[$1|gimtąja]] [[$2|lietuvių]] kalba.", - "babel-footer": "Naudotojai pagal kalbą", - "apihelp-query+babel-description": "Gauti informaciją, kokias kalbas naudotojas žino", - "apihelp-query+babel-param-user": "Vartotojas, apie kurį gausite informaciją", - "apihelp-query+babel-example-1": "Gauti Babelio informaciją vartotojui Example" + "babel-footer": "Naudotojai pagal kalbą" } diff --git a/MLEB/Babel/i18n/luz.json b/MLEB/Babel/i18n/luz.json index 50843c71..bae1627a 100644 --- a/MLEB/Babel/i18n/luz.json +++ b/MLEB/Babel/i18n/luz.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "علی ساکی لرستانی", - "Mogoeilor" + "Mogoeilor", + "علی ساکی لرستانی" ] }, "babel": "دوٙنیسمأنل کارڤأر بابیل", diff --git a/MLEB/Babel/i18n/lv.json b/MLEB/Babel/i18n/lv.json index 645d1b3c..2e43d810 100644 --- a/MLEB/Babel/i18n/lv.json +++ b/MLEB/Babel/i18n/lv.json @@ -28,9 +28,5 @@ "babel-4-n": "Šis lietotājs [[$2|latviešu valodu]] pārzina [[$1|gandrīz kā dzimto valodu]].", "babel-5-n": "Šis lietotājs [[$2|latviešu valodu]] pārzina [[$1|profesionālā]] līmenī.", "babel-N-n": "Šim lietotājam [[$2|latviešu valoda]] ir [[$1|dzimtā valoda]].", - "babel-footer": "Lietotāji pēc valodas", - "apihelp-query+babel-description": "Iegūsti informāciju par to, kādas valodas pārzina lietotājs", - "apihelp-query+babel-summary": "Iegūsti informāciju par to, kādas valodas pārzina lietotājs", - "apihelp-query+babel-param-user": "Lietotājs, par ko iegūt informāciju", - "apihelp-query+babel-example-1": "Iegūt Babel informāciju par lietotāju Piemērs" + "babel-footer": "Lietotāji pēc valodas" } diff --git a/MLEB/Babel/i18n/mk.json b/MLEB/Babel/i18n/mk.json index 1365b009..09f6bd00 100644 --- a/MLEB/Babel/i18n/mk.json +++ b/MLEB/Babel/i18n/mk.json @@ -7,7 +7,7 @@ ] }, "babel": "Кориснички информации за јазици", - "babel-desc": "Ја додава расчленувачка функција #babel со што се дозволува автоматизирано создавање на столбови со кориснички кутии од типот „Вавилон“, со можноста да се додаваат сопствени шаблони", + "babel-desc": "Ја додава расчленувачка функција #babel со што се дозволува автоматизирано создавање на столбови со кориснички кутии од типот „Вавилон“, со можноста да се додаваат сопствени предлошки", "babel-url": "Project:Вавилон", "babel-footer-url": ":Category:Вавилон - Корисници по јазик", "babel-autocreate-reason": "Автоматско создавање на [[$1|Вавилон]] категорија.", @@ -29,9 +29,5 @@ "babel-5-n": "Овој корисник го владее [[$2|македонскиот]] на [[$1|професионално]] ниво.", "babel-N-n": "Овој корисник зборува [[$2|македонски]] како [[$1|мајчин јазик]].", "babel-template": "Template:Корисник $1", - "babel-footer": "Корисници по јазик", - "apihelp-query+babel-description": "Дава информации за тоа кои јазици ги знае корисникот", - "apihelp-query+babel-summary": "Дава сознанија кои јазици корисникот ги познава", - "apihelp-query+babel-param-user": "За кој корисник да се дадат информациите", - "apihelp-query+babel-example-1": "Давање на информации од „Вавилон“ за корисникот Пример" + "babel-footer": "Корисници по јазик" } diff --git a/MLEB/Babel/i18n/mni.json b/MLEB/Babel/i18n/mni.json index e61395c1..f5c3b5e7 100644 --- a/MLEB/Babel/i18n/mni.json +++ b/MLEB/Babel/i18n/mni.json @@ -18,15 +18,14 @@ "babel-2": "[[$1|2]] ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|$3]] ꯁꯤ ꯑꯆꯝꯕ ꯈꯟꯅ ꯅꯩꯅꯕꯒꯤ ꯃꯇꯥꯡꯗ ꯁꯦꯝꯒꯠꯄ ꯉꯝꯃꯤ ꯫", "babel-3": "[[$1|3]] ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|$3]] ꯑꯁꯤ ꯌꯥꯝ ꯁꯣꯏꯍꯟꯗꯅ ꯏꯕꯗꯤ ꯉꯝꯃꯤ ꯫", "babel-4": "[[$1|4]] ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|$3]] ꯁꯤ ꯏꯃꯥꯂꯣꯟꯒꯤ ꯃꯑꯣꯡꯒꯨꯝ ꯋꯥ-ꯉꯥꯡꯕ ꯉꯝꯕ (ꯑꯗꯨꯝ ꯑꯣꯏꯅꯃ. ꯑꯩꯒꯤ ꯏꯃꯥꯂꯣꯟꯗꯤ ꯅꯠꯇꯕ) ꯫", - "babel-5": "[[‍$1|ꯁꯤꯟꯐꯝ ꯑꯣꯏꯅ]] ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|$3]] ꯁꯤ ꯁꯤꯟꯐꯝ ꯑꯃꯥ ꯑꯣꯏꯅ ꯍꯩꯔꯕ ꯑꯃꯗꯤ ꯈꯨꯃꯥꯡ ꯆꯥꯎꯁꯤꯟꯅ ꯌꯥꯝ ꯍꯩꯅ ꯑꯇꯣꯞꯄ ꯂꯣꯟꯗ ꯍꯟꯗꯣꯛꯄ ꯉꯝꯕ ꯫", - "babel-N": "[[$1|N]] ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|$3]] ꯁꯤ ꯏꯃꯥꯂꯣꯟ ꯑꯣꯏꯖꯕ ꯑꯃꯁꯨꯡ ꯄꯟꯊꯩ-ꯄꯥꯎꯔꯧ ꯂꯣꯏꯅ ꯈꯪꯕ ꯍꯩꯕ ꯫", - "babel-0-n": "[[$1|0]] ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤ [[$2|ꯃꯤꯇꯩꯂꯣꯟ]] ꯀꯔꯤꯁꯨ ꯈꯪꯕ ꯉꯝꯗꯦ ꯫", - "babel-1-n": "[[$1|1]] ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ ]] ꯁꯤ ꯑꯔꯥꯏꯕ ꯋꯥꯍꯪ ꯅꯠꯇꯔꯒ ꯑꯆꯝꯕ ꯑꯌꯤꯕ ꯄꯣꯠꯁꯛꯇꯤ ꯈꯪꯕ ꯉꯝꯃꯤ ꯫", - "babel-2-n": "[[$1|2]] ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ]] ꯁꯤ ꯑꯆꯝꯕ ꯈꯟꯅ ꯅꯩꯅꯕꯒꯤ ꯃꯇꯥꯡꯗ ꯁꯦꯝꯒꯠꯄ ꯉꯝꯃꯤ ꯫", - "babel-3-n": "[[$1|3]] ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ]] ꯑꯁꯤ ꯌꯥꯝ ꯁꯣꯏꯍꯟꯗꯅ ꯏꯕꯗꯤ ꯉꯝꯃꯤ ꯫", - "babel-4-n": "[[$1|4]] ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ ]] ꯁꯤ ꯏꯃꯥꯂꯣꯟꯒꯤ ꯃꯑꯣꯡꯒꯨꯝ ꯋꯥ-ꯉꯥꯡꯕ ꯉꯝꯕ (ꯑꯗꯨꯝ ꯑꯣꯏꯅꯃ. ꯑꯩꯒꯤ ꯏꯃꯥꯂꯣꯟꯗꯤ ꯅꯠꯇꯕ) ꯫", - "babel-5-n": "ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ [[‍$1|ꯁꯤꯟꯐꯝ ꯑꯣꯏꯅ]] ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ]] ꯁꯤ ꯁꯤꯟꯐꯝ ꯑꯃꯥ ꯑꯣꯏꯅ ꯍꯩꯔꯕ ꯫", - "babel-N-n": "[[$1|N]] ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ ]] ꯁꯤ ꯏꯃꯥꯂꯣꯟ ꯑꯣꯏꯖꯕ ꯑꯃꯁꯨꯡ ꯄꯟꯊꯩ-ꯄꯥꯎꯔꯧ ꯂꯣꯏꯅ ꯈꯪꯕ ꯍꯩꯕ ꯫", - "babel-footer": "ꯁꯤꯖꯤꯟꯅꯔꯤꯕꯥꯁꯤꯒꯤ ꯂꯣꯟ", - "apihelp-query+babel-description": "ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏꯁꯤꯡꯅ ꯈꯡꯕ ꯂꯣꯟꯁꯤꯡꯒꯤ ꯑꯀꯨꯞꯄ ꯃꯔꯣꯜꯁꯤꯡ ꯂꯧ ꯫" + "babel-5": "ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|$3]] ꯑꯁꯤ [[$1|ꯁꯤꯟꯐꯝ ꯑꯣꯏꯅꯥ ꯈꯪꯍꯩꯕ]] ꯫", + "babel-N": "ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ]] ꯑꯁꯤ [[$1|$3]] ꯈꯪꯉꯤ꯫", + "babel-0-n": "ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤ [[$2|ꯃꯤꯇꯩꯂꯣꯟ]] ꯑꯁꯤ [[$1|ꯀꯔꯤꯁꯨ ꯈꯪꯕ ꯉꯝꯗꯦ]] ꯫", + "babel-1-n": "ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ ]] ꯑꯁꯤ [[$1|ꯑꯆꯝꯕ ꯑꯔꯥꯏꯕ ꯈꯔꯥ ꯈꯪꯉꯤ]] ꯫", + "babel-2-n": "ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ]] ꯑꯁꯤ [[$1|ꯃꯌꯥꯏꯑꯣꯏꯔꯞ ꯈꯪꯉꯤ]] ꯫", + "babel-3-n": "ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ]] ꯑꯁꯤ [[$1|ꯌꯥꯝ ꯈꯨꯃꯥꯡꯆꯥꯎꯁꯤꯟꯅ ꯍꯩꯩꯩꯔꯦ]] ꯫", + "babel-4-n": "ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ ]] ꯁꯤ [[$1|\nꯏꯃꯥꯂꯣꯟꯒꯤ ꯊꯥꯛꯇꯥ ꯈꯪꯕ]] ꯫", + "babel-5-n": "ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ]] ꯑꯁꯤ [[$1|ꯁꯤꯟꯐꯝ ꯑꯣꯏꯅꯥ ꯈꯪꯍꯩꯕ]] ꯫", + "babel-N-n": "ꯃꯁꯤ ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯤꯑꯣꯏ ꯑꯁꯤꯅ [[$2|ꯃꯤꯇꯩꯂꯣꯟ ]] ꯁꯤ [[$1|ꯃꯃꯥꯂꯣꯟ ꯑꯣꯏꯖꯕ]] ꯑꯃꯁꯨꯡ ꯄꯟꯊꯩ-ꯄꯥꯎꯔꯧ ꯂꯣꯏꯅ ꯈꯪꯕ ꯍꯩꯕ ꯫", + "babel-footer": "ꯁꯤꯖꯤꯟꯅꯔꯤꯕꯥꯁꯤꯒꯤ ꯂꯣꯟ" } diff --git a/MLEB/Babel/i18n/mnw.json b/MLEB/Babel/i18n/mnw.json index 570ff2a3..5f669f43 100644 --- a/MLEB/Babel/i18n/mnw.json +++ b/MLEB/Babel/i18n/mnw.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Aue Nai", + "Htawmonzel", "Ninjastrikers" ] }, @@ -12,16 +13,12 @@ "babel-4": "ညးလွပ်ဏံနွံကဵု [[$1|ကြပ်ညောန်ကဵုညးဇာတိဟီု]] ဗဟုသုတဏအ် [[$2|$3]].", "babel-5": "ညးလွပ်နွံကဵု [[$1|စိုန်သ္ကီု]] ဗဟုသုတဏအ်[[$2|$3]].", "babel-N": "ညးလွပ်နွံကဵု[[$1|ဇာတိ]] ကၠိုဟ်ဒၟံၚ်ကဵု [[$2|$3]].", - "babel-0-n": "ညးလွပ်ဏအ်နွံ[[$1|ဟွံမွဲ]] ဗဟုသုတဏအ် [[$2|အၚ်္ဂလိက်]] (ဟွံသေၚ် ကၠိုဟ်ကေတ်မံၚ် သီုဒးကူချပ်ကေတ် ဗွဲမဝါတ်ဂါတ်).", - "babel-1-n": "ညးလွပ်ဏအ်နွံ [[$1|သ္ဇိုၚ်]] ဗဟုသုတဏအ် [[$2|ဘာသာမန်]]။", - "babel-2-n": "ညးလွပ်ဏအ်နွံ[[$1|ဒေါဝ်]] ဗဟုသုတဏအ် [[$2|ဘာသာမန်]].", + "babel-0-n": "ညးလွပ်ဏအ် နွံဗဟုသုတ ပ္ဍဲ[[$2|အၚ်္ဂလိက်]] ကဆံင်[[$1|ဟွံမွဲ]](ဟွံသေင်မ္ဂး ကၠိုဟ်ကေတ်ဒၟံင် သီုဒးကူချပ်ကေတ် ဗွဲမဝါတ်ဂါတ်)။", + "babel-1-n": "ညးလွပ်ဏအ် နွံဗဟုသုတ ပ္ဍဲ [[$2|ဘာသာမန်]] ကဆံင်[[$1|သဇိုင်]]။", + "babel-2-n": "ညးလွပ်ဏအ် နွံဗဟုသုတ ပ္ဍဲ[[$2|ဘာသာမန်]] ကဆံင်[[$1|လဒေါဝ်]]။", "babel-3-n": "ညးလွပ်ဏအ်နွံကဵု [[$1|သၠုၚ်]] ဗဟုသုတဏအ် [[$2|ဘာသာမန်]]။", "babel-4-n": "ညးလွပ်ဏအ်နွံကဵု [[$1|ကြေပ်ညောန်ကဵုညးဒေသဟီု]] ဗဟုသုတဏအ် [[$2|ဘာသာမန်]]။", - "babel-5-n": "ညးလွပ်ဏအ်နွံ[[$1|စိုန်သ္ကီု]] ဗဟုသုတဏအ် [[$2|ဘာသာမန်]]။", - "babel-N-n": "ညးလွပ်ဏအ်နွံ [[$1|ဇာတိ]] ကၠိုဟ်ဒၟံၚ်ကဵု [[$2|ဘာသာမန်]]။", - "babel-footer": "ညးလွပ်နကဵုဘာဘာဂမၠိုၚ်", - "apihelp-query+babel-description": "ဂွံတၚ်နၚ်ပရူနကဵုဘာသာညးလွပ်တီ", - "apihelp-query+babel-summary": "ဂွံတၚ်နၚ်ပရူပရာမုဘာသာညးလွပ်ဏအ်ကၠိုဟ်", - "apihelp-query+babel-param-user": "ညးလွပ်သ္ဂောံဂွံတၚ်နၚ်ပရူ", - "apihelp-query+babel-example-1": "ဂွံတၚ်နၚ်ပရိုၚ် Babel သွက်ညးလွပ် ဥပမာ" + "babel-5-n": "ညးလွပ်ဏအ် နွံဗဟုသုတ ပ္ဍဲ[[$2|ဘာသာမန်]] ကဆံင်[[$1|တၠပညာ]]။", + "babel-N-n": "ညးလွပ်ဏအ် နွံဗဟုသုတ ပ္ဍဲ[[$2|ဘာသာမန်]] ကဆံင် [[$1|အရေဝ်ဇာတိ]]။", + "babel-footer": "ညးလွပ်နကဵုဘာဘာဂမၠိုၚ်" } diff --git a/MLEB/Babel/i18n/mo.json b/MLEB/Babel/i18n/mo.json index 10fcbc3c..53919955 100644 --- a/MLEB/Babel/i18n/mo.json +++ b/MLEB/Babel/i18n/mo.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Node ue", - "Cybernenea11" + "Cybernenea11", + "Node ue" ] }, "babel": "Информаций Бабел деспре утилизатор", diff --git a/MLEB/Babel/i18n/mr.json b/MLEB/Babel/i18n/mr.json index 4bd3afc3..3058e80d 100644 --- a/MLEB/Babel/i18n/mr.json +++ b/MLEB/Babel/i18n/mr.json @@ -6,8 +6,8 @@ "Mahitgar", "Pravins", "Rahuldeshmukh101", - "V.narsikar", - "Sureshkhole" + "Sureshkhole", + "V.narsikar" ] }, "babel": "बॅबेल सदस्य माहिती", @@ -31,9 +31,5 @@ "babel-4-n": "या सदस्याला [[$2|मराठी]] चे [[$1|अति उच्च स्तराचे]] ज्ञान आहे.", "babel-5-n": "या सदस्याला [[$2|मराठी]] चे [[$1|व्यावसायिक स्तराचे]] ज्ञान आहे.", "babel-N-n": "या सदस्याला [[$2|मराठी]] चे [[$1|स्थानिक स्तराचे]] ज्ञान आहे.", - "babel-footer": "भाषेनुसार सदस्य", - "apihelp-query+babel-description": "सदस्य कोणती भाषा जाणतो याबद्दल माहिती मिळवा", - "apihelp-query+babel-summary": "सदस्य कोणती भाषा जाणतो याबद्दल माहिती मिळवा", - "apihelp-query+babel-param-user": "सदस्याने ही माहिती प्राप्त करावी", - "apihelp-query+babel-example-1": "उदाहरणया सदस्याबद्दलची बॅबेल माहिती मिळवा" + "babel-footer": "भाषेनुसार सदस्य" } diff --git a/MLEB/Babel/i18n/mrh.json b/MLEB/Babel/i18n/mrh.json new file mode 100644 index 00000000..5511496a --- /dev/null +++ b/MLEB/Babel/i18n/mrh.json @@ -0,0 +1,29 @@ +{ + "@metadata": { + "authors": [ + "Teitei Para" + ] + }, + "babel": "Babel hmâhtuhpa chhichâna", + "babel-desc": "Adds the #babel parser function to allow automated generation of a babel userbox column with the ability to include custom templates", + "babel-url": "Project:Babel", + "babel-footer-url": ":Pho:Babel - Reihchâ ta hmâhtuhpazy", + "babel-autocreate-reason": "Anotata taopa [[$1|Babel]] pho châhmia.", + "babel-autocreate-text-levels": "He pho liata hmâhtuhpazy cha âmo reih $2 châta thaina chhâh $1 ama hneipa a palâsa.", + "babel-autocreate-text-main": "He pho liata hmâhtuhpazy cha reihchâ $1 liata ama pahnona a palâsa.", + "babel-0": "He hmâhtuhpa he cha [[$2|$3]] nata azaopa ta pahnona hnei [[$1|vei]] (acv thapi ta ru keipa ta ano âvâh).", + "babel-1": "He hmâhtuhpa he cha [[$2|$3]] nata azaopa ta [[$1|âhnai chaipa]] pahnona a hnei.", + "babel-2": "He hmâhtuhpa he cha [[$2|$3] nata azaopa ta pahnona [[$1|âdaihpa]] a hnei.", + "babel-3": "He hmâhtuhpa he cha [[$2|$3]] nata azaopa ta [[$1|âsâh kawpa]] pahnona a hnei.", + "babel-4": "He hmâhtuhpa he cha [[$2|$3]] nata azaopa ta [[$1|pikhei reih tlu ta]] pahnona a hnei.", + "babel-5": "He hmâhtuhpa he cha [[$2|$3]] nata azaopa ta [[$1|asâhchaipa]] pahnona a hnei.", + "babel-N": "He hmâhtuhpa he cha [[$2|$3]] nata azaopa ta [[$1|a pikhei reih hawhta]] pahnona a hnei.", + "babel-0-n": "He hmâhtuhpa he cha [[$2|Mongyuh reih]] nata azaopa ta pahnona hnei [[$1|vei]] (acv thapi ta ru keipa ta ano âvâh).", + "babel-1-n": "He hmâhtuhpa he cha [[$2|Mongyuh reih]] nata azaopa ta [[$1|âhnai chaipa]] pahnona a hnei.", + "babel-2-n": "He hmâhtuhpa he cha [[$2|Mongyuh reih]] nata azaopa ta pahnona [[$1|âdaihpa]] a hnei.", + "babel-3-n": "He hmâhtuhpa he cha [[$2|Mongyuh reih]] nata azaopa ta [[$1|âsâh kawpa]] pahnona a hnei.", + "babel-4-n": "He hmâhtuhpa he cha [[$2|Mongyuh reih]] nata azaopa ta [[$1|pikhei reih tlu ta]] pahnona a hnei.", + "babel-5-n": "He hmâhtuhpa he cha [[$2|Mongyuh reih]] nata azaopa ta [[$1|asâhchaipa]] pahnona a hnei.", + "babel-N-n": "He hmâhtuhpa he cha [[$2|Mongyuh reih]] nata azaopa ta [[$1|a pikhei reih hawhta]] pahnona a hnei.", + "babel-footer": "Reihchâ ta hmâhtuhpazy" +} diff --git a/MLEB/Babel/i18n/ms.json b/MLEB/Babel/i18n/ms.json index e606fc20..7122b60a 100644 --- a/MLEB/Babel/i18n/ms.json +++ b/MLEB/Babel/i18n/ms.json @@ -3,9 +3,10 @@ "authors": [ "Anakmalaysia", "Aviator", + "CyberTroopers", "Iwan Novirion", - "Kurniasan", - "Jeluang Terluang" + "Jeluang Terluang", + "Kurniasan" ] }, "babel": "Maklumat bahasa pengguna", @@ -14,7 +15,7 @@ "babel-footer-url": ":Category:Babel - Pengguna mengikut bahasa", "babel-autocreate-reason": "Mencipta laman kategori [[$1|Bahasa]] secara automatik.", "babel-autocreate-text-levels": "Pengguna yang tergolong dalam kategori ini mengisyaratkan bahawa mereka memiliki kemahiran aras $1 dalam bahasa $2.", - "babel-autocreate-text-main": "Pengguna yang tergolong dalam kategori ini mengisyaratkan bahawa mereka memiliki pengetahuan dalam bahasa $1.", + "babel-autocreate-text-main": "Pengguna yang tergolong dalam kategori ini menandakan bahawa mereka memiliki pengetahuan dalam bahasa $1.", "babel-autocreate-user": "Babel AutoCreate", "babel-0": "Pengguna ini [[$1|tidak mampu]] bertutur dalam (atau sukar memahami) [[$2|$3]].", "babel-1": "Pengguna ini memiliki kemahiran [[$1|asas]] dalam [[$2|$3]].", diff --git a/MLEB/Babel/i18n/mui.json b/MLEB/Babel/i18n/mui.json index 0d840c1b..e703289a 100644 --- a/MLEB/Babel/i18n/mui.json +++ b/MLEB/Babel/i18n/mui.json @@ -28,9 +28,5 @@ "babel-5-n": "Pemakék ini pacak bebaso [[$2|Pelémbang]] tingkat [[$1|tinggi]] .", "babel-N-n": "Pemakék ini [[$1|aslinyo]] bebaso [[$2|Pelémbang]].", "babel-template": "Pemakék $1", - "babel-footer": "Jingok pemakék dari basonyo", - "apihelp-query+babel-description": "Gari baso apo yang pacak dipakék pemakék ini", - "apihelp-query+babel-summary": "Gari baso apo yang pacak dipakék pemakék ini", - "apihelp-query+babel-param-user": "Pemakék yang informasinyo nak dijingok", - "apihelp-query+babel-example-1": "Jingok informasi Babel dari pemakék Contoh" + "babel-footer": "Jingok pemakék dari basonyo" } diff --git a/MLEB/Babel/i18n/mwl.json b/MLEB/Babel/i18n/mwl.json index 2bb83d02..28bb230a 100644 --- a/MLEB/Babel/i18n/mwl.json +++ b/MLEB/Babel/i18n/mwl.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Athena in Wonderland", "Cecílio", - "MokaAkashiyaPT", - "Athena in Wonderland" + "MokaAkashiyaPT" ] }, "babel": "Anformaçon Babel de Outelizador", diff --git a/MLEB/Babel/i18n/my.json b/MLEB/Babel/i18n/my.json index e6eecd8e..64115b51 100644 --- a/MLEB/Babel/i18n/my.json +++ b/MLEB/Babel/i18n/my.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Dr Lotus Black", "Lionslayer", - "Ninjastrikers", - "Dr Lotus Black" + "Ninjastrikers" ] }, "babel": "အသုံးပြုသူ၏ ဘေဘယ်ပေါ်မှ သတင်းအချက်အလက်", diff --git a/MLEB/Babel/i18n/myv.json b/MLEB/Babel/i18n/myv.json index 5e7bfe0f..c7b927fa 100644 --- a/MLEB/Babel/i18n/myv.json +++ b/MLEB/Babel/i18n/myv.json @@ -1,11 +1,12 @@ { "@metadata": { "authors": [ - "Botuzhaleny-sodamo" + "Botuzhaleny-sodamo", + "Rueter" ] }, "babel": "Вавилононь тевс нолдыця ломанень келень содамочыде информация", - "babel-desc": "Поладсы #babel парсерэнь функциянть, конань вельде совавтови теицянь вавилон уминес келень содамочыде информация ды лия лопа парцунт (шаблонт).", + "babel-desc": "Поладсы #babel парсерэнь функциянть, конань вельде совавтови теицянь вавилон уминес келень содамочиде информация ды лия лопапарцунт (шаблонт).", "babel-url": "Project:Вавилон", "babel-0": "Те ломансь [[$1|а чарькоди ]] [[$2|$3]]кс (эли пек стакасто чарькоди сонзэ).", "babel-1": "Те ломансь [[$1|аламошка чарькоди]] [[$2|$3]]кс.", diff --git a/MLEB/Babel/i18n/nah.json b/MLEB/Babel/i18n/nah.json index f1f05b11..0f3d8705 100644 --- a/MLEB/Babel/i18n/nah.json +++ b/MLEB/Babel/i18n/nah.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ + "Akapochtli", "Fluence", "Purodha", "Ricardo gs", - "Teòtlalili", - "Akapochtli" + "Teòtlalili" ] }, "babel": "Iteixmatiloca itech tequitiuhqui ipan Babel", @@ -29,9 +29,5 @@ "babel-4-n": "Inin tequitiuhqui tlahtoa in [[$2|nahuatl]] cahxa quen ce [[$1|chaneh]].", "babel-5-n": "Inin tequitiuhqui quipiya [[$1|tetlamachilli]] tlaixihmachiliztli itech [[$2|nahuatlahtolli]].", "babel-N-n": "Inin tequitiuhqui quipiya quen [[$1|nantlahtolli]] in [[$2|nahuatlahtolli]].", - "babel-footer": "Tequitiuhqueh ipal intlahtol", - "apihelp-query+babel-description": "Ticahxiltiz in neixmachiliztli itechpa tlahtolli in quixmati", - "apihelp-query+babel-summary": "Ticahxiltiz in neixmachiliztli itechpa tlahtolli in quixmati", - "apihelp-query+babel-param-user": "Inin tequitiuhqui quipiya neixmachiliztli", - "apihelp-query+babel-example-1": "Ticahxiltiz ineixmachiliz itech tequitiuhqui Example" + "babel-footer": "Tequitiuhqueh ipal intlahtol" } diff --git a/MLEB/Babel/i18n/nap.json b/MLEB/Babel/i18n/nap.json index 070f6b4e..38d0f371 100644 --- a/MLEB/Babel/i18n/nap.json +++ b/MLEB/Babel/i18n/nap.json @@ -1,34 +1,31 @@ { "@metadata": { "authors": [ + "BaRaN6161 TURK", "C.R.", "Sannita" ] }, "babel": "Nfurmaziune babel utente", - "babel-desc": "Jògne 'a funzione d'analise #babel pe' ve permettere 'a generazione automatezzata 'e 'na culonna babel cu 'a possibbeletà 'e 'ncludere template personalizzate", + "babel-desc": "Aggiunge 'a funzione d'analise #babel pe' vve permettere 'a generazione automatezzata 'e 'na culonna babel cu' 'a possibbeletà 'e 'ncludere modelli personalizzate", "babel-url": "Project:Babel", "babel-footer-url": ":Category:Utente pe' llengua", "babel-autocreate-reason": "Stong' crianno automatecamente 'a categurìa [[$1|Babel]].", - "babel-autocreate-text-levels": "L'utente dint'a sta categurìa riceno ca tengono nu livello $1 p' 'a lengua $2.", - "babel-autocreate-text-main": "L'utente dint'a sta categurìa riceno 'e canoscere 'a lengua $1.", + "babel-autocreate-text-levels": "Ll'utente dint a sta categurìa riceno ca tengono nu livello $1 'e lengua $2.", + "babel-autocreate-text-main": "Ll'utente dint a sta categurìa riceno 'e canoscere 'a lengua $1.", "babel-0": "Chist'utente [[$1|nun]] sape parlà [[$2|$3]] (o capisce malamente 'a lengua).", "babel-1": "St'utente tene nu livello [[$1|base]] 'e [[$2|$3]].", - "babel-2": "St'utente tene nu livello [[$1|mezo]] 'e [[$2|$3]].", - "babel-3": "St'utente tene nu livello [[$1|aveto]] 'e [[$2|$3]].", - "babel-4": "St'utente tene nu livello comme fosse quase [[$1|nativo]] 'e [[$2|$3]].", - "babel-5": "St'utente tene na canuscenza [[$1|professionale]] 'e [[$2|$3]].", + "babel-2": "St'utente tene nu livello [[$1|'e miezo]] 'e [[$2|$3]].", + "babel-3": "St'utente tene nu livello [[$1|alto]] 'e [[$2|$3]].", + "babel-4": "St'utente tene nu livello quase comme fosse [[$1|nativo]] 'e [[$2|$3]].", + "babel-5": "St'utente tene 'na canuscenza [[$1|prufessionale]] 'e [[$2|$3]].", "babel-N": "St'utente è de [[$1|madrelengua]] [[$2|$3]].", "babel-0-n": "St'utente [[$1|nun]] sape 'o [[$2|napulitano]] (o pure 'u capisce malamente).", "babel-1-n": "St'utente tene nu livello [[$1|base]] 'e [[$2|napulitano]].", - "babel-2-n": "St'utente tene nu livello [[$1|mezo]] 'e [[$2|napulitano]].", - "babel-3-n": "St'utente tene nu livello [[$1|aveto]] 'e [[$2|napulitano]].", - "babel-4-n": "St'utente tene nu livello comme fosse quase [[$1|nativo]] 'e [[$2|napulitano]].", - "babel-5-n": "St'utente tene na canuscenza [[$1|professionale]] 'e [[$2|napulitano]].", + "babel-2-n": "St'utente tene nu livello [[$1|'e miezo]] 'e [[$2|napulitano]].", + "babel-3-n": "St'utente tene nu livello [[$1|alto]] 'e [[$2|napulitano]].", + "babel-4-n": "St'utente tene nu livello quase comme fosse [[$1|nativo]] 'e [[$2|napulitano]].", + "babel-5-n": "St'utente tene na canuscenza [[$1|prufessionale]] 'e [[$2|napulitano]].", "babel-N-n": "St'utente è de [[$1|madrelèngua]] [[$2|napulitana]].", - "babel-footer": "Utente pe' lengua", - "apihelp-query+babel-description": "Piglia nfurmaziune ncopp' 'e llengue ca sapesse l'utente", - "apihelp-query+babel-summary": "Piglia 'e nfurmaziune ncopp' 'e llengue ca l'utente canosce", - "apihelp-query+babel-param-user": "Utente a se piglià nfurmaziune", - "apihelp-query+babel-example-1": "Piglia 'infurmaziune Babbel 'a ll'utente Esempio" + "babel-footer": "Utente pe' lengua" } diff --git a/MLEB/Babel/i18n/nb.json b/MLEB/Babel/i18n/nb.json index 1a76bc4f..1ebbbf88 100644 --- a/MLEB/Babel/i18n/nb.json +++ b/MLEB/Babel/i18n/nb.json @@ -1,15 +1,15 @@ { "@metadata": { "authors": [ + "Danmichaelo", "Event", - "Laaknor", - "Nghtwlkr", "Jeblad", - "Danmichaelo", - "Jon Harald Søby" + "Jon Harald Søby", + "Laaknor", + "Nghtwlkr" ] }, - "babel": "Babel brukerinformasjon", + "babel": "Babel-brukerinformasjon", "babel-desc": "Legger til parserfunksjonen #babel for å automatisk generere en babelboks med mulighet for å inkludere egendefinerte maler", "babel-url": "Project:Babel", "babel-footer-url": ":Category:Babel - Brukere etter språk", @@ -31,9 +31,5 @@ "babel-5-n": "Denne brukeren behersker [[$2|norsk (bokmål)]] på [[$1|profesjonelt]] nivå.", "babel-N-n": "Denne brukeren behersker [[$2|norsk (bokmål)]] på [[$1|morsmålsnivå]].", "babel-template": "Template:Bruker $1", - "babel-footer": "Brukere etter språk", - "apihelp-query+babel-description": "Få informasjon om hvilke språk brukeren kan", - "apihelp-query+babel-summary": "Hent informasjon om hvilke språk brukeren kan", - "apihelp-query+babel-param-user": "Bruker det skal hentes informasjon om", - "apihelp-query+babel-example-1": "Hent Babel-informasjon for brukeren Eksempel" + "babel-footer": "Brukere etter språk" } diff --git a/MLEB/Babel/i18n/nds-nl.json b/MLEB/Babel/i18n/nds-nl.json index fba7decb..97947697 100644 --- a/MLEB/Babel/i18n/nds-nl.json +++ b/MLEB/Babel/i18n/nds-nl.json @@ -4,27 +4,27 @@ "Servien" ] }, - "babel": "Babel-gebrukersinformasie", - "babel-desc": "Voegt de #babel-ontlejerfunksie toe um de automatiese anmaak van de babelgebrukerskolom meugelik te maken mit de meugelikheid um spesiale mallen in te voegen.", + "babel": "Babel-gebrukersinformaty", + "babel-desc": "Voogt de #babel-untleaderfunkty to üm de automatiske anmaak van de babelgebrukerskolom möägelik te maken mid de möägelikheid um speciale mallen in te vogen.", "babel-url": "Project:Babel", - "babel-footer-url": ":Category:Babel - Gebrukers naor taal", - "babel-autocreate-reason": "Automaties an-emaakten [[$1|Babel]]-kategorie.", - "babel-autocreate-text-levels": "De gebrukers in disse kategorie geven an dat hulen nivo van t $2 $1 is.", - "babel-autocreate-text-main": "De gebrukers in disse kategorie geven an dat ze kennis hebben van t $1.", - "babel-0": "Disse gebruker hef [[$1|gien]] kennis van t [[$2|$3]] (of berip t mit grote meuite).", - "babel-1": "Disse gebruker hef op [[$1|baosisnivo]] kennis van t [[$2|$3]].", - "babel-2": "Disse gebruker hef n [[$1|gemiddelde]] kennis van t [[$2|$3]].", - "babel-3": "Disse gebruker hef n [[$1|goeie kennis]] van t [[$2|$3]].", - "babel-4": "Disse gebruker praot [[$2|$3]] [[$1|as of t zien moerstaal is]].", - "babel-5": "Disse gebruker hef n [[$1|professionele]] kennis van t [[$2|$3]].", - "babel-N": "Disse gebruker hef t [[$2|$3]] as zien [[$1|moerstaal]].", - "babel-0-n": "Disse gebruker hef [[$1|gien]] kennis van t [[$2|Nedersaksies]] (of begrip t mit grote meuite).", - "babel-1-n": "Disse gebruker hef op [[$1|baosisnivo]] kennis van t [[$2|Nedersaksies]].", - "babel-2-n": "Disse gebruker hef n [[$1|gemiddelde]] kennis van t [[$2|Nedersaksies]].", - "babel-3-n": "Disse gebruker hef n [[$1|goeie kennis]] van t [[$2|Nedersaksies]].", - "babel-4-n": "Disse gebruker praot [[$2|Nedersaksies]] [[$1|as of t zien moerstaal is]].", - "babel-5-n": "Disse gebruker hef n [[$1|professionele]] kennis van t [[$2|Nedersaksies]].", - "babel-N-n": "Disse gebruker hef t [[$2|Nedersaksies]] as zien [[$1|moerstaal]].", + "babel-footer-url": ":Category:Babel - Gebrukers nå språke", + "babel-autocreate-reason": "Automatisk anmakede [[$1|Babel]]-kategory.", + "babel-autocreate-text-levels": "De gebrukers in disse kategory geaven an dat höär nivo vöär de språke $2 $1 is.", + "babel-autocreate-text-main": "De gebrukers in disse kategory geaven an dat se kennis hebben van de språke $1.", + "babel-0": "Disse gebruker hevt [[$1|geen]] kennis van et [[$2|$3]] (of begript et mid groute moide).", + "babel-1": "Disse gebruker hevt up [[$1|basisnivo]] kennis van et [[$2|$3]].", + "babel-2": "Disse gebruker hevt een [[$1|gemiddelde]] kennis van et [[$2|$3]].", + "babel-3": "Disse gebruker hevt een [[$1|gode kennis]] van et [[$2|$3]].", + "babel-4": "Disse gebruker pråt [[$2|$3]] [[$1|as of et syn modersspråke is]].", + "babel-5": "Disse gebruker hevt een [[$1|professionele]] kennis van et [[$2|$3]].", + "babel-N": "Disse gebruker hevt et [[$2|$3]] as syn [[$1|modersspråke]].", + "babel-0-n": "Disse gebruker hevt [[$1|geen]] kennis van et [[$2|neadersassisk]] (of begript et mid groute moide).", + "babel-1-n": "Disse gebruker hevt up [[$1|basisnivo]] kennis van et [[$2|neadersassisk]].", + "babel-2-n": "Disse gebruker hevt een [[$1|gemiddelde]] kennis van et [[$2|neadersassisk]].", + "babel-3-n": "Disse gebruker hevt een [[$1|gode kennis]] van et [[$2|neadersassisk]].", + "babel-4-n": "Disse gebruker pråt [[$2|neadersassisk]] [[$1|as of et syn modersspråke is]].", + "babel-5-n": "Disse gebruker hevt een [[$1|professionele]] kennis van et [[$2|neadersassisk]].", + "babel-N-n": "Disse gebruker hevt et [[$2|neadersassisk]] as syn [[$1|modersspråke]].", "babel-template": "Template:Gebruker $1", - "babel-footer": "Gebrukers per taal" + "babel-footer": "Gebrukers nå språke" } diff --git a/MLEB/Babel/i18n/ne.json b/MLEB/Babel/i18n/ne.json index 9e44c44f..00078aee 100644 --- a/MLEB/Babel/i18n/ne.json +++ b/MLEB/Babel/i18n/ne.json @@ -3,8 +3,8 @@ "authors": [ "Bhawani Gautam", "Bhawani Gautam Rhk", - "सरोज कुमार ढकाल", - "राम प्रसाद जोशी" + "राम प्रसाद जोशी", + "सरोज कुमार ढकाल" ] }, "babel": "Babel प्रयोगकर्ता जानकारी", diff --git a/MLEB/Babel/i18n/new.json b/MLEB/Babel/i18n/new.json index eccc369c..85d36608 100644 --- a/MLEB/Babel/i18n/new.json +++ b/MLEB/Babel/i18n/new.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "1997kB", "Eukesh" ] }, @@ -14,14 +15,14 @@ "babel-1": "थ्व छ्यलामिनाप [[$2|$3]]या [[$1|भतिभति]] ज्ञान दु।", "babel-2": "थ्व छ्यलामिनाप [[$2|$3]]या [[$1|मध्यम स्तरया]] ज्ञान दु।", "babel-3": "थ्व छ्यलामिनाप [[$2|$3]]या [[$1|बांलागु]] ज्ञान दु।", - "babel-4": "थ्व छ्यलामिनाप [[$2|$3]]या [[$1|मातृभाषी तयेगु थें]] ज्ञान दु।", + "babel-4": "थ्व छ्यलामिनाप [[$2|$3]]या [[$1|मातृभाषा तयेगु थें]] ज्ञान दु।", "babel-5": "थ्व छ्यलामिनाप [[$2|$3]]या [[$1|व्यवसायिक]] ज्ञान दु।", "babel-N": "थ्व छ्यलामिं [[$2|$3]]यात [[$1|मांभाय्]]या रुपय् थु।", "babel-0-n": "थ्व छ्यलामिनाप [[$2|नेपालभाषा]]या ज्ञान [[$1|मदु]] (वा सिक्क म्हो जक्क थु)।", "babel-1-n": "थ्व छ्यलामिनाप [[$2|नेपालभाषा]]या [[$1|बांलागु]] ज्ञान दु।", "babel-2-n": "थ्व छ्यलामिनाप [[$2|नेपालभाषा]]या [[$1|मध्यम स्तरया]] ज्ञान दु।", "babel-3-n": "थ्व छ्यलामिनाप [[$2|नेपालभाषा]]या [[$1|बांलागु]] ज्ञान दु।", - "babel-4-n": "थ्व छ्यलामिनाप [[$2|नेपालभाषा]]या [[$1|मातृभाषी तयेगु थें]] ज्ञान दु।", + "babel-4-n": "थ्व छ्यलामिनाप [[$2|नेपालभाषा]]या [[$1|मातृभाषा तयेगु थें]] ज्ञान दु।", "babel-5-n": "थ्व छ्यलामिनाप [[$2|नेपालभाषा]]या [[$1|व्यवसायिक]] ज्ञान दु।", "babel-N-n": "थ्व छ्यलामिं [[$2|नेपालभाषा]]यात [[$1|मांभाय्]]या रुपय् थु।", "babel-footer": "भाय् कथंया छ्यलामि" diff --git a/MLEB/Babel/i18n/nia.json b/MLEB/Babel/i18n/nia.json new file mode 100644 index 00000000..a1b8a2df --- /dev/null +++ b/MLEB/Babel/i18n/nia.json @@ -0,0 +1,29 @@ +{ + "@metadata": { + "authors": [ + "Anugrahgori" + ] + }, + "babel": "Turia Mbabeli sanura", + "babel-desc": "Nönö #babel parser function ena'ö tola tefazökhi a babel userbox column with the ability to include custom templates", + "babel-url": "Project:Mbabeli", + "babel-footer-url": ":Fanete:Mbabeli - Sanura molo'ö Li ni'ila nia", + "babel-autocreate-reason": "Fazökhi otomatis [[$1|Babel]] nga'örö fanete.", + "babel-autocreate-text-levels": "Tetandra wa sanura ba wanete da'a fa'atola nia fa Li $2 ya'ia da'ö $1", + "babel-autocreate-text-main": "Tetandra wa sanura ba wanete andre fa'atola nia ba Li $1", + "babel-0": "[[$1|Lö]] i'ila ma fagamböambö sibai sanura andre ba wohede ba Li [[$2|$3]]", + "babel-1": "I'ila [[$1|ma'ifu]] wehede ba Li [[$2|$3]] sanura andre", + "babel-2": "I'ila [[$1|ma'ifu]] wehede ba Li [[$2|$3]] sanura andre.", + "babel-3": "[[$1|Oya]] i'ila wehede ba Li [[$2|$3]] sanura andre.", + "babel-4": "[[$1|Onekhe]] fa Li [[$2|$3]] sanura andre.", + "babel-5": "[[$1|Tola]] fahuhuo sanura andre föna zato ba Li [[$2|$3]] .", + "babel-N": "I'oguna'ö [[$2|$3]] sanura andre [[$1|i'otarai me ideide]].", + "babel-0-n": "[[$1|Lö i'ila]] mato ma'ifu fa [[$2|Li Hagöri]] sanura andre (ma abua si'ai khö nia wangi'ila).", + "babel-1-n": "I'ila [[$1|ma'ifu]] wehede ba Li [[$2|$3]] sanura andre.", + "babel-2-n": "I'ila [[$1|ma'ifu]] wehede ba Li [[$2|Niha]] sanura andre.", + "babel-3-n": "[[$1|Oya]] i'ila wehede ba Li [[$2|Niha]] sanura andre.", + "babel-4-n": "[[$1|Onekhe]] fa Li [[$2|Niha]] sanura andre.", + "babel-5-n": "[[$1|Tola]] fahuhuo sanura andre föna zato ba Li [[$2|Hagöri]] .", + "babel-N-n": "I'oguna'ö [[$2|Li Niha]] sanura andre [[$1|i'otarai me ideide]].", + "babel-footer": "Sanura molo'ö Li ni'oguna'ö nia" +} diff --git a/MLEB/Babel/i18n/nl.json b/MLEB/Babel/i18n/nl.json index 7a579558..f2908e5b 100644 --- a/MLEB/Babel/i18n/nl.json +++ b/MLEB/Babel/i18n/nl.json @@ -4,12 +4,12 @@ "Akoopal", "GerardM", "Hamaryns", + "Huhbakker", + "Mainframe98", "MarkAHershberger", "McDutchie", "SPQRobin", - "Siebrand", - "Mainframe98", - "Huhbakker" + "Siebrand" ] }, "babel": "Taalvaardigheid", @@ -33,9 +33,5 @@ "babel-4-n": "Deze gebruiker beheerst het [[$2|Nederlands]] als ware het zijn [[$1|moedertaal]].", "babel-5-n": "Deze gebruiker heeft [[$1|professionele]] kennis van het [[$2|Nederlands]].", "babel-N-n": "Deze gebruiker heeft het [[$2|Nederlands]] als [[$1|moedertaal]].", - "babel-footer": "Gebruikers per taal", - "apihelp-query+babel-description": "Informatie verkrijgen over de talen die de gebruiker kent", - "apihelp-query+babel-summary": "Informatie verkrijgen over de talen die de gebruiker kent", - "apihelp-query+babel-param-user": "Gebruiker om informatie over te verkrijgen", - "apihelp-query+babel-example-1": "Voor de Babel informatie voor de gebruiker Voorbeeld" + "babel-footer": "Gebruikers per taal" } diff --git a/MLEB/Babel/i18n/nn.json b/MLEB/Babel/i18n/nn.json index 909c73e1..a8ee1e37 100644 --- a/MLEB/Babel/i18n/nn.json +++ b/MLEB/Babel/i18n/nn.json @@ -5,15 +5,16 @@ "Finnrind", "Gunnernett", "Harald Khan", + "Jeblad", + "Jon Harald Søby", "Njardarlogar", - "Ranveig", - "Jeblad" + "Ranveig" ] }, "babel": "Babel-brukarinformasjon", "babel-desc": "Legg til parserfunksjonen #babel for å automatisk lage ein babelboks der ein kan bruka sjølvlaga malar", "babel-url": "Project:Babel", - "babel-footer-url": ":Kategori:Babel/Brukarar etter språk", + "babel-footer-url": ":Category:Babel/Brukarar etter språk", "babel-autocreate-reason": "Oppretta automatisk ei [[$1|Babel]]-kategoriside.", "babel-autocreate-text-levels": "Brukarar i denne kategorien har eit språkdugleiksnivå på $1 for $2.", "babel-autocreate-text-main": "Brukarar i denne kategorien viser kva evner dei har i språket $1.", diff --git a/MLEB/Babel/i18n/nrm.json b/MLEB/Babel/i18n/nrm.json index 8e07c1db..65ee106f 100644 --- a/MLEB/Babel/i18n/nrm.json +++ b/MLEB/Babel/i18n/nrm.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "WikiEoFrEn", - "JackPotte" + "JackPotte", + "WikiEoFrEn" ] }, "babel": "Retrache des laungages des féchouneus", diff --git a/MLEB/Babel/i18n/ny.json b/MLEB/Babel/i18n/ny.json index fbd8463f..d87d87a9 100644 --- a/MLEB/Babel/i18n/ny.json +++ b/MLEB/Babel/i18n/ny.json @@ -25,9 +25,5 @@ "babel-4-n": "Wogwiritsa ntchitoyo ali [[$1|pafupi ndi wolankhulira]] akudziŵa bwino za [[$2|Chichewa]].", "babel-5-n": "Wosutayu ali ndi [[$1|nzeru zapamwamba]] chachikulu cha [[$2|Chichewa]].", "babel-N-n": "Wogwiritsa ntchitoyu [[$1|amamvetsa]] bwino za [[$2|Chichewa]].", - "babel-footer": "Ogwiritsa ntchito ndi chinenero", - "apihelp-query+babel-description": "Pezani zambiri pazinenero zomwe wosuta amadziwa", - "apihelp-query+babel-summary": "Pezani zambiri pazinenero zomwe wosuta amadziwa", - "apihelp-query+babel-param-user": "Mtumiki kuti mudziwe zambiri", - "apihelp-query+babel-example-1": "Pezani zambiri za Babel kwa mtumiaji Chitsanzo" + "babel-footer": "Ogwiritsa ntchito ndi chinenero" } diff --git a/MLEB/Babel/i18n/olo.json b/MLEB/Babel/i18n/olo.json index 442c7a0d..136b86c8 100644 --- a/MLEB/Babel/i18n/olo.json +++ b/MLEB/Babel/i18n/olo.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Mashoi7", - "Denö" + "Denö", + "Mashoi7" ] }, "babel": "Käyttäjän kielinero", diff --git a/MLEB/Babel/i18n/pl.json b/MLEB/Babel/i18n/pl.json index a55fe77f..4de4e6f7 100644 --- a/MLEB/Babel/i18n/pl.json +++ b/MLEB/Babel/i18n/pl.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ + "InternerowyGołąb", "Karol007", "Sp5uhe", - "Ymar", "Woytecr", - "InternerowyGołąb" + "Ymar" ] }, "babel": "Wieża Babel użytkownika", @@ -29,9 +29,5 @@ "babel-4-n": "{{GENDER:$4|Ten użytkownik|Ta użytkowniczka}} posługuje się [[$2|językiem polskim]] prawie tak samo biegle, jak [[$1|językiem ojczystym]].", "babel-5-n": "{{GENDER:$4|Ten użytkownik|Ta użytkowniczka}} posługuje się [[$2|językiem polskim]] na równi z [[$1|językiem ojczystym]].", "babel-N-n": "[[$2|Polski]] jest [[$1|językiem ojczystym]] {{GENDER:$4|tego użytkownika|tej użytkowniczki}}.", - "babel-footer": "Użytkownicy według języka", - "apihelp-query+babel-description": "Pobiera informacje o tym, jakie użytkownik zna języki", - "apihelp-query+babel-summary": "Uzyskaj informacje o językach, które zna użytkownik", - "apihelp-query+babel-param-user": "Użytkownik, o którym pobrać informacje", - "apihelp-query+babel-example-1": "Pobranie informacji Babel dla użytkownika Example" + "babel-footer": "Użytkownicy według języka" } diff --git a/MLEB/Babel/i18n/pnb.json b/MLEB/Babel/i18n/pnb.json index 57e75f1c..8b8f8460 100644 --- a/MLEB/Babel/i18n/pnb.json +++ b/MLEB/Babel/i18n/pnb.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Abbas dhothar", "Khalid Mahmood", - "عرفان ارشد", - "Abbas dhothar" + "عرفان ارشد" ] }, "babel": "بابل ورتن والے بارے", diff --git a/MLEB/Babel/i18n/pt-br.json b/MLEB/Babel/i18n/pt-br.json index f90d2a3b..5064289f 100644 --- a/MLEB/Babel/i18n/pt-br.json +++ b/MLEB/Babel/i18n/pt-br.json @@ -3,11 +3,11 @@ "authors": [ "Brunoy Anastasiya Seryozhenko", "Eduardo.mps", + "Felipe L. Ewald", "Giro720", - "555", "Opraco", "TheEduGobi", - "Felipe L. Ewald" + 555 ] }, "babel": "Informação do usuário Babel", @@ -33,9 +33,5 @@ "babel-5-n": "{{GENDER:$4|Este usuário|Esta usuária}} pode contribuir com um nível [[$1|profissional]] de [[$2|português no dialeto brasileiro]].", "babel-N-n": "{{GENDER:$4|Este usuário|Esta usuária}} tem como língua [[$1|materna]] o [[$2|dialeto brasileiro da língua portuguesa]].", "babel-template": "Template:Usuário $1", - "babel-footer": "Usuários por língua", - "apihelp-query+babel-description": "Obter informações sobre quais línguas o(a) usuário(a) conhece", - "apihelp-query+babel-summary": "Obter informações sobre quais línguas o(a) usuário(a) conhece", - "apihelp-query+babel-param-user": "Usuário(a) do(a) qual serão obtidas as informações", - "apihelp-query+babel-example-1": "Obter informações do Babel sobre Example" + "babel-footer": "Usuários por língua" } diff --git a/MLEB/Babel/i18n/pt.json b/MLEB/Babel/i18n/pt.json index 304d196e..bc191af1 100644 --- a/MLEB/Babel/i18n/pt.json +++ b/MLEB/Babel/i18n/pt.json @@ -3,10 +3,11 @@ "authors": [ "Hamilton Abreu", "Malafaya", - "Waldir", - "555", "Opraco", - "Vitorvicentevalente" + "Vitorvicentevalente", + "Waldir", + "Waldyrious", + 555 ] }, "babel": "Informação Babel {{GENDER:$1|do utilizador|da utilizadora}}", @@ -30,9 +31,5 @@ "babel-4-n": "{{GENDER:$4|Este utilizador|Esta utilizadora}} tem um nível [[$1|quase nativo]] de [[$2|português]].", "babel-5-n": "{{GENDER:$4|Este utilizador|Esta utilizadora}} tem um nível [[$1|profissional]] de [[$2|português]].", "babel-N-n": "{{GENDER:$4|Este utilizador|Esta utilizadora}} tem como língua [[$1|materna]] o [[$2|português]].", - "babel-footer": "Utilizadores por língua", - "apihelp-query+babel-description": "Obter informação sobre as línguas que o utilizador conhece", - "apihelp-query+babel-summary": "Obter informação sobre as línguas que o utilizador conhece", - "apihelp-query+babel-param-user": "O utilizador sobre o qual a informação será recolhida", - "apihelp-query+babel-example-1": "Obter a informação Babel para o utilizador Example" + "babel-footer": "Utilizadores por língua" } diff --git a/MLEB/Babel/i18n/qqq.json b/MLEB/Babel/i18n/qqq.json index a099e5e4..c09d66dc 100644 --- a/MLEB/Babel/i18n/qqq.json +++ b/MLEB/Babel/i18n/qqq.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Dereckson", + "KartikMistry", "Lloffiwr", "Od1n", "Purodha", @@ -12,8 +13,7 @@ "Shirayuki", "Siebrand", "The Evil IP address", - "Umherirrender", - "KartikMistry" + "Umherirrender" ] }, "babel": "Header of Babel box. Parameters:\n* $1 - (Optional) the name of the page it is used on, for GENDER support", @@ -40,9 +40,5 @@ "babel-N-n": "{{Babel Message Description|N|native=yes}}", "babel-portal": "{{notranslate}}", "babel-template": "{{Optional}}{{doc-important|Do not translate \"Template:\".}}\nThis message contains the template schema for additional templates that can be used in Babel. Parameters:\n* $1 is the parameter value used in the #babel parser tag.", - "babel-footer": "This text is used in the last entry (footer) of the outer box. It is a link anchor, if {{msg-mw|babel-footer-url}} is not empty, otherwise, it is only text. No footer is generated, when this text is empty.", - "apihelp-query+babel-description": "{{doc-apihelp-description|query+babel}}", - "apihelp-query+babel-summary": "{{doc-apihelp-summary|query+babel}}", - "apihelp-query+babel-param-user": "{{doc-apihelp-param|query+babel|user}}", - "apihelp-query+babel-example-1": "{{doc-apihelp-example|query+babel}}" + "babel-footer": "This text is used in the last entry (footer) of the outer box. It is a link anchor, if {{msg-mw|babel-footer-url}} is not empty, otherwise, it is only text. No footer is generated, when this text is empty." } diff --git a/MLEB/Babel/i18n/ro.json b/MLEB/Babel/i18n/ro.json index 2f49ae7c..82b00c20 100644 --- a/MLEB/Babel/i18n/ro.json +++ b/MLEB/Babel/i18n/ro.json @@ -29,9 +29,5 @@ "babel-4-n": "Acest utilizator poate contribui cu un nivel [[$1|aproape nativ]] de [[$2|română]].", "babel-5-n": "Acest utilizator contribuie folosind un nivel [[$1|profesional]] de [[$2|română]].", "babel-N-n": "Acest utilizator este un vorbitor [[$1|nativ]] al [[$2|limbii române]].", - "babel-footer": "Utilizatori după limbă", - "apihelp-query+babel-description": "Obține informații despre limbile cunoscute de utilizator", - "apihelp-query+babel-summary": "Obține informații despre limbile cunoscute de utilizator", - "apihelp-query+babel-param-user": "Utilizatorul despre care să se obțină informații", - "apihelp-query+babel-example-1": "Obțineți informații Babel pentru utilizatorul Exemplu" + "babel-footer": "Utilizatori după limbă" } diff --git a/MLEB/Babel/i18n/roa-tara.json b/MLEB/Babel/i18n/roa-tara.json index f9d1b0c1..cd573720 100644 --- a/MLEB/Babel/i18n/roa-tara.json +++ b/MLEB/Babel/i18n/roa-tara.json @@ -26,9 +26,5 @@ "babel-4-n": "Stu crestiáne quase quase parle 'u '''[[$2|tarandine]]''' cumme a 'a '''[[$1|lènga madre]]'''.", "babel-5-n": "Stu crestiáne è proprie 'nu '''[[$1|professore]]''' de '''[[$2|tarandine]]'''.", "babel-N-n": "Quìste utende jè de [[$1|madrelènga]] [[$2|tarandine]].", - "babel-footer": "Utinde pe lènghe", - "apihelp-query+babel-description": "Pigghie 'mbormaziune sus a quale lènghe l'utende canosce", - "apihelp-query+babel-summary": "Pigghie le 'mbormazziune sus a quale lènghe l'utende canosce", - "apihelp-query+babel-param-user": "Utende sus a 'u quale pigghià 'mbormaziune", - "apihelp-query+babel-example-1": "Pigghie 'mbormaziune de Babel pe l'utende Example" + "babel-footer": "Utinde pe lènghe" } diff --git a/MLEB/Babel/i18n/ru.json b/MLEB/Babel/i18n/ru.json index 5595d536..fc49b859 100644 --- a/MLEB/Babel/i18n/ru.json +++ b/MLEB/Babel/i18n/ru.json @@ -4,16 +4,17 @@ "Abanima", "EugeneZelenko", "Express2000", + "Facenapalm", "Ferrer", "Gleb Borisov", + "Irus", "Kaganer", + "MaxBioHazard", "Ole Yves", "Spiritia", + "Stjn", "Александр Сигачёв", - "Туллук", - "Irus", - "Facenapalm", - "Stjn" + "Туллук" ] }, "babel": "Сведения о языках участников (Вавилон)", @@ -30,18 +31,14 @@ "babel-3": "[[$2|$3]] — [[$1|хороший уровень]]", "babel-4": "[[$2|$3]] — [[$1|почти как родной]]", "babel-5": "[[$2|$3]] — [[$1|профессиональный уровень]]", - "babel-N": "[[$2|$3]] — [[$1|родной]]", + "babel-N": "[[$2|$3]] — [[$1|родной]] язык {{GENDER:$4|этого участника|этой участницы}}.", "babel-0-n": "{{GENDER:$4|Этот участник|Эта участница}} [[$1|не владеет]] [[$2|русским языком]] (или понимает его с трудом).", "babel-1-n": "{{GENDER:$4|Этот участник|Эта участница}} владеет [[$2|русским языком]] на [[$1|начальном уровне]].", "babel-2-n": "{{GENDER:$4|Этот участник|Эта участница}} владеет [[$2|русским языком]] на [[$1|среднем уровне]].", "babel-3-n": "{{GENDER:$4|Этот участник|Эта участница}} [[$1|свободно]] владеет [[$2|русским языком]].", "babel-4-n": "{{GENDER:$4|Этот участник|Эта участница}} владеет [[$2|русским языком]] [[$1|почти как родным]].", "babel-5-n": "{{GENDER:$4|Этот участник|Эта участница}} [[$1|профессионально]] владеет [[$2|русским языком]].", - "babel-N-n": "Для {{GENDER:$4|этого участника|этой участницы}} [[$2|русский язык]] является [[$1|родным]].", + "babel-N-n": "[[$2|Русский]] — [[$1|родной]] язык {{GENDER:$4|этого участника|этой участницы}}.", "babel-template": "Template:Участник $1", - "babel-footer": "Участники по языкам", - "apihelp-query+babel-description": "Получение информации о том, какими языками участник владеет", - "apihelp-query+babel-summary": "Получение информации о том, какими языками участник владеет", - "apihelp-query+babel-param-user": "Участник, о котором необходимо получить информацию", - "apihelp-query+babel-example-1": "Получить сведения о языках участника Example" + "babel-footer": "Участники по языкам" } diff --git a/MLEB/Babel/i18n/ryu.json b/MLEB/Babel/i18n/ryu.json index 23ee6d9a..a5a252b7 100644 --- a/MLEB/Babel/i18n/ryu.json +++ b/MLEB/Babel/i18n/ryu.json @@ -1,14 +1,15 @@ { "@metadata": { "authors": [ + "MiguelX413", "StevenJ81" ] }, - "babel-0-n": "此ぬ利用者のー'''[[$2|沖縄口]]'''読まん書[[$1|かいびらん]](またうふぇ一分かいび一ん)。", - "babel-1-n": "此ぬ利用者のー'''[[$2|沖縄口]]'''さーに[[$1|ぬーがら]]話さりゆん。", - "babel-2-n": "此ぬ利用者のー[[$1|中級]]'''[[$2|沖縄口]]'''さーに話さりゆん。", - "babel-3-n": "此ぬ利用者のー[[$1|上級]]'''[[$2|沖縄口]]'''さーに話さりゆん。", - "babel-4-n": "此ぬ利用者のー[[$1|大概母語級]]'''[[$2|沖縄口]]'''さーに話さりゆん。", - "babel-5-n": "此ぬ利用者のー[[$1|職業的級]]'''[[$2|沖縄口]]'''さーに話さりゆん。", - "babel-N-n": "此ぬ利用者のー[[$1|母語]]'''[[$2|沖縄口]]'''さーに話さりゆん。" + "babel-0-n": "くぬ利用者のー'''[[$2|沖縄口]]'''読まん書[[$1|かいびらん]](またうふぇ一分かいび一ん)。", + "babel-1-n": "くぬ利用者のー'''[[$2|沖縄口]]'''さーに[[$1|ぬーがら]]話さりゆん。", + "babel-2-n": "くぬ利用者のー[[$1|中級]]'''[[$2|沖縄口]]'''さーに話さりゆん。", + "babel-3-n": "くぬ利用者のー[[$1|上級]]'''[[$2|沖縄口]]'''さーに話さりゆん。", + "babel-4-n": "くぬ利用者のー[[$1|大概母語級]]'''[[$2|沖縄口]]'''さーに話さりゆん。", + "babel-5-n": "くぬ利用者のー[[$1|職業的級]]'''[[$2|沖縄口]]'''さーに話さりゆん。", + "babel-N-n": "くぬ利用者のー[[$1|母語]]'''[[$2|沖縄口]]'''さーに話さりゆん。" } diff --git a/MLEB/Babel/i18n/sa.json b/MLEB/Babel/i18n/sa.json index f99793f7..863f6df0 100644 --- a/MLEB/Babel/i18n/sa.json +++ b/MLEB/Babel/i18n/sa.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Kaustubh", - "Shubha", - "NehalDaveND" + "NehalDaveND", + "Shubha" ] }, "babel": "'बाबेल'सदस्यस्य विवरणम्", diff --git a/MLEB/Babel/i18n/sah.json b/MLEB/Babel/i18n/sah.json index 8940051a..503b1318 100644 --- a/MLEB/Babel/i18n/sah.json +++ b/MLEB/Babel/i18n/sah.json @@ -26,6 +26,5 @@ "babel-4-n": "{{GENDER:$4|Бу кыттааччы эр киһи|Бу кыттааччы дьахтар}} [[$2|саха тылын]] [[$1|төрөөбүт тылын курдук]] билэр.", "babel-5-n": "{{GENDER:$4|Бу кыттааччы эр киһи|Бу кыттааччы дьахтар}} [[$2|саха тылын]] [[$1|тыл үөрэхтээҕин таһымынан]] билэр.", "babel-N-n": "{{GENDER:$4|Бу кыттааччы эр киһиэхэ|Бу кыттааччы дьахтарга}} [[$2|саха тыла]] [[$1|төрөөбүт тыла]] буолар.", - "babel-footer": "Кыттааччылар тылларынан", - "apihelp-query+babel-description": "Туттааччы ханнык эбии тыллары билэрин туһунан бил" + "babel-footer": "Кыттааччылар тылларынан" } diff --git a/MLEB/Babel/i18n/sat.json b/MLEB/Babel/i18n/sat.json index c439e1f4..a9da1f03 100644 --- a/MLEB/Babel/i18n/sat.json +++ b/MLEB/Babel/i18n/sat.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ - "Salvator", - "Ramjit Tudu", - "Manik Soren", + "Amire80", "Fagunkoyel Hansdah", - "Amire80" + "Manik Soren", + "Ramjit Tudu", + "Salvator" ] }, "babel": "ᱵᱮᱵᱮᱞ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱠᱟᱛᱷᱟ", @@ -28,9 +28,5 @@ "babel-4-n": "ᱱᱩᱭ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱦᱟᱜ ᱫᱚ [[$1|ᱟᱭᱳ ᱟᱲᱟᱝ ᱥᱩᱯᱩᱨ]] ᱜᱮᱭᱟᱱ ᱢᱮᱱᱟᱜ-ᱟ [[$2|ᱥᱟᱱᱛᱟᱲᱤ]] ᱨᱮᱱᱟᱜ ᱾", "babel-5-n": "ᱱᱩᱭ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱦᱟᱜ ᱫᱚ [[$1|ᱩᱫᱟᱹᱢ]] ᱜᱮᱭᱟᱱ ᱢᱮᱱᱟᱜ-ᱟ [[$2|ᱥᱟᱱᱛᱟᱲᱤ]] ᱨᱮᱱᱟᱜ ᱾", "babel-N-n": "ᱱᱩᱭ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱦᱟᱜ ᱫᱚ [[$1|ᱟᱭᱳ ᱟᱲᱟᱝ ᱞᱮᱠᱟ]] ᱵᱩᱯᱩᱡᱷᱟᱹᱣ ᱢᱮᱱᱟᱜ-ᱟ [[$2|ᱥᱟᱱᱛᱟᱲᱤ]] ᱨᱮᱱᱟᱜ ᱾", - "babel-footer": "ᱯᱟᱹᱨᱥᱤ ᱞᱮᱠᱟᱛᱮ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹᱠᱚ", - "apihelp-query+babel-description": "ᱡᱚᱛᱚ ᱠᱷᱚᱵᱚᱨ ᱧᱟᱢ ᱢᱮ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱚᱠᱟ ᱯᱟᱹᱨᱥᱤ ᱵᱟᱰᱟᱭᱟᱭ", - "apihelp-query+babel-summary": "ᱡᱚᱛᱚ ᱠᱷᱚᱵᱚᱨ ᱧᱟᱢ ᱢᱮ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱚᱠᱟ ᱯᱟᱹᱨᱥᱤ ᱵᱟᱰᱟᱭᱟᱭ", - "apihelp-query+babel-param-user": "ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱠᱷᱚᱵᱚᱨ ᱵᱟᱰᱟᱭ ᱞᱟᱹᱜᱤᱫ", - "apihelp-query+babel-example-1": "ᱧᱟᱢ ᱢᱮ ᱵᱟᱵᱮᱞ ᱥᱩᱪᱚᱱᱟ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱞᱟᱹᱜᱤᱫ ᱫᱟᱹᱭᱠᱟᱹ" + "babel-footer": "ᱯᱟᱹᱨᱥᱤ ᱞᱮᱠᱟᱛᱮ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹᱠᱚ" } diff --git a/MLEB/Babel/i18n/sco.json b/MLEB/Babel/i18n/sco.json index f2b7c4b9..2f935e22 100644 --- a/MLEB/Babel/i18n/sco.json +++ b/MLEB/Babel/i18n/sco.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Purodha", - "John Reid" + "John Reid", + "Purodha" ] }, "babel": "Babel uiser information", diff --git a/MLEB/Babel/i18n/sd.json b/MLEB/Babel/i18n/sd.json index ac97a9b1..3185dfec 100644 --- a/MLEB/Babel/i18n/sd.json +++ b/MLEB/Babel/i18n/sd.json @@ -2,21 +2,31 @@ "@metadata": { "authors": [ "Aursani", - "عرفان ارشد", "Mehtab ahmed", - "Tweety" + "Tweety", + "عرفان ارشد" ] }, - "babel": "واپرائيندڙ جي ٻولي بابت ڄاڻ", + "babel": "بابل واپرائيندڙ جي معلومات", + "babel-url": "Project:بابل", + "babel-footer-url": "::زمرو:بابل - ٻوليءَ سان واپرائيندڙ", + "babel-autocreate-reason": "پاڻمرادو [[$1|بابل]] زمرو صفحو سرجيندي.", + "babel-autocreate-text-levels": "ھن زمري ۾ واپرائيندڙ ظاھر ڪن ٿا تہ انھن کي $2 ٻوليءَ ۾ $1 سطح جي مھارت آھي.", + "babel-autocreate-text-main": "ھن زمري ۾ واپرائيندڙ $1 ٻوليءَ لاءِ پنھنجي ڄاڻ جي نشاندهي ڪن ٿا.", + "babel-0": "هن واپرائيندڙ کي [[$2|$3]] جي [[$1|ڪا ڄاڻ ناهي]] (يا ان کي تمام مشڪل سان سمجھندو آهي).", + "babel-1": "هن واپرائيندڙ کي [[$2|$3]] جي [[$1|بنيادي]] ڄاڻ آهي.", + "babel-2": "هن واپرائيندڙ کي [[$2|$3]] جي [[$1|وچولي]] ڄاڻ آهي.", + "babel-3": "هن واپرائيندڙ کي [[$2|$3]] جي [[$1|سٺي]] ڄاڻ آهي.", + "babel-4": "هن واپرائيندڙ کي [[$2|$3]] [[$1|مادري زبان]] جي ويجھڙ جيتري ڄاڻ آهي.", "babel-5": "هن واپرائيندڙ کي [[$2|$3]] جي [[$1|پيشورانہ]] ڄاڻ آهي.", "babel-N": "ھن واپرائيندڙ کي [[$2|$3]] جي [[$1|ڏيھي]] پروڙ آھي.", - "babel-0-n": "هن واپرائيندڙ کي [[$2|سنڌيءَ]] جي ڪا ڄاڻ ناهي (يا تمام مشڪل سان سمجهندو آهي).", + "babel-0-n": "هن واپرائيندڙ کي [[$2|سنڌيءَ]] جي [[$1|ڪا ڄاڻ ناهي]] (يا ان کي تمام مشڪل سان سمجھندو آهي).", "babel-1-n": "هن واپرائيندڙ کي [[$2|سنڌي]]ءَ جي [[$1|بنيادي]] ڄاڻ آهي.", "babel-2-n": "هن واپرائيندڙ کي [[$2|سنڌيءِ]] جي [[$1|وچولي]] ڄاڻ آهي.", "babel-3-n": "هن واپرائيندڙ کي [[$2|سنڌيءَ]] جي [[$1|سٺي]] ڄاڻ آهي.", "babel-4-n": "هن واپرائيندڙ کي [[$2|سنڌي]] سان تقريبن [[$1|مادري زبان]] جيتري واقفيت آهي.", "babel-5-n": "هن واپرائيندڙ کي [[$2|سنڌي]]ءَ جي [[$1|پيشورانہ]] ڄاڻ آهي.", - "babel-N-n": "هن واپرائيندڙ جي [[$1|مادري زبان]] [[$2|سنڌي]] آهي.", - "babel-footer": "واپرائيندڙ بلحاظ ٻولي", - "apihelp-query+babel-description": "ڄاڻ وٺو ته واپرائيندڙ ڪهڙيون ٻوليون ڄاڻي ٿو" + "babel-N-n": "هن واپرائيندڙ کي [[$2|سنڌيءَ]] جي [[$1|ڏيھي]] پروڙ آهي.", + "babel-template": "Template: واپرائيندڙ $1", + "babel-footer": "واپرائيندڙ بلحاظ ٻولي" } diff --git a/MLEB/Babel/i18n/se.json b/MLEB/Babel/i18n/se.json index f791979e..587ba8a4 100644 --- a/MLEB/Babel/i18n/se.json +++ b/MLEB/Babel/i18n/se.json @@ -4,10 +4,22 @@ "GerardM" ] }, - "babel-1-n": "Dát geavaheaddji máhttá [[$1|veaháš]] [[$2|sámegiela]]", - "babel-2-n": "Dát geavaheaddji máhttá [[$2|sámegiela]] [[$1|viehka bures]]", - "babel-3-n": "Dát geavaheaddji máhttá [[$2|sámegiela]] [[$1|hui bures]]", - "babel-4-n": "Dát geavaheaddji máhttá [[$2|sámegiela]] [[$1|dego eatnigiela]]", - "babel-5-n": "Dát geavaheaddji máhttá [[$2|sámegiela]] [[$1|ámmátlaš dásis]]", - "babel-N-n": " Dát geavaheaddji máhttá [[$2|sámegiela]] [[$1|eatnigiellan]]" + "babel": "Gielladieđut", + "babel-url": "Project:Babel", + "babel-footer-url": ":Categeroy:Babel – Geavaheaddjit giela mielde", + "babel-0": "Dát geavaheaddji máhttá [[$2|$3]] [[$1|hui veaháš dahje ii máhte dan ollege]].", + "babel-1": "Dát geavaheaddji máhttá [[$1|veaháš]] [[$2|$3]].", + "babel-2": "Dát geavaheaddji máhttá [[$2|$3]] [[$1|viehka bures]].", + "babel-3": "Dát geavaheaddji máhttá [[$2|$3]] [[$1|hui bures]].", + "babel-4": "Dát geavaheaddji máhttá [[$2|$3]] [[$1|eatnigielat hupmi láhkai]].", + "babel-5": "Dát geavaheaddji máhttá [[$2|$3]] [[$1|ámmátlaš dásis]].", + "babel-N": "Dát geavaheaddji máhttá [[$2|$3]] [[$1|eatnigiellan]].", + "babel-0-n": "Dát geavaheaddji máhttá [[$2|davvisámegiela]] [[$1|hui veaháš dahje ii máhte dan ollege]].", + "babel-1-n": "Dát geavaheaddji máhttá [[$1|veaháš]] [[$2|davvisámegiela]]", + "babel-2-n": "Dát geavaheaddji máhttá [[$2|davvisámegiela]] [[$1|viehka bures]]", + "babel-3-n": "Dát geavaheaddji máhttá [[$2|davvisámegiela]] [[$1|hui bures]]", + "babel-4-n": "Dát geavaheaddji máhttá [[$2|davvisámegiela]] [[$1|dego eatnigiela]]", + "babel-5-n": "Dát geavaheaddji máhttá [[$2|davvisámegiela]] [[$1|ámmátlaš dásis]]", + "babel-N-n": " Dát geavaheaddji máhttá [[$2|davvisámegiela]] [[$1|eatnigiellan]]", + "babel-footer": "Geavaheaddjit giela mielde" } diff --git a/MLEB/Babel/i18n/sgs.json b/MLEB/Babel/i18n/sgs.json index ddc577bc..406e9611 100644 --- a/MLEB/Babel/i18n/sgs.json +++ b/MLEB/Babel/i18n/sgs.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Hugo.arg", "Kaganer", - "Kusurija", - "Hugo.arg" + "Kusurija" ] }, "babel-url": "Project:Babėliuons", diff --git a/MLEB/Babel/i18n/sh.json b/MLEB/Babel/i18n/sh.json index 8a4958f5..b8cced42 100644 --- a/MLEB/Babel/i18n/sh.json +++ b/MLEB/Babel/i18n/sh.json @@ -1,9 +1,10 @@ { "@metadata": { "authors": [ - "OC Ripper", + "Conquistador", "Kolega2357", - "Conquistador" + "OC Ripper", + "Vlad5250" ] }, "babel": "Babilonske korisničke informacije", @@ -12,7 +13,7 @@ "babel-footer-url": ":Kategorija:Babel - Korisnici po jeziku", "babel-autocreate-reason": "Automatsko stvaranje stranice kategorije [[$1|Babel]].", "babel-autocreate-text-levels": "Korisnici u ovoj kategoriji ukazuju da su vješti na razini $1 za jezik $2.", - "babel-autocreate-text-main": "Korisnici u ovoj kategoriji su označeni da imaju znanje $1 jezika.", + "babel-autocreate-text-main": "Korisnici u ovoj kategoriji označavaju poznavanje jezika „$1“.", "babel-0": "Ovaj korisnik [[$1|ne]] zna [[$2|$3]] (ili razumije sa znatnim poteškoćama).", "babel-1": "Ovaj korisnik zna [[$2|$3]] na [[$1|osnovnoj]] razini.", "babel-2": "Ovaj korisnik zna [[$2|$3]] na [[$1|srednjoj]] razini.", diff --git a/MLEB/Babel/i18n/shi.json b/MLEB/Babel/i18n/shi.json index a4602787..9675c487 100644 --- a/MLEB/Babel/i18n/shi.json +++ b/MLEB/Babel/i18n/shi.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Dalinanir", - "Amara-Amaziɣ" + "Amara-Amaziɣ", + "Dalinanir" ] }, "babel": "ⵓⵎⵍⴰⵏ ⴱⴰⴱⵉⵍ ⵏ ⵓⵙⵎⵔⴰⵙ", diff --git a/MLEB/Babel/i18n/sjd.json b/MLEB/Babel/i18n/sjd.json new file mode 100644 index 00000000..b31bf5cb --- /dev/null +++ b/MLEB/Babel/i18n/sjd.json @@ -0,0 +1,22 @@ +{ + "@metadata": { + "authors": [ + "Meerrahtar" + ] + }, + "babel-url": "Project:Вавилон", + "babel-0": "Тэдта кӯскнэй [[$1|эйй тӣдҍ]] [[$2|$3]] (вай оа̄нташт со̄н моа̄дтъенне).", + "babel-1": "Тэдта кӯскнэй [[$1|ва̄нас]] оа̄нташт [[$2|$3]].", + "babel-2": "Тэнна кӯскнэй те̄дт [[$2|$3]] [[$1|элля нюэзесь]].", + "babel-3": "Тэдта кӯскнэй [[$2|$3]] [[$1|ва̄лтъенне]] оанн.", + "babel-4": "Тэдта кӯскнэй те̄дт [[$2|#3]] [[$1|маль ко̄ххт ӣжесь е̄ннҍкӣл]].", + "babel-5": "Тэдта кӯскнэй оанн [[$2|$3]] [[$1|чепельт]].", + "babel-N": "[[$2|#3]] лӣ тэнна кӯскнэй [[$1|е̄ннҍкӣлл]].", + "babel-0-n": "Тэдта кӯскнэй [[$1|эйй тӣдҍ]] [[$2|кӣллт са̄мь кӣл]] (вай моа̄дтъенне оа̄нташт са̄мас).", + "babel-1-n": "Тэдта кӯскнэй [[$1|ва̄нас]] оа̄нташт [[$2|кӣллт са̄мь кӣл]].", + "babel-2-n": "Тэнна кӯскнэй те̄дт [[$2|кӣллт са̄мь кӣл]] [[$1|элля нюэзесь]].", + "babel-3-n": "Тэдта кӯскнэй [[$2|кӣллт са̄мь кӣл]] [[$1|ва̄лтъенне]] оанн.", + "babel-4-n": "Тэдта кӯскнэй те̄дт [[$2|кӣллт са̄мь кӣл]] [[$1|маль ко̄ххт ӣжесь е̄ннҍкӣл]].", + "babel-5-n": "Тэдта кӯскнэй оанн [[$2|кӣллт са̄мь кӣл]] [[$1|чепельт]].", + "babel-N-n": "[[$2|Кӣллт са̄мь кӣлл]] лӣ тэнна кӯскнэй [[$1|е̄ннҍкӣлл]]." +} diff --git a/MLEB/Babel/i18n/sk.json b/MLEB/Babel/i18n/sk.json index 045174ee..6b96d049 100644 --- a/MLEB/Babel/i18n/sk.json +++ b/MLEB/Babel/i18n/sk.json @@ -1,11 +1,12 @@ { "@metadata": { "authors": [ + "Danny B.", "Helix84", "Meno25", "Rudko", + "Spider 001757", "Sudo77(new)", - "Danny B.", "Teslaton" ] }, @@ -15,7 +16,7 @@ "babel-footer-url": ":Kategória:Babylon – Používatelia podľa jazyka", "babel-autocreate-reason": "Automaticky sa vytvára stránka kategórie [[$1|Babylon]].", "babel-autocreate-text-levels": "Používatelia v tejto kategórii označili svoju úroveň v jazyku $2 ako $1.", - "babel-autocreate-text-main": "Používatelia v tejto kategórii označili, že poznajú jazyk $1.", + "babel-autocreate-text-main": "Používatelia v tejto kategórii sa prihlásili k znalosti jazyka $1.", "babel-0": "Tento používateľ [[$1|nemá]] znalosti [[$2|{{GRAMMAR:genitív|$3}}]] (alebo jej rozumie so značnými problémami).", "babel-1": "Tento používateľ má [[$1|základné]] znalosti [[$2|{{GRAMMAR:genitív|$3}}]].", "babel-2": "Tento používateľ má [[$1|stredné]] znalosti [[$2|{{GRAMMAR:genitív|$3}}]].", diff --git a/MLEB/Babel/i18n/sl.json b/MLEB/Babel/i18n/sl.json index b59b7763..e861ffee 100644 --- a/MLEB/Babel/i18n/sl.json +++ b/MLEB/Babel/i18n/sl.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Daimona Eaytoy", "Dbc334", "Smihael", - "Daimona Eaytoy", "Yerpo" ] }, diff --git a/MLEB/Babel/i18n/so.json b/MLEB/Babel/i18n/so.json index 70636e87..bd30e445 100644 --- a/MLEB/Babel/i18n/so.json +++ b/MLEB/Babel/i18n/so.json @@ -1,9 +1,11 @@ { "@metadata": { "authors": [ + "Abdullahi", "GerardM" ] }, + "babel-footer-url": ":Qeybta:Babel - Isticmaalayaasha luqad ahaan", "babel-0-n": "Isticmaalahan waxba kama yaqaano af [[$2|Soomaaliga]] (ama wuxuu ka yaqaanaa wax aad iyo [[$1|aad u yar]]).", "babel-1-n": "Isticmaalahan wuxuu [[$2|Soomaaliga]] ugu hadlaa si [[$1|aad u yar]].", "babel-2-n": "Isticmaalahan wuxuu [[$2|Soomaaliga]] ugu hadlaa si [[$1|dhaxdhaxaad ah]].", diff --git a/MLEB/Babel/i18n/sq.json b/MLEB/Babel/i18n/sq.json index 144f428a..2091c4e1 100644 --- a/MLEB/Babel/i18n/sq.json +++ b/MLEB/Babel/i18n/sq.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ + "Arianit", "Dori", "Eagleal", "Olsi", - "Vinie007", - "Arianit" + "Vinie007" ] }, "babel": "Informacioni Babel i Përdoruesit", diff --git a/MLEB/Babel/i18n/sr-ec.json b/MLEB/Babel/i18n/sr-ec.json index 33c93a7b..15351d81 100644 --- a/MLEB/Babel/i18n/sr-ec.json +++ b/MLEB/Babel/i18n/sr-ec.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ - "Rancher", - "Михајло Анђелковић", + "BadDog", "Josep Maria Roca Peña", - "BadDog" + "Rancher", + "Михајло Анђелковић" ] }, "babel": "Језичке кутијице", diff --git a/MLEB/Babel/i18n/sr-el.json b/MLEB/Babel/i18n/sr-el.json index f8e4dc6a..6d098122 100644 --- a/MLEB/Babel/i18n/sr-el.json +++ b/MLEB/Babel/i18n/sr-el.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Josep Maria Roca Peña", "Michaello", - "Rancher", - "Josep Maria Roca Peña" + "Rancher" ] }, "babel": "Jezičke kutijice", diff --git a/MLEB/Babel/i18n/srn.json b/MLEB/Babel/i18n/srn.json index a271b108..19169e8b 100644 --- a/MLEB/Babel/i18n/srn.json +++ b/MLEB/Babel/i18n/srn.json @@ -1,5 +1,7 @@ { - "@metadata": [], + "@metadata": { + "authors": [] + }, "babel-0": "Disi masyin abi [[$1|no takifustani]] fu a [[$2|$3]] (efu kan a frustan nanga pasar muliki).", "babel-0-n": "Disi masyin abi [[$1|no takifustani]] fu a [[$2|Sranantongo]] (efu kan a frustan nanga pasar muliki)." } diff --git a/MLEB/Babel/i18n/st.json b/MLEB/Babel/i18n/st.json index 5149a8b6..b6c80c7f 100644 --- a/MLEB/Babel/i18n/st.json +++ b/MLEB/Babel/i18n/st.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Purodha", - "Mapoza2" + "Mapoza2", + "Purodha" ] }, "babel-0-n": "Motho enwa o tseba ho ngola 0 [[$2|Sesotho]].", diff --git a/MLEB/Babel/i18n/sty.json b/MLEB/Babel/i18n/sty.json index 21430fab..f77f39f4 100644 --- a/MLEB/Babel/i18n/sty.json +++ b/MLEB/Babel/i18n/sty.json @@ -5,14 +5,25 @@ ] }, "babel": "Телләр пелеү туры ҡатнашыуцының мәләмәте", + "babel-desc": "Ҡатнашыуцы пеләтеген телләр туры мәлмәк блокны аптаматик йасай алатығын \"Parser\" #babel функцияны ҡушаты, пашҡа шаблоннарены та тоташтыраты.", "babel-url": "Project:Телләр пелеү", "babel-footer-url": ":Категория:Телләр пелеү - Телтән ҡатнашыуцылар", "babel-autocreate-reason": "[[$1|Телләр пелеү]] категорияның питен аптаматик йасағалы.", "babel-autocreate-text-levels": "Пы категорияның ҡатнашыуцылары $2ны $1 ҡат үнәрле игәнен күргәсәтеләр.", "babel-autocreate-text-main": "Пы категорияның ҡатнашыуцылары $1ны пелеүләрен күргәсәтеләр.", - "babel-N": "Пы ҡатнашыуцының [[Category:Ҡатнашыуцы sty-T|туған]] теле [[Category:sty:телтән:ҡатнашыуцылар|Сыбыр]] тел.", - "babel-footer": "Телтән ҡатнашыуцылар", - "apihelp-query+babel-description": "Ҡатнашыуцы пеләтеген телләр туры мәләмәт алғалы.", - "apihelp-query+babel-summary": "Нитәй телләрне ҡатнашыуцы пеләте туры мәләмәт алғалы", - "apihelp-query+babel-param-user": "Мәләмәт алыу өцөн ҡатнашыуцы" + "babel-0": "[[$2|$3]] телне [[$1|пелмәйте]] (ҡыйын аңлайты).", + "babel-1": "[[$2|$3]] телне [[$1|пашлапцытай]] пеләте.", + "babel-2": "[[$2|$3]] телне [[$1|уртаҡца]] пеләте.", + "babel-3": "[[$2|$3]] телне [[$1|йаҡшы]] пеләте.", + "babel-4": "[[$2|$3]] тел үс [[$1|туған тел]]ен шигелле пеләте.", + "babel-5": "[[$2|$3] телне [[$1|профессиональ]] пеләте.", + "babel-N": "[[$1|Туған теле]] — [[$2|$3]]", + "babel-0-n": "[[$2|Сыбыр тел]]не [[$1|пелмәйте]] (ҡыйын аңлайты)", + "babel-1-n": "[[$2|Сыбыр тел]]не [[$1|пашлапцы]]тай пеләте.", + "babel-2-n": "[[$2|Сыбыр тел]]не [[$1|уртаҡца]] пеләте.", + "babel-3-n": "[[$2|Сыбыр тел]]не [[$1|йаҡшы]] пеләте.", + "babel-4-n": "[[$2|Сыбыр тел]]не үс [[$1|туған тел]]ен шигелле пеләте.", + "babel-5-n": "[[$2|Сыбыр тел]]не [[$1|профессиональ]] пеләте.", + "babel-N-n": "[[$1|Туған тел]]е [[$2|Сыбыр тел]].", + "babel-footer": "Телтән ҡатнашыуцылар" } diff --git a/MLEB/Babel/i18n/sv.json b/MLEB/Babel/i18n/sv.json index b3aa70ea..1a324071 100644 --- a/MLEB/Babel/i18n/sv.json +++ b/MLEB/Babel/i18n/sv.json @@ -9,8 +9,8 @@ "Lokal Profil", "M.M.S.", "Najami", - "WikiPhoenix", - "Skalman" + "Skalman", + "WikiPhoenix" ] }, "babel": "Babel-användarinformation", @@ -35,9 +35,5 @@ "babel-5-n": "Den här användaren har [[$1|professionella]] kunskaper i [[$2|svenska]].", "babel-N-n": "Den här användaren har [[$2|svenska]] som [[$1|modersmål]].", "babel-template": "Template:Användare $1", - "babel-footer": "Användare efter språk", - "apihelp-query+babel-description": "Hämta information om vilka språk användaren kan", - "apihelp-query+babel-summary": "Hämta information om vilka språk användaren kan", - "apihelp-query+babel-param-user": "Användare att hämta information om", - "apihelp-query+babel-example-1": "Hämta Babel-information för användaren Example" + "babel-footer": "Användare efter språk" } diff --git a/MLEB/Babel/i18n/szl.json b/MLEB/Babel/i18n/szl.json index 8d7e3a40..220c82c5 100644 --- a/MLEB/Babel/i18n/szl.json +++ b/MLEB/Babel/i18n/szl.json @@ -10,7 +10,7 @@ "babel-desc": "Przidŏwŏ fōnkcyjõ parsera #babel, coby przizwolić na autōmatycznõ gyneracyjõ rōmki z informacyjami ô gŏdkowych abo inkszych szprymach ôd używŏcza.", "babel-url": "Project:Babel", "babel-footer-url": "Kategoria:Wikipedysty podug godki", - "babel-autocreate-reason": "Zajta kategoryji [[$1|Wjeży Babel]]", + "babel-autocreate-reason": "Autōmatyczne tworzynie strōny kategoryje [[$1|wieży Babel]].", "babel-autocreate-text-levels": "Używŏcze we tyj kategoryji ôznŏczyli swoje szprymy we gŏdce $2 za $1.", "babel-autocreate-text-main": "Używacze kerzi sům w tej kategoryji poradzům godać w godce $1.", "babel-0": "Tyn użytkowńik [[$1|ńy godo]] w godce [[$2|$3]] (abo mo s ńům wjelge trudnośći).", @@ -23,5 +23,5 @@ "babel-2-n": "Tyn użytkowńik mo [[$1|strzedńe]] wjadůmośći [[$2|ślůnskij godki]].", "babel-3-n": "Tyn użytkowńik mo [[$1|fest dobre]] wjadůmośći [[$2|ślůnskij godki]].", "babel-4-n": "Tyn użytkowńik wjy [[$2|ślůnsko godka]] [[$1|bezmałaś jak uojczysto]].", - "babel-N-n": "[[$2|Ślůnski]] je [[$1|uojczystům godkům]] tygo użytkowńika." + "babel-N-n": "[[$2|Ślōnski]] to [[$1|ôjczysty jynzyk]] ôd {{GENDER:$4|tego używŏcza|tyj używŏczki}}." } diff --git a/MLEB/Babel/i18n/szy.json b/MLEB/Babel/i18n/szy.json new file mode 100644 index 00000000..9e8b0491 --- /dev/null +++ b/MLEB/Babel/i18n/szy.json @@ -0,0 +1,30 @@ +{ + "@metadata": { + "authors": [ + "Benel", + "Bunukwiki" + ] + }, + "babel": "Babel misaungayay a cesyun", + "babel-desc": "nipabeli #babel mapulita taneng malunuk masanga’ cacay tanengay pisaungay pakuniza misanga’ taazihan mitudungaya misaungayay kamu cesyun a langat", + "babel-url": "Project:Babel", + "babel-footer-url": ":Category:Babel - misaungayay (ahizan tu kamu)", + "babel-autocreate-reason": "lunuk patizeng [[$1|Babel]] kakuniza kasabelih.", + "babel-autocreate-text-levels": "i tina kakuniza a misaungayay dayhiw kya izaway kasaselel $1 a $2 kamu a icel.", + "babel-autocreate-text-main": "ilabu tina kakuniza a misaungayay dayhiw niza a kamu $1 matinengay a kasaselal.", + "babel-0": "tina misaungayay [[$1|caay]] matineng saca caay katinengen [[$2|$3]] (saca izaw ku kakaliyuhan matineng).", + "babel-1": "tina misaungayay matineng [[$1|angangan]] da’su a [[$2|$3]].", + "babel-2": "tina misaungayay matineng [[$1|teban]] da’su a [[$2|$3]].", + "babel-3": "tina misaungayay matineng [[$1|tapabaw]] da’su a [[$2|$3]].", + "babel-4": "tina misaungayay matineng [[$1|micapi kamu-nina]] da’su a [[$2|$3]].", + "babel-5": "tina misaungayay matineng [[$1|mitesekay]] da’su a [[$2|$3]]", + "babel-N": "tina misaungayay matineng [[$1|kamu nina]] da’su a [[$2|$3]].", + "babel-0-n": "tina misaungayay [[$1|caay]] matineng saca kaliyuhan matineng [[$2|Taywan Hulam a kamu]] (saca izaw ku cacay a kaliyuhan matineng).", + "babel-1-n": "tina misaungayay matineng [[$1|tapabaway a cakat]] da’su a [[$2|kamu nu Sakizaya]].", + "babel-2-n": "tina misaungayay matineng [[$1|teban a cakat]] da’su a [[$2|kamu nu Sakizya]].", + "babel-3-n": "tina misaungayay matineng [[$1| tapabaway a cakat ]] da’su a [[$2|kamu nu Sakizaya]].", + "babel-4-n": "tina misaungayay matineng [[$1|micapi tu kamu nu ina]] tanusukay [[$2|kamu nu Sakizaya]]", + "babel-5-n": "tina misaungayay matineng [[$1|mitesekay]] da’su a [[$2|kamu nu Sakizaya]].", + "babel-N-n": "tina misaungayay matineng[[$1|kamu-nina]] da’su a [[$2|kamu nu Sakizaya]].", + "babel-footer": "misaungayay (ahizan tu kamu)" +} diff --git a/MLEB/Babel/i18n/tg-cyrl.json b/MLEB/Babel/i18n/tg-cyrl.json index de71a642..24decad5 100644 --- a/MLEB/Babel/i18n/tg-cyrl.json +++ b/MLEB/Babel/i18n/tg-cyrl.json @@ -1,18 +1,20 @@ { "@metadata": { "authors": [ + "Curasao", "Ibrahim", - "ZxxZxxZ", - "Curasao" + "ToJack", + "ZxxZxxZ" ] }, - "babel": "Иттилооти Корбари Бобул", - "babel-desc": "Дастури таҷзеҳгарро #babel изофа мекунад, ки имкони эҷоди худкори ҷаъбаҳои коргарии бобул бо қобилияти ғунҷонидани шаблонҳои дихоҳро фароҳам мекунад", - "babel-url": "Project:Бобул", - "babel-footer-url": ":Гурӯҳ:Бобил - корбарон ба забонҳо", + "babel": "Иттилооти забонии корбар", + "babel-desc": "Дастури таҷзеҳгарро #babel изофа мекунад, ки имкони эҷоди худкори ҷаъбаҳои коргарии бобул бо қобилияти ғунҷонидани шаблонҳои дилхоҳро фароҳам мекунад", + "babel-url": "Project:Забонҳои корбар", + "babel-footer-url": ":Гурӯҳ:Бобил - корбарон аз рӯи забонҳо", "babel-autocreate-reason": "Сохтани автоматӣ саҳифаи гурӯҳӣ [[$1|Бобил]].", "babel-autocreate-text-levels": "Корбарон дар ин гурӯҳ нишон медиҳандки, дар унҳо ҳунарӣ $1 барои забони $2 ҳаст.", "babel-autocreate-text-main": "Корбарони ин гурӯҳ нишон медиҳанд дониши забони $1.", + "babel-autocreate-user": "Эҷоди бобул ба таври худкор", "babel-0": "Ин корбар [[$2|$3]]ро [[$1|намефаҳмад]] (ё онро бо душворӣ мефаҳмад).", "babel-1": "Ин корбар [[$2|$3]]ро дар сатҳи [[$1|муқаддамотӣ]] мефаҳмад.", "babel-2": "Ин корбар [[$2|$3]]ро дар сатҳи [[$1|миёна]] мефаҳмад.", @@ -20,5 +22,13 @@ "babel-4": "Корбари мазкур ба '''[[$2|тоҷикӣ]]''' дар сатҳи '''[[$1|хуб]]''' монанди қариб забони модариаш медонад.", "babel-5": "[[$2|$3]] — [[$1|бо сатҳи дониши олии]]", "babel-N": "[[$2|$3]] — [[$1|забони модари]]", - "babel-N-n": "Забони [[$1|модарии]] ин корбар [[$2|тоҷикӣ]] аст." + "babel-0-n": "Корбари мазкур [[$2|забони тоҷикиро]] [[$1|намефаҳмад]] (ё бо душворӣ мефаҳмад).", + "babel-1-n": "Корбари мазкур [[$1|дар сатҳи муқаддамоти]] [[$2|забони тоҷикиро]] медонад.", + "babel-2-n": "Корбари мазкур [[$2|тоҷикиро]] [[$1|хуб]] медонад.", + "babel-3-n": "Корбари мазкур дар [[$1|сатҳи пешрафта]] [[$2|тоҷикиро]] мефаҳмад.", + "babel-4-n": "Корбари мазкур [[$1|тоҷикиро]] чун [[$2|забони модариаш медонад]].", + "babel-5-n": "Корбари мазкур дар сатҳи [[$1|олӣ]] [[$2|тоҷикиро]] мефаҳмад.", + "babel-N-n": "Забони [[$1|модарии]] ин корбар [[$2|тоҷикӣ]] аст.", + "babel-template": "Template:User $1", + "babel-footer": "Корбарон аз рӯи забонҳо" } diff --git a/MLEB/Babel/i18n/th.json b/MLEB/Babel/i18n/th.json index 05da442c..027be003 100644 --- a/MLEB/Babel/i18n/th.json +++ b/MLEB/Babel/i18n/th.json @@ -1,7 +1,9 @@ { "@metadata": { "authors": [ + "Aefgh39622", "Akkhaporn", + "Geonuch", "Horus", "Manop", "Passawuth" @@ -10,10 +12,10 @@ "babel": "ข้อมูลภาษาของผู้ใช้", "babel-desc": "ใส่ฟังก์ชัน #babel เพื่อที่จะใส่คอลัมน์กล่องผู้ใช้บาเบลอัตโนมัติ รวมทั้งความสามารถที่จะใส่แม่แบบที่ต้องการได้ด้วย", "babel-url": "Project:บาเบล", - "babel-footer-url": ":หมวดหมู่:บาเบล - ผู้ใช้ตามภาษา", + "babel-footer-url": ":หมวดหมู่:บาเบล - ผู้ใช้แบ่งตามภาษา", "babel-autocreate-reason": "สร้างหน้าหมวดหมู่[[$1|บาเบล]]อัตโนมัติ", "babel-autocreate-text-levels": "ผู้ใช้ในหมวดหมู่นี้ มีทักษะในการใช้ภาษา$2 ในระดับที่ $1", - "babel-autocreate-text-main": "ผู้ใช้ในหมวดหมมู่นี้ มีความรู้เกี่ยวกับภาษา$1", + "babel-autocreate-text-main": "ผู้ใช้ในหมวดหมู่นี้มีความรู้เกี่ยวกับภาษา$1", "babel-0": "ผู้ใช้คนนี้[[$1|ไม่มี]]ความรู้เกี่ยวกับ[[$2|$3]] (หรือเข้าใจได้ด้วยความยากลำบาก)", "babel-1": "ผู้ใช้คนนี้มีความรู้[[$1|พื้นฐาน]]เกี่ยวกับ[[$2|$3]]", "babel-2": "ผู้ใช้คนนี้มีความรู้[[$1|ระดับกลาง]]เกี่ยวกับ[[$2|$3]]", diff --git a/MLEB/Babel/i18n/tly.json b/MLEB/Babel/i18n/tly.json index 6123debb..309a2666 100644 --- a/MLEB/Babel/i18n/tly.json +++ b/MLEB/Babel/i18n/tly.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "JHeydar", + "Patriot Kur", "Vugar 1981", "Гусейн" ] @@ -9,7 +10,7 @@ "babel": "Babil iştirokəkə məlumot", "babel-desc": "Ziyod kardeydə analiz kardey funksiyə #babel, haşteydə avtomatik ofəye sun de zıvonon barədə məlumoti iyən de mımkunoti co ğəlibon daxıl karde", "babel-url": "Project:Babil", - "babel-footer-url": ":Category:Babil- iştirokəkon zıvononədə", + "babel-footer-url": ":Category:Babil - iştirokəkon zıvononədə", "babel-autocreate-reason": "Səhifə avtomatik ofəye [[$1|Babil]] tispirədə.", "babel-autocreate-text-levels": "İştirokəkon çe ın tispiriku işorә kardəşone zınəyon səviyyə $1 bo zıvoni $2.", "babel-autocreate-text-main": "İştirokəkon bı tispirədə zıvoni zınəy işorə kardəşone $1.", diff --git a/MLEB/Babel/i18n/tr.json b/MLEB/Babel/i18n/tr.json index 7464c4fb..53e3622a 100644 --- a/MLEB/Babel/i18n/tr.json +++ b/MLEB/Babel/i18n/tr.json @@ -1,20 +1,24 @@ { "@metadata": { "authors": [ + "BaRaN6161 TURK", "Bombola", + "Grkn gll", + "Hedda", "Joseph", "Karduelis", "Khutuck", - "LuCKY" + "LuCKY", + "Vito Genovese" ] }, "babel": "Babil kullanıcı bilgileri", - "babel-desc": "Özel şablonlar içerme özelliği olan Babil kullanıcı kutusu sütununun otomatik oluşturulması için #babel derleyici fonksiyonunu ekler", + "babel-desc": "Özel şablonlar içerme özelliği olan Babil kullanıcı kutusu sütununun otomatik oluşturulması için #babel derleyici işlevlerini ekler", "babel-url": "Project:Babil", "babel-footer-url": ":Kategori:Babil - dillere göre kullanıcılar", "babel-autocreate-reason": "Otomatik olarak [[$1|Babil]] kategori sayfası oluşturuluyor.", "babel-autocreate-text-levels": "Bu kategorideki kullanıcılar $1 seviyede $2 dilini bildiklerini belirtiyor.", - "babel-autocreate-text-main": "Bu kategorideki kullanıcılar $1 dilini bildiklerini belirtiyor.", + "babel-autocreate-text-main": "Bu kategorideki kullanıcılar, $1 dil bilgisini gösterir.", "babel-autocreate-user": "Babil OtomatikOluştur", "babel-0": "Bu kullanıcı [[$1|hiç]] [[$2|$3]] bilmiyor (ya da bir hayli zor anlıyor).", "babel-1": "Bu kullanıcı [[$1|temel düzeyde]] [[$2|$3]] bilir.", diff --git a/MLEB/Babel/i18n/tt-cyrl.json b/MLEB/Babel/i18n/tt-cyrl.json index 830c8fd0..acba1aa5 100644 --- a/MLEB/Babel/i18n/tt-cyrl.json +++ b/MLEB/Babel/i18n/tt-cyrl.json @@ -1,30 +1,31 @@ { "@metadata": { "authors": [ + "Ерней", "Ильнар", "Рашат Якупов" ] }, - "babel": "Катнашучының телләр белү турындагы мәгълумат", + "babel": "Кулланучы телләре (Вавилон)", "babel-desc": "Кулланучы белгән телләр буенча автоматик калып ясаучы парсер #babel коралын өсти.", "babel-url": "Project:Вавилон", - "babel-footer-url": ":Category:Телләр буенча кулланучылар", + "babel-footer-url": ":Category:Кулланучылар телләр буенча", "babel-autocreate-reason": "[[$1|Вавилон]] төркемендә автоматик бит ясау.", "babel-autocreate-text-levels": "Әлеге төркемдәге кулланучылар «$2» телен $1 дәрәҗәдә белүен күрсәткән.", "babel-autocreate-text-main": "Әлеге төркемдәге кулланучылар «$1» телен белүен күрсәткән.", - "babel-0": "[[$2|$3]] — [[$1|белми]] (яисә бөтенләй дә аңламый)", - "babel-1": "[[$2|$3]] — [[$1|башлангыч]] дәрәҗә.", - "babel-2": "[[$2|$3]] — [[$1|уратача]] дәрәҗә.", - "babel-3": "[[$2|$3]] — [[$1|яхшы]] белә.", - "babel-4": "[[$2|$3]] — [[$1|бик әйбәт]] белә.", - "babel-5": "[[$2|$3]] — [[$1|һөнәри дәрәҗәдә]] белә.", - "babel-N": "[[$2|$3]] — [[$1|туган теле]]", - "babel-0-n": "Бу кулланучы [[$2|татарча]] [[$1|белми]] (яисә бөтенләй дә аңламый).", - "babel-1-n": "Бу кулланучы [[$2|татарча]] [[$1|башлангыч дәрәҗәдә]] белә.", - "babel-2-n": "Бу кулланучы [[$2|татарча]] [[$1|уртача дәрәҗәдә]] белә.", - "babel-3-n": "Бу кулланучы [[$2|татарча]] [[$1|ирекле дәрәҗәдә]] сөйләшә.", - "babel-4-n": "Бу кулланучы [[$2|татарча]] [[$1|бик әйбәт]] белә.", - "babel-5-n": "Бу кулланучы [[$2|татарча]] [[$1|һөнәри дәрәҗәдә]] белә.", + "babel-0": "[[$2|$3]] — [[$1|белми]] (яки бик начар аңлый)", + "babel-1": "[[$2|$3]] — [[$1|башлангыч дәрәҗәдә]].", + "babel-2": "[[$2|$3]] — [[$1|уртача дәрәҗәдә]].", + "babel-3": "[[$2|$3]] — [[$1|югары дәрәҗәдә]].", + "babel-4": "[[$2|$3]] — [[$1|туган теле дәрәҗәсендә]].", + "babel-5": "[[$2|$3]] — [[$1|һөнәри дәрәҗәдә]].", + "babel-N": "[[$2|$3]] — [[$1|туган тел]].", + "babel-0-n": "Бу кулланучы [[$2|татарча]] [[$1|белми]] (яки бик начар аңлый).", + "babel-1-n": "Бу кулланучы [[$2|татарча]] [[$1|башлангыч дәрәҗәдә]] белә.", + "babel-2-n": "Бу кулланучы [[$2|татарча]] [[$1|уртача дәрәҗәдә]] белә.", + "babel-3-n": "Бу кулланучы [[$2|татарча]] [[$1|югары дәрәҗәдә]] белә.", + "babel-4-n": "Бу кулланучы [[$2|татарча]] [[$1|туган теле дәрәҗәсендә]] белә.", + "babel-5-n": "Бу кулланучы [[$2|татарча]] [[$1|һөнәри дәрәҗәдә]] белә.", "babel-N-n": "Бу кулланучы өчен [[$2|татар теле]] [[$1|туган тел]].", - "babel-footer": "Телләр буенча кулланучылар" + "babel-footer": "Кулланучылар телләр буенча" } diff --git a/MLEB/Babel/i18n/udm.json b/MLEB/Babel/i18n/udm.json index 42eb1e05..48f430d6 100644 --- a/MLEB/Babel/i18n/udm.json +++ b/MLEB/Babel/i18n/udm.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Irus", "Kaganer", "Purodha", - "Irus", "Wadorgurt" ] }, diff --git a/MLEB/Babel/i18n/uk.json b/MLEB/Babel/i18n/uk.json index d18d0621..fd1337c9 100644 --- a/MLEB/Babel/i18n/uk.json +++ b/MLEB/Babel/i18n/uk.json @@ -8,10 +8,10 @@ "Base", "Microcell", "Olvin", + "Piramidion", "Sodmy", - "Тест", "Ата", - "Piramidion" + "Тест" ] }, "babel": "Відомості про мови користувача (Вавилон)", @@ -36,9 +36,5 @@ "babel-5-n": "{{GENDER:$4|Цей користувач|Ця користувачка}} [[$1|професійно]] володіє [[$2|українською мовою]].", "babel-N-n": "Для {{GENDER:$4|цього користувача|цієї користувачки}} [[$2|українська мова]] є [[$1|рідною]].", "babel-template": "Template:User $1", - "babel-footer": "Користувачі за мовою", - "apihelp-query+babel-description": "Отримати інформацію про мови, якими володіє користувач", - "apihelp-query+babel-summary": "Отримати інформацію про те, якими мовами володіє користувач", - "apihelp-query+babel-param-user": "Користувач, про якого отримати інформацію", - "apihelp-query+babel-example-1": "Отримати Babel-інформацію про користувача Example" + "babel-footer": "Користувачі за мовою" } diff --git a/MLEB/Babel/i18n/ur.json b/MLEB/Babel/i18n/ur.json index 12c9c5bf..6e0adfc4 100644 --- a/MLEB/Babel/i18n/ur.json +++ b/MLEB/Babel/i18n/ur.json @@ -2,13 +2,13 @@ "@metadata": { "authors": [ "GerardM", + "Hindustanilanguage", "Istabani", + "Muhammad Shuaib", "Noor2020", - "محبوب عالم", - "Hindustanilanguage", "Stryn", "عرفان ارشد", - "Muhammad Shuaib" + "محبوب عالم" ] }, "babel": "بابل معلومات صارف", diff --git a/MLEB/Babel/i18n/vec.json b/MLEB/Babel/i18n/vec.json index 386dbe74..751b85cc 100644 --- a/MLEB/Babel/i18n/vec.json +++ b/MLEB/Babel/i18n/vec.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Candalua", + "Fierodelveneto", "Gloria sah" ] }, @@ -11,7 +12,7 @@ "babel-footer-url": ":Category:Babel - Utenti par lengua", "babel-autocreate-reason": "Creo automaticamente la pàxena de la categoria [[$1|Babel]].", "babel-autocreate-text-levels": "I utenti in sta categoria i gà indicà de verghe un livèl de conossensa $1 de la lengua $2.", - "babel-autocreate-text-main": "I utenti in sta categoria i gà indicà che i conosse la lengua $1.", + "babel-autocreate-text-main": "I utenti in sta categoria i dixe el so łiveło de conosensa in $1.", "babel-0": "Sto utente qua [[$1|no'l parla]] par gnente el [[$2|$3]] (o el lo capisse con gran fadiga).", "babel-1": "Sto utente qua el parla [[$1|na s-cianta]] el [[$2|$3]].", "babel-2": "Sto utente qua el parla [[$1|'bastansa ben]] el [[$2|$3]].", diff --git a/MLEB/Babel/i18n/vls.json b/MLEB/Babel/i18n/vls.json index d2ede6d7..17827cc1 100644 --- a/MLEB/Babel/i18n/vls.json +++ b/MLEB/Babel/i18n/vls.json @@ -1,5 +1,7 @@ { - "@metadata": [], + "@metadata": { + "authors": [] + }, "babel-footer-url": ":Category:Babel - Gebrukers noa toaln", "babel-0": "Deze gebruker kan [[$1|niet te vet]] vele [[$2|$3]] klappn.", "babel-1": "Deze gebruker kan e [[$1|hêel klêen bitje]] e koutnansje voern in 't [[$2|$3]].", diff --git a/MLEB/Babel/i18n/vmf.json b/MLEB/Babel/i18n/vmf.json index ea6cba47..981cc67a 100644 --- a/MLEB/Babel/i18n/vmf.json +++ b/MLEB/Babel/i18n/vmf.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Silvicola", - "SabineCretella" + "SabineCretella", + "Silvicola" ] }, "babel": "Babel - dös ko dä Benudsä väschdeh unn schbrech", diff --git a/MLEB/Babel/i18n/wa.json b/MLEB/Babel/i18n/wa.json index 9201ae5e..9d7a934f 100644 --- a/MLEB/Babel/i18n/wa.json +++ b/MLEB/Babel/i18n/wa.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Lucyin", - "Srtxg", - "Reptilien.19831209BE1" + "Reptilien.19831209BE1", + "Srtxg" ] }, "babel": "Racsegnes Babel so l' {{GENDER:$1|uzeu|uzeuse|uzeu}}", @@ -28,9 +28,5 @@ "babel-5-n": "{{GENDER:$4|Cist uzeu|Ciste uzeuse}} ci kinoxhe li [[$2|walon]] [[$1|come ene djin d' mestî]]", "babel-N-n": "{{GENDER:$4|Cist uzeu est on [[$1|cåzant natif]]|Ciste uzeuse est ene [[$1|cåzante native]]}} do [[$2|walon]].", "babel-template": "Modele:Uzeu $1", - "babel-footer": "Uzeus pa lingaedje", - "apihelp-query+babel-description": "Obtini ds infôrmåcions so les cnoxhous lingaedjes di ci uzeu ci", - "apihelp-query+babel-summary": "Obtini ds infôrmåcions so les cnoxhous lingaedjes pa ci uzeu ci", - "apihelp-query+babel-param-user": "Uzeu la ki fåt-st obtini ds infôrmåcions", - "apihelp-query+babel-example-1": "Obtini ls infôrmåcions di Babel po l' uzeu Example" + "babel-footer": "Uzeus pa lingaedje" } diff --git a/MLEB/Babel/i18n/war.json b/MLEB/Babel/i18n/war.json index 4a14cb6e..e77cfb16 100644 --- a/MLEB/Babel/i18n/war.json +++ b/MLEB/Babel/i18n/war.json @@ -11,7 +11,7 @@ "babel-footer-url": ":Category:Babel - Mga gumaramit ha pinulongan", "babel-autocreate-reason": "Lugaring nga naghihimo hin [[$1|Babel]] kaarangay nga pakli.", "babel-autocreate-text-levels": "An mga gumaramit hinin nga kaarangay in nagpapasabot hin ira katupngan $1 nga kabatiran para ha yinaknan nga $2.", - "babel-autocreate-text-main": "An mga gumaramit hinin nga kaarangay in nagpapasabot nga maaram han pinulongan nga $1.", + "babel-autocreate-text-main": "An mga gumaramit hinin nga kaarangay in nagpapasabot nga han ira pagkamaaram han pinulongan nga $1.", "babel-0": "Ini nga gumaramit in [[$1|waray]] sarabutan hin [[$2|$3]] (o nagkukuri pagsabot).", "babel-1": "Ini nga gumaramit in may-ada [[$1|hamabaw]] nga pananabutan han [[$2|$3]].", "babel-2": "Ini nga gumaramit in may-ada [[$1|tunga-tunga]] nga pananabutan han [[$2|$3]].", diff --git a/MLEB/Babel/i18n/yi.json b/MLEB/Babel/i18n/yi.json index 035a502e..0f8eecd0 100644 --- a/MLEB/Babel/i18n/yi.json +++ b/MLEB/Babel/i18n/yi.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "GerardM", - "פוילישער", - "Har-wradim" + "Har-wradim", + "פוילישער" ] }, "babel": "באבעל באניצער אינפארמאציע", diff --git a/MLEB/Babel/i18n/yue.json b/MLEB/Babel/i18n/yue.json index 56f0751d..6657cfbb 100644 --- a/MLEB/Babel/i18n/yue.json +++ b/MLEB/Babel/i18n/yue.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Deryck Chan", - "Shinjiman", - "Ktchankt" + "Ktchankt", + "Shinjiman" ] }, "babel": "巴別用戶資料", @@ -27,8 +27,5 @@ "babel-4-n": "呢位用戶有[[$1|接近母語程度]]嘅[[$2|廣東話]]知識。", "babel-5-n": "呢位用戶有[[$1|專業]]嘅[[$2|廣東話]]知識。", "babel-N-n": "呢位用戶嘅[[$1|母語]]係[[$2|廣東話]]。", - "babel-footer": "用戶(跟語言分類)", - "apihelp-query+babel-description": "攞用戶識咩嘢語言嘅資訊", - "apihelp-query+babel-param-user": "要攞相關資訊嘅用戶", - "apihelp-query+babel-example-1": "攞用戶 Example 嘅 Babel 資訊" + "babel-footer": "用戶(跟語言分類)" } diff --git a/MLEB/Babel/i18n/zgh.json b/MLEB/Babel/i18n/zgh.json new file mode 100644 index 00000000..23b0084f --- /dev/null +++ b/MLEB/Babel/i18n/zgh.json @@ -0,0 +1,15 @@ +{ + "@metadata": { + "authors": [ + "Mdb897" + ] + }, + "babel": "ⵜⵉⵏⵖⵎⵉⵙⵉⵏ ⴱⴰⴱⵍ ⵏ {{GENDER:$1|ⵓⵏⵙⵙⵎⵔⵙ|ⵜⵏⵙⵙⵎⵔⵙⵜ|ⵓⵏⵙⵙⵎⵔⵙ}}", + "babel-0-n": "{{GENDER:$4|ⴰⵏⵙⵙⵎⵔⵙ|ⵜⴰⵏⵙⵙⵎⵔⵙⵜ}} ⴰⴷ ⵓⵔ ⵖⵓⵔⵙ [[$1|ⴰⴽⴽⵯ]] ⴽⵔⴰ ⵏ ⵜⵓⵙⵙⵏⵉⵡⵉⵏ ⴳ [[$2|ⵜⵎⴰⵣⵉⵖⵜ]] (ⵏⵖ ⴰⵔ ⵜⵜ ⵉⵜⵜⵔⵎⴰⵙ ⵙ ⵓⵏⵎⴰⵔ ⵉⴳⴳⵓⵜⵏ).", + "babel-1-n": "{{GENDER:$4|ⴰⵏⵙⵙⵎⵔⵙ|ⵜⴰⵏⵙⵙⵎⵔⵙⵜ}} ⴰⴷ ⵖⵓⵔⵙ ⵜⵓⵙⵙⵏⵉⵡⵉⵏ [[$1|ⵜⴰⵙⵉⵍⴰⵏⵉⵏ]] ⴳ [[$2|ⵜⵎⴰⵣⵉⵖⵜ]].", + "babel-2-n": "{{GENDER:$4|ⴰⵏⵙⵙⵎⵔⵙ|ⵜⴰⵏⵙⵙⵎⵔⵙⵜ}} ⴰⴷ ⵖⵓⵔⵙ ⵜⵓⵙⵙⵏⵉⵡⵉⵏ [[$1|ⵜⵉⵏⴳⵔⴰⵏⵉⵏ]] ⴳ [[$2|ⵜⵎⴰⵣⵉⵖⵜ]].", + "babel-3-n": "{{GENDER:$4|ⴰⵏⵙⵙⵎⵔⵙ|ⵜⴰⵏⵙⵙⵎⵔⵙⵜ}} ⴰⴷ ⵖⵓⵔⵙ ⵜⵓⵙⵙⵏⵉⵡⵉⵏ [[$1|ⵢⴰⵜⵜⵓⵢⵏ]] ⴳ [[$2|ⵜⵎⴰⵣⵉⵖⵜ]].", + "babel-4-n": "{{GENDER:$4|ⴰⵏⵙⵙⵎⵔⵙ|ⵜⴰⵏⵙⵙⵎⵔⵙⵜ}} ⴰⴷ ⵖⵓⵔⵙ ⵜⵓⵙⵙⵏⵉⵡⵉⵏ [[$1|ⴰⵥⵏⵜ ⵏⵏ ⵏⵉⵜ ⵙ ⵜⵓⵜⵍⴰⵢⵜ ⵜⴰⵢⵎⵎⴰⵜ]] ⴳ [[$2|ⵜⵎⴰⵣⵉⵖⵜ]].", + "babel-5-n": "{{GENDER:$4|ⴰⵏⵙⵙⵎⵔⵙ|ⵜⴰⵏⵙⵙⵎⵔⵙⵜ}} ⴰⴷ ⵖⵓⵔⵙ ⵜⵓⵙⵙⵏⵉⵡⵉⵏ [[$1|ⵜⵉⵣⵣⵓⵍⵉⵏ]] ⴳ [[$2|ⵜⵎⴰⵣⵉⵖⵜ]].", + "babel-N-n": "{{GENDER:$4|ⴰⵏⵙⵙⵎⵔⵙ|ⵜⴰⵏⵙⵙⵎⵔⵙⵜ}} [[$1|ⵜⵓⵜⵍⴰⵢⵜ ⵜⴰⵢⵎⵎⴰⵜ]] ⵏⵙ ⵜⴳⴰ ⵜⵜ [[$2|ⵜⵎⴰⵣⵉⵖⵜ]]." +} diff --git a/MLEB/Babel/i18n/zh-hans.json b/MLEB/Babel/i18n/zh-hans.json index a8969fb3..37ea0634 100644 --- a/MLEB/Babel/i18n/zh-hans.json +++ b/MLEB/Babel/i18n/zh-hans.json @@ -5,16 +5,17 @@ "Gzdavidwong", "Hydra", "Jimmy xu wrk", + "Liuxinyu970226", "Shinjiman", "Shizhao", "Xiaomingyan", "Yfdyh000", - "Liuxinyu970226" + "大小李子" ] }, - "babel": "用户巴别信息", + "babel": "用户语文水平", "babel-desc": "增加一个#babel处理功能以支持自动产生一个巴别用户框栏及包含可自定化的模版", - "babel-url": "Project:巴别", + "babel-url": "Project:语文", "babel-footer-url": ":Category:巴别-用户(按语言)", "babel-autocreate-reason": "自动建立[[$1|巴别]]分类页。", "babel-autocreate-text-levels": "在此分类中的用户具有$2的$1级能力。", @@ -33,9 +34,5 @@ "babel-4-n": "这位用户的[[$2|简体中文]]达到[[$1|接近母语水平]]。", "babel-5-n": "这位用户的[[$2|简体中文]]达到[[$1|专业水平]]。", "babel-N-n": "[[$2|简体中文]]是这位用户的[[$1|母语]]。", - "babel-footer": "用户(按语言)", - "apihelp-query+babel-description": "获取有关用户理解的语言的信息", - "apihelp-query+babel-summary": "获取有关用户可以理解语言的信息", - "apihelp-query+babel-param-user": "要获取相关信息的用户", - "apihelp-query+babel-example-1": "获取用户Example的巴别信息" + "babel-footer": "用户(按语言)" } diff --git a/MLEB/Babel/i18n/zh-hant.json b/MLEB/Babel/i18n/zh-hant.json index 014c7e97..c93f3a86 100644 --- a/MLEB/Babel/i18n/zh-hant.json +++ b/MLEB/Babel/i18n/zh-hant.json @@ -1,19 +1,20 @@ { "@metadata": { "authors": [ + "A2093064", + "Cwek", + "Cwlin0416", "Justincheng12345", + "Kly", + "LNDDYL", "Liangent", + "Liuxinyu970226", "Mark85296341", "Shinjiman", "Waihorace", "Wrightbus", - "Cwlin0416", - "Cwek", - "LNDDYL", - "Zhxy 519", - "Liuxinyu970226", - "Kly", - "A2093064" + "Xiplus", + "Zhxy 519" ] }, "babel": "巴別使用者資訊", @@ -24,12 +25,12 @@ "babel-autocreate-text-levels": "在此分類中的使用者代表其擁有等級 $1 的 $2 語言能力。", "babel-autocreate-text-main": "在此分類中的使用者代表其對語言 $1 的瞭解程度。", "babel-0": "此使用者[[$1|不]]瞭解或很難理解 [[$2|$3]] (或者有一定程度難以理解)。", - "babel-1": "這位使用者會[[$1|基本]]水準的 [[$2|$3]]。", - "babel-2": "這位使用者會[[$1|中等]]水準的 [[$2|$3]]。", - "babel-3": "這位使用者會[[$1|進階]]水準的 [[$2|$3]]。", - "babel-4": "這位使用者會[[$1|接近母語]]水準的 [[$2|$3]]。", - "babel-5": "這位使用者會[[$1|專業]]水準的 [[$2|$3]]。", - "babel-N": "這位使用者會[[$1|母語]]水準的 [[$2|$3]]。", + "babel-1": "這位使用者會[[$1|基本]]水準的[[$2|$3]]。", + "babel-2": "這位使用者會[[$1|中等]]水準的[[$2|$3]]。", + "babel-3": "這位使用者會[[$1|進階]]水準的[[$2|$3]]。", + "babel-4": "這位使用者會[[$1|接近母語]]水準的[[$2|$3]]。", + "babel-5": "這位使用者會[[$1|專業]]水準的[[$2|$3]]。", + "babel-N": "這位使用者會[[$1|母語]]水準的[[$2|$3]]。", "babel-0-n": "此使用者[[$1|不]]瞭解或很難理解 [[$2|繁體中文]] (或者有一定程度難以理解)。", "babel-1-n": "這位使用者會[[$1|基本]]水準的 [[$2|繁體中文]]。", "babel-2-n": "這位使用者會[[$1|中等]]水準的 [[$2|繁體中文]]。", @@ -37,9 +38,5 @@ "babel-4-n": "這位使用者會[[$1|接近母語]]水準的 [[$2|繁體中文]]。", "babel-5-n": "這位使用者會[[$1|專業]]水準的 [[$2|繁體中文]]。", "babel-N-n": "這位使用者會[[$1|母語]]水準的 [[$2|繁體中文]]。", - "babel-footer": "使用者 (依語言)", - "apihelp-query+babel-description": "取得有關使用者瞭解何種語言的資訊", - "apihelp-query+babel-summary": "獲得關於使用者所能理解語言的資訊", - "apihelp-query+babel-param-user": "要取得相關資訊的使用者", - "apihelp-query+babel-example-1": "取得使用者 Example 的 Babel 資訊" + "babel-footer": "使用者 (依語言)" } diff --git a/MLEB/Babel/i18n/zh-hk.json b/MLEB/Babel/i18n/zh-hk.json index d6bfee73..5bd0d121 100644 --- a/MLEB/Babel/i18n/zh-hk.json +++ b/MLEB/Babel/i18n/zh-hk.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Liuxinyu970226", "Oapbtommy", - "Shinjiman", - "Liuxinyu970226" + "Shinjiman" ] }, "babel": "巴別用戶資訊", diff --git a/MLEB/Babel/includes/Babel.php b/MLEB/Babel/includes/Babel.php index 245cfd87..6b0206ff 100644 --- a/MLEB/Babel/includes/Babel.php +++ b/MLEB/Babel/includes/Babel.php @@ -16,7 +16,7 @@ use MediaWiki\Babel\BabelBox\LanguageBabelBox; use MediaWiki\Babel\BabelBox\NotBabelBox; use MediaWiki\Babel\BabelBox\NullBabelBox; -use MediaWiki\Logger\LoggerFactory; +use MediaWiki\MediaWikiServices; /** * Main class for the Babel extension. @@ -31,13 +31,11 @@ class Babel { * Render the Babel tower. * * @param Parser $parser - * @param string $parameter,... + * @param string ...$parameters * @return string Babel tower. */ - public static function Render( Parser $parser ) { + public static function Render( Parser $parser, ...$parameters ) { global $wgBabelUseUserLanguage; - $parameters = func_get_args(); - array_shift( $parameters ); self::$title = $parser->getTitle(); self::mTemplateLinkBatch( $parameters ); @@ -245,14 +243,14 @@ EOT; $return = []; $babelcode = $strtolower ? strtolower( $parameter ) : $parameter; - // Try treating the paramter as a language code (for default level). + // Try treating the parameter as a language code (for default level). $code = BabelLanguageCodes::getCode( $babelcode ); if ( $code !== false ) { $return['code'] = $code; $return['level'] = $wgBabelDefaultLevel; return $return; } - // Try splitting the paramter in to language and level, split on last hyphen. + // Try splitting the parameter in to language and level, split on last hyphen. $lastSplit = strrpos( $parameter, '-' ); if ( $lastSplit === false ) { return false; @@ -286,15 +284,7 @@ EOT; * @return string[] [ language code => level ] */ public static function getUserLanguageInfo( User $user ) { - global $wgBabelMainCategory, $wgBabelUseDatabase; - - if ( $wgBabelUseDatabase ) { - $userLanguageInfo = self::getUserLanguagesDB( $user ); - } elseif ( $wgBabelMainCategory ) { - $userLanguageInfo = self::getUserLanguagesCat( $user ); - } else { - $userLanguageInfo = []; - } + $userLanguageInfo = self::getUserLanguagesDB( $user ); ksort( $userLanguageInfo ); @@ -312,13 +302,13 @@ EOT; * @since Version 1.10.0 */ public static function getCachedUserLanguageInfo( User $user ) { - $cache = ObjectCache::getMainWANInstance(); + $cache = MediaWikiServices::getInstance()->getMainWANObjectCache(); $userId = $user->getId(); - $key = $cache->makeKey( 'babel', 'userLanguages', $userId ); + $key = $cache->makeKey( 'babel-local-languages', $userId ); $checkKeys = [ $key ]; $centralId = CentralIdLookup::factory()->centralIdFromLocalUser( $user ); if ( $centralId ) { - $checkKeys[] = $cache->makeGlobalKey( 'babel', 'userLanguages', $centralId ); + $checkKeys[] = $cache->makeGlobalKey( 'babel-central-languages', $centralId ); } $cachedUserLanguageInfo = $cache->getWithSetCallback( @@ -401,13 +391,12 @@ EOT; } private static function getUserLanguagesDB( User $user ) { - global $wgBabelCentralApi, $wgBabelCentralDb; + global $wgBabelCentralDb; $babelDB = new MediaWiki\Babel\Database(); $result = $babelDB->getForUser( $user->getId() ); /** If local data or no central source, return */ - /** @suppress PhanTypeComparisonFromArray false positive */ - if ( $result || !$wgBabelCentralApi || !$wgBabelCentralDb ) { + if ( $result || !$wgBabelCentralDb ) { return $result; } @@ -423,74 +412,6 @@ EOT; return []; } - $logger = LoggerFactory::getInstance( 'Babel' ); - $url = wfAppendQuery( $wgBabelCentralApi, [ - 'action' => 'query', - 'meta' => 'babel', - 'babuser' => $user->getName(), - 'format' => 'json', - 'formatversion' => 2 - ] ); - $logger->debug( 'Making request to {url}', [ 'url' => $url ] ); - $req = MWHttpRequest::factory( $url, [ 'timeout' => 10 ], __METHOD__ ); - $status = Status::wrap( $req->execute() ); - if ( !$status->isOK() ) { - $logger->error( 'Request to {url} failed: {error}', - [ 'url' => $url, 'error' => $status->getWikiText( false, false, 'en' ) ] - ); - return []; - } - - $content = $req->getContent(); - $json = FormatJson::decode( $content, true ); - if ( !is_array( $json ) ) { - $logger->error( 'Invalid JSON from {url}: {content}', [ 'url' => $url, 'content' => $content ] ); - return []; - } - - if ( isset( $json['error'] ) && $json['error']['code'] === 'babbaduser' ) { - // This shouldn't happen since we checked with CentralIdLookup first... - return []; - } elseif ( isset( $json['error'] ) ) { - $logger->error( 'API error: {code} {info}', $json['error'] ); - return []; - } - - return $json['query']['babel']; - } - - private static function getUserLanguagesCat( User $user ) { - global $wgBabelMainCategory; - - // The string we construct here will be a pony, it will not be a valid category - $babelCategoryTitle = Title::makeTitle( NS_CATEGORY, $wgBabelMainCategory ); - // Quote everything to avoid unexpected matches due to parenthesis form - // It is not necessary to quote any additional chars except the special chars for the regex - // and perhaps the limiting char, but that should not be respected as anything other than - // edge delimiter. - $babelCategoryString = preg_quote( $babelCategoryTitle->getPrefixedDBkey(), '/' ); - // Look for the %code% inside the string and put a group match in the same place - // This will only work if the previous works so the string isn't misinterpreted as a regular - // expression itself - $codeRegex = '/^' . preg_replace( '/%code%/', '(.+?)(-([0-5N]))?', $babelCategoryString ) . '$/'; - - $categories = array_keys( $user->getUserPage()->getParentCategories() ); - - // We sort on proficiency level - $result = []; - foreach ( $categories as $category ) { - // Only process categories that matches, $match will be created if necessary - $res = preg_match( $codeRegex, $category, $match ); - if ( $res ) { - // lowercase the first char, but stay away from the others in case of region codes - $code = BabelLanguageCodes::getCode( lcfirst( $match[1] ) ); - if ( $code !== false ) { - $catCode = BabelLanguageCodes::getCategoryCode( $code ); - $result[$catCode] = isset( $match[3] ) ? $match[3] : 'N'; - } - } - } - - return $result; + return $babelDB->getForRemoteUser( $wgBabelCentralDb, $user->getName() ); } } diff --git a/MLEB/Babel/includes/BabelAutoCreate.php b/MLEB/Babel/includes/BabelAutoCreate.php index ed7304af..a4cdc5b2 100644 --- a/MLEB/Babel/includes/BabelAutoCreate.php +++ b/MLEB/Babel/includes/BabelAutoCreate.php @@ -13,6 +13,8 @@ * @license GPL-2.0-or-later */ +use MediaWiki\MediaWikiServices; + /** * Class for automatic creation of Babel category pages. */ @@ -41,7 +43,7 @@ class BabelAutoCreate { if ( $title === null || $title->exists() ) { return; } - DeferredUpdates::addCallableUpdate( function () use ( $category, $code, $level, $title ) { + DeferredUpdates::addCallableUpdate( function () use ( $code, $level, $title ) { global $wgLanguageCode; $language = BabelLanguageCodes::getName( $code, $wgLanguageCode ); $params = [ $language, $code ]; @@ -58,7 +60,8 @@ class BabelAutoCreate { return; } - if ( !$title->quickUserCan( 'create', $user ) ) { + if ( !MediaWikiServices::getInstance()->getPermissionManager() + ->quickUserCan( 'create', $user, $title ) ) { return; # The Babel AutoCreate account is not allowed to create the page } @@ -83,14 +86,7 @@ class BabelAutoCreate { public static function user() { if ( !self::$user ) { $userName = wfMessage( 'babel-autocreate-user' )->inContentLanguage()->plain(); - if ( method_exists( 'User', 'newSystemUser' ) ) { - self::$user = User::newSystemUser( $userName, [ 'steal' => true ] ); - } else { - self::$user = User::newFromName( $userName ); - if ( self::$user && !self::$user->isLoggedIn() ) { - self::$user->addToDatabase(); - } - } + self::$user = User::newSystemUser( $userName, [ 'steal' => true ] ); } return self::$user; diff --git a/MLEB/Babel/includes/BabelBox/LanguageBabelBox.php b/MLEB/Babel/includes/BabelBox/LanguageBabelBox.php index cedf1817..f46a08d5 100644 --- a/MLEB/Babel/includes/BabelBox/LanguageBabelBox.php +++ b/MLEB/Babel/includes/BabelBox/LanguageBabelBox.php @@ -18,6 +18,7 @@ namespace MediaWiki\Babel\BabelBox; use BabelAutoCreate; use BabelLanguageCodes; use Language; +use LanguageCode; use MWException; use Title; @@ -71,7 +72,7 @@ class LanguageBabelBox implements BabelBox { public function render() { $code = $this->code; $catCode = BabelLanguageCodes::getCategoryCode( $code ); - $bcp47 = BabelLanguageCodes::bcp47( $code ); + $bcp47 = LanguageCode::bcp47( $code ); $portal = wfMessage( 'babel-portal', $catCode )->inContentLanguage()->text(); if ( $portal !== '' ) { @@ -136,7 +137,7 @@ EOT; $fallbackLanguage = Language::getFallbackFor( $code ); $fallback = wfMessage( "babel-$level-n", $categoryLevel, $categoryMain, '', $title->getDBkey() - )->inLanguage( $fallbackLanguage ? $fallbackLanguage : $code )->text(); + )->inLanguage( $fallbackLanguage ?: $code )->text(); // Give grep a chance to find the usages: // babel-0, babel-1, babel-2, babel-3, babel-4, babel-5, babel-N @@ -189,13 +190,13 @@ EOT; } /** - * Replace the placeholder variables from the category names configurtion + * Replace the placeholder variables from the category names configuration * array with actual values. * - * @throws MWException if the category name is not a valid title * @param string $category Category name (containing variables). * @param string $code Mediawiki-internal language code of category. * @return string Category name with variables replaced. + * @throws MWException if the category name is not a valid title */ private static function getCategoryName( $category, $code ) { global $wgLanguageCode; diff --git a/MLEB/Babel/includes/BabelLanguageCodes.php b/MLEB/Babel/includes/BabelLanguageCodes.php index b9b2d431..8501e0bd 100644 --- a/MLEB/Babel/includes/BabelLanguageCodes.php +++ b/MLEB/Babel/includes/BabelLanguageCodes.php @@ -13,15 +13,14 @@ */ class BabelLanguageCodes { - static private $mapToMediaWikiCodeCache = null; + private static $mapToMediaWikiCodeCache = null; + /** * Map BCP 47 codes or old deprecated internal codes to current MediaWiki * internal codes (which may not be standard BCP 47 codes). * * @param string $code Code to try and get an internal code for * @return string|bool Language code, or false if code is not mapped - * @suppress PhanUndeclaredStaticMethod phan can't figure out we're - * testing for a method present in a future MediaWiki release */ private static function mapToMediaWikiCode( $code ) { if ( !self::$mapToMediaWikiCodeCache ) { @@ -48,16 +47,13 @@ class BabelLanguageCodes { } } } - if ( isset( self::$mapToMediaWikiCodeCache[ strtolower( $code ) ] ) ) { - return self::$mapToMediaWikiCodeCache[ strtolower( $code ) ]; - } - return false; + return self::$mapToMediaWikiCodeCache[ strtolower( $code ) ] ?? false; } /** * Takes a language code, and attempt to obtain a better variant of it, * checks the MediaWiki language codes for a match, otherwise checks the - * Babel language codes CDB (preferring ISO 639-1 over ISO 639-3). + * internal Babel language codes (preferring ISO 639-1 over ISO 639-3) map. * * @param string $code Code to try and get a "better" code for. * @return string|bool Mediawiki-internal language code, or false @@ -77,35 +73,21 @@ class BabelLanguageCodes { } // Otherwise, fall back to the ISO 639 codes database - $codes = false; - try { - $codesCdb = Cdb\Reader::open( __DIR__ . '/../codes.cdb' ); - $codes = $codesCdb->get( $code ); - } catch ( Cdb\Exception $e ) { - wfDebug( __METHOD__ . ": CdbException caught, error message was " - . $e->getMessage() ); + static $isoCodes = false; + if ( !$isoCodes ) { + $isoCodes = require __DIR__ . '/../codes.php'; } - - return $codes; - } - - /** - * Get the normalised IETF language tag. - * @param string $code The language code. - * @deprecated This provides backward compatibility; replace with - * \LanguageCode::bcp47() once MW 1.30 is no longer supported. - */ - public static function bcp47( $code ) { - if ( !is_callable( [ 'LanguageCode', 'bcp47' ] ) ) { - return wfBCP47( $code ); + if ( isset( $isoCodes[$code] ) ) { + return $isoCodes[$code]; } - return LanguageCode::bcp47( $code ); + + return false; } /** * Take a code as input, and search a language name for it in * a given language via Language::fetchLanguageNames() or - * else via the Babel language names CDB + * else via the internal Babel language names map. * * @param string $code Code to get name for. * @param string|null $language Code of language to attempt to get name in, @@ -126,16 +108,14 @@ class BabelLanguageCodes { return $names[$code]; } - $codes = false; - try { - $namesCdb = Cdb\Reader::open( __DIR__ . '/../names.cdb' ); - $codes = $namesCdb->get( $code ); - } catch ( Cdb\Exception $e ) { - wfDebug( __METHOD__ . ": CdbException caught, error message was " - . $e->getMessage() ); + static $isoNames = false; + if ( !$isoNames ) { + $isoNames = require __DIR__ . '/../names.php'; } - - return $codes; + if ( isset( $isoNames[$code] ) ) { + return $isoNames[$code]; + } + return false; } /** @@ -153,9 +133,9 @@ class BabelLanguageCodes { */ public static function getCategoryCode( $code ) { if ( strpos( $code, '-' ) !== false ) { - return self::bcp47( $code ); - } else { - return $code; + return LanguageCode::bcp47( $code ); } + + return $code; } } diff --git a/MLEB/Babel/includes/BabelStatic.php b/MLEB/Babel/includes/BabelStatic.php index b4178594..9e5aa351 100644 --- a/MLEB/Babel/includes/BabelStatic.php +++ b/MLEB/Babel/includes/BabelStatic.php @@ -7,6 +7,8 @@ * @license GPL-2.0-or-later */ +use MediaWiki\MediaWikiServices; + /** * Static functions for Babel extension. */ @@ -24,7 +26,27 @@ class BabelStatic { * @param DatabaseUpdater $updater */ public static function onLoadExtensionSchemaUpdates( DatabaseUpdater $updater ) { - $updater->addExtensionTable( 'babel', __DIR__ . '/../babel.sql' ); + $dir = dirname( __DIR__ ) . '/'; + $updater->addExtensionTable( 'babel', $dir . 'babel.sql' ); + + if ( $updater->getDB()->getType() === 'mysql' ) { + $updater->modifyExtensionField( + 'babel', + 'babel_lang', + $dir . 'sql/babel-babel_lang-length-type.sql' + ); + $updater->modifyExtensionField( + 'babel', + 'babel_level', + $dir . 'sql/babel-babel_level-type.sql' + ); + } elseif ( $updater->getDB()->getType() === 'sqlite' ) { + $updater->modifyExtensionField( + 'babel', + 'babel_lang', + $dir . 'sql/babel-babel_lang-length.sqlite.sql' + ); + } } /** @@ -49,13 +71,13 @@ class BabelStatic { $data = $linksUpdate->getParserOutput()->getExtensionData( 'babel' ) ?: []; $changed = $babelDB->setForUser( $user->getId(), $data ); if ( $changed ) { - $cache = ObjectCache::getMainWANInstance(); - $cache->touchCheckKey( $cache->makeKey( 'babel', 'userLanguages', $user->getId() ) ); + $cache = MediaWikiServices::getInstance()->getMainWANObjectCache(); + $cache->touchCheckKey( $cache->makeKey( 'babel-local-languages', $user->getId() ) ); if ( $wgBabelCentralDb === wfWikiID() ) { // If this is the central wiki, invalidate all of the local caches $centralId = CentralIdLookup::factory()->centralIdFromLocalUser( $user ); if ( $centralId ) { - $cache->touchCheckKey( $cache->makeGlobalKey( 'babel', 'userLanguages', $centralId ) ); + $cache->touchCheckKey( $cache->makeGlobalKey( 'babel-central-languages', $centralId ) ); } } } diff --git a/MLEB/Babel/includes/Database.php b/MLEB/Babel/includes/Database.php index 5c0c015f..8dbb67f2 100644 --- a/MLEB/Babel/includes/Database.php +++ b/MLEB/Babel/includes/Database.php @@ -22,25 +22,27 @@ namespace MediaWiki\Babel; use MediaWiki\MediaWikiServices; use Wikimedia\Rdbms\IDatabase; -use Wikimedia\Rdbms\LoadBalancer; +use Wikimedia\Rdbms\LBFactory; class Database { /** - * @var LoadBalancer + * @var LBFactory */ - private $loadBalancer; + private $loadBalancerFactory; public function __construct() { - $this->loadBalancer = MediaWikiServices::getInstance()->getDBLoadBalancer(); + $this->loadBalancerFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); } /** * @param int $index + * @param string|bool $wiki Database name if querying a different wiki * @return IDatabase */ - protected function getDB( $index ) { - return $this->loadBalancer->getLazyConnectionRef( $index ); + protected function getDB( $index, $wiki = false ) { + return $this->loadBalancerFactory->getMainLB( $wiki ) + ->getLazyConnectionRef( $index, [], $wiki ); } /** @@ -64,18 +66,39 @@ class Database { } /** - * @param string $id + * @param string $wiki Database name + * @param string $username + * @return string[] [ lang => level ] + */ + public function getForRemoteUser( $wiki, $username ) { + $rows = $this->getDB( DB_REPLICA, $wiki )->select( + [ 'babel', 'user' ], + [ 'babel_lang', 'babel_level' ], + [ + 'user_name' => $username + ], + __METHOD__, + [], + [ + 'user' => [ 'INNER JOIN', 'babel_user=user_id' ] + ] + ); + + $return = []; + foreach ( $rows as $row ) { + $return[$row->babel_lang] = $row->babel_level; + } + + return $return; + } + + /** + * @param int $id * @param string[] $data [ lang => level ] * @return bool true if changes to the db were made */ public function setForUser( $id, array $data ) { $dbw = $this->getDB( DB_MASTER ); - if ( !$dbw->tableExists( 'babel' ) ) { - // Populate data as long as the table exists, so - // we can pre-populate the database before switching - // reads to the database - return false; - } $newRows = []; foreach ( $data as $lang => $level ) { diff --git a/MLEB/Babel/names.cdb b/MLEB/Babel/names.cdb deleted file mode 100644 index f59ab46c..00000000 Binary files a/MLEB/Babel/names.cdb and /dev/null differ diff --git a/MLEB/Babel/names.php b/MLEB/Babel/names.php new file mode 100644 index 00000000..6c911f1c --- /dev/null +++ b/MLEB/Babel/names.php @@ -0,0 +1,8047 @@ + 'Ghotuo', + 'aab' => 'Alumu-Tesu', + 'aac' => 'Ari', + 'aad' => 'Amal', + 'aae' => 'Arbëreshë Albanian', + 'aaf' => 'Aranadan', + 'aag' => 'Ambrak', + 'aah' => 'Abu\' Arapesh', + 'aai' => 'Arifama-Miniafia', + 'aak' => 'Ankave', + 'aal' => 'Afade', + 'aan' => 'Anambé', + 'aao' => 'Algerian Saharan Arabic', + 'aap' => 'Pará Arára', + 'aaq' => 'Eastern Abnaki', + 'aa' => 'Afar', + 'aar' => 'Afar', + 'aas' => 'Aasáx', + 'aat' => 'Arvanitika Albanian', + 'aau' => 'Abau', + 'aaw' => 'Solong', + 'aax' => 'Mandobo Atas', + 'aaz' => 'Amarasi', + 'aba' => 'Abé', + 'abb' => 'Bankon', + 'abc' => 'Ambala Ayta', + 'abd' => 'Manide', + 'abe' => 'Western Abnaki', + 'abf' => 'Abai Sungai', + 'abg' => 'Abaga', + 'abh' => 'Tajiki Arabic', + 'abi' => 'Abidji', + 'abj' => 'Aka-Bea', + 'ab' => 'Abkhazian', + 'abk' => 'Abkhazian', + 'abl' => 'Lampung Nyo', + 'abm' => 'Abanyom', + 'abn' => 'Abua', + 'abo' => 'Abon', + 'abp' => 'Abellen Ayta', + 'abq' => 'Abaza', + 'abr' => 'Abron', + 'abs' => 'Ambonese Malay', + 'abt' => 'Ambulas', + 'abu' => 'Abure', + 'abv' => 'Baharna Arabic', + 'abw' => 'Pal', + 'abx' => 'Inabaknon', + 'aby' => 'Aneme Wake', + 'abz' => 'Abui', + 'aca' => 'Achagua', + 'acb' => 'Áncá', + 'acd' => 'Gikyode', + 'ace' => 'Achinese', + 'acf' => 'Saint Lucian Creole French', + 'ach' => 'Acoli', + 'aci' => 'Aka-Cari', + 'ack' => 'Aka-Kora', + 'acl' => 'Akar-Bale', + 'acm' => 'Mesopotamian Arabic', + 'acn' => 'Achang', + 'acp' => 'Eastern Acipa', + 'acq' => 'Ta\'izzi-Adeni Arabic', + 'acr' => 'Achi', + 'acs' => 'Acroá', + 'act' => 'Achterhoeks', + 'acu' => 'Achuar-Shiwiar', + 'acv' => 'Achumawi', + 'acw' => 'Hijazi Arabic', + 'acx' => 'Omani Arabic', + 'acy' => 'Cypriot Arabic', + 'acz' => 'Acheron', + 'ada' => 'Adangme', + 'adb' => 'Adabe', + 'add' => 'Lidzonka', + 'ade' => 'Adele', + 'adf' => 'Dhofari Arabic', + 'adg' => 'Andegerebinha', + 'adh' => 'Adhola', + 'adi' => 'Adi', + 'adj' => 'Adioukrou', + 'adl' => 'Galo', + 'adn' => 'Adang', + 'ado' => 'Abu', + 'adq' => 'Adangbe', + 'adr' => 'Adonara', + 'ads' => 'Adamorobe Sign Language', + 'adt' => 'Adnyamathanha', + 'adu' => 'Aduge', + 'adw' => 'Amundava', + 'adx' => 'Amdo Tibetan', + 'ady' => 'Adyghe', + 'adz' => 'Adzera', + 'aea' => 'Areba', + 'aeb' => 'Tunisian Arabic', + 'aec' => 'Saidi Arabic', + 'aed' => 'Argentine Sign Language', + 'aee' => 'Northeast Pashai', + 'aek' => 'Haeke', + 'ael' => 'Ambele', + 'aem' => 'Arem', + 'aen' => 'Armenian Sign Language', + 'aeq' => 'Aer', + 'aer' => 'Eastern Arrernte', + 'aes' => 'Alsea', + 'aeu' => 'Akeu', + 'aew' => 'Ambakich', + 'aey' => 'Amele', + 'aez' => 'Aeka', + 'afb' => 'Gulf Arabic', + 'afd' => 'Andai', + 'afe' => 'Putukwam', + 'afg' => 'Afghan Sign Language', + 'afh' => 'Afrihili', + 'afi' => 'Akrukay', + 'afk' => 'Nanubae', + 'afn' => 'Defaka', + 'afo' => 'Eloyi', + 'afp' => 'Tapei', + 'af' => 'Afrikaans', + 'afr' => 'Afrikaans', + 'afs' => 'Afro-Seminole Creole', + 'aft' => 'Afitti', + 'afu' => 'Awutu', + 'afz' => 'Obokuitai', + 'aga' => 'Aguano', + 'agb' => 'Legbo', + 'agc' => 'Agatu', + 'agd' => 'Agarabi', + 'age' => 'Angal', + 'agf' => 'Arguni', + 'agg' => 'Angor', + 'agh' => 'Ngelima', + 'agi' => 'Agariya', + 'agj' => 'Argobba', + 'agk' => 'Isarog Agta', + 'agl' => 'Fembe', + 'agm' => 'Angaataha', + 'agn' => 'Agutaynen', + 'ago' => 'Tainae', + 'agq' => 'Aghem', + 'agr' => 'Aguaruna', + 'ags' => 'Esimbi', + 'agt' => 'Central Cagayan Agta', + 'agu' => 'Aguacateco', + 'agv' => 'Remontado Dumagat', + 'agw' => 'Kahua', + 'agx' => 'Aghul', + 'agy' => 'Southern Alta', + 'agz' => 'Mt. Iriga Agta', + 'aha' => 'Ahanta', + 'ahb' => 'Axamb', + 'ahg' => 'Qimant', + 'ahh' => 'Aghu', + 'ahi' => 'Tiagbamrin Aizi', + 'ahk' => 'Akha', + 'ahl' => 'Igo', + 'ahm' => 'Mobumrin Aizi', + 'ahn' => 'Àhàn', + 'aho' => 'Ahom', + 'ahp' => 'Aproumu Aizi', + 'ahr' => 'Ahirani', + 'ahs' => 'Ashe', + 'aht' => 'Ahtena', + 'aia' => 'Arosi', + 'aib' => 'Ainu (China)', + 'aic' => 'Ainbai', + 'aid' => 'Alngith', + 'aie' => 'Amara', + 'aif' => 'Agi', + 'aig' => 'Antigua and Barbuda Creole English', + 'aih' => 'Ai-Cham', + 'aii' => 'Assyrian Neo-Aramaic', + 'aij' => 'Lishanid Noshan', + 'aik' => 'Ake', + 'ail' => 'Aimele', + 'aim' => 'Aimol', + 'ain' => 'Ainu (Japan)', + 'aio' => 'Aiton', + 'aip' => 'Burumakok', + 'aiq' => 'Aimaq', + 'air' => 'Airoran', + 'ais' => 'Nataoran Amis', + 'ait' => 'Arikem', + 'aiw' => 'Aari', + 'aix' => 'Aighon', + 'aiy' => 'Ali', + 'aja' => 'Aja (South Sudan)', + 'ajg' => 'Aja (Benin)', + 'aji' => 'Ajië', + 'ajn' => 'Andajin', + 'ajp' => 'South Levantine Arabic', + 'ajt' => 'Judeo-Tunisian Arabic', + 'aju' => 'Judeo-Moroccan Arabic', + 'ajw' => 'Ajawa', + 'ajz' => 'Amri Karbi', + 'ak' => 'Akan', + 'aka' => 'Akan', + 'akb' => 'Batak Angkola', + 'akc' => 'Mpur', + 'akd' => 'Ukpet-Ehom', + 'ake' => 'Akawaio', + 'akf' => 'Akpa', + 'akg' => 'Anakalangu', + 'akh' => 'Angal Heneng', + 'aki' => 'Aiome', + 'akj' => 'Aka-Jeru', + 'akk' => 'Akkadian', + 'akl' => 'Aklanon', + 'akm' => 'Aka-Bo', + 'ako' => 'Akurio', + 'akp' => 'Siwu', + 'akq' => 'Ak', + 'akr' => 'Araki', + 'aks' => 'Akaselem', + 'akt' => 'Akolet', + 'aku' => 'Akum', + 'akv' => 'Akhvakh', + 'akw' => 'Akwa', + 'akx' => 'Aka-Kede', + 'aky' => 'Aka-Kol', + 'akz' => 'Alabama', + 'ala' => 'Alago', + 'alc' => 'Qawasqar', + 'ald' => 'Alladian', + 'ale' => 'Aleut', + 'alf' => 'Alege', + 'alh' => 'Alawa', + 'ali' => 'Amaimon', + 'alj' => 'Alangan', + 'alk' => 'Alak', + 'all' => 'Allar', + 'alm' => 'Amblong', + 'aln' => 'Gheg Albanian', + 'alo' => 'Larike-Wakasihu', + 'alp' => 'Alune', + 'alq' => 'Algonquin', + 'alr' => 'Alutor', + 'als' => 'Tosk Albanian', + 'alt' => 'Southern Altai', + 'alu' => '\'Are\'are', + 'alw' => 'Alaba-K’abeena', + 'alx' => 'Amol', + 'aly' => 'Alyawarr', + 'alz' => 'Alur', + 'ama' => 'Amanayé', + 'amb' => 'Ambo', + 'amc' => 'Amahuaca', + 'ame' => 'Yanesha\'', + 'amf' => 'Hamer-Banna', + 'amg' => 'Amurdak', + 'am' => 'Amharic', + 'amh' => 'Amharic', + 'ami' => 'Amis', + 'amj' => 'Amdang', + 'amk' => 'Ambai', + 'aml' => 'War-Jaintia', + 'amm' => 'Ama (Papua New Guinea)', + 'amn' => 'Amanab', + 'amo' => 'Amo', + 'amp' => 'Alamblak', + 'amq' => 'Amahai', + 'amr' => 'Amarakaeri', + 'ams' => 'Southern Amami-Oshima', + 'amt' => 'Amto', + 'amu' => 'Guerrero Amuzgo', + 'amv' => 'Ambelau', + 'amw' => 'Western Neo-Aramaic', + 'amx' => 'Anmatyerre', + 'amy' => 'Ami', + 'amz' => 'Atampaya', + 'ana' => 'Andaqui', + 'anb' => 'Andoa', + 'anc' => 'Ngas', + 'and' => 'Ansus', + 'ane' => 'Xârâcùù', + 'anf' => 'Animere', + 'ang' => 'Old English (ca. 450-1100)', + 'anh' => 'Nend', + 'ani' => 'Andi', + 'anj' => 'Anor', + 'ank' => 'Goemai', + 'anl' => 'Anu-Hkongso Chin', + 'anm' => 'Anal', + 'ann' => 'Obolo', + 'ano' => 'Andoque', + 'anp' => 'Angika', + 'anq' => 'Jarawa (India)', + 'anr' => 'Andh', + 'ans' => 'Anserma', + 'ant' => 'Antakarinya', + 'anu' => 'Anuak', + 'anv' => 'Denya', + 'anw' => 'Anaang', + 'anx' => 'Andra-Hus', + 'any' => 'Anyin', + 'anz' => 'Anem', + 'aoa' => 'Angolar', + 'aob' => 'Abom', + 'aoc' => 'Pemon', + 'aod' => 'Andarum', + 'aoe' => 'Angal Enen', + 'aof' => 'Bragat', + 'aog' => 'Angoram', + 'aoh' => 'Arma', + 'aoi' => 'Anindilyakwa', + 'aoj' => 'Mufian', + 'aok' => 'Arhö', + 'aol' => 'Alor', + 'aom' => 'Ömie', + 'aon' => 'Bumbita Arapesh', + 'aor' => 'Aore', + 'aos' => 'Taikat', + 'aot' => 'Atong (India)', + 'aou' => 'A\'ou', + 'aox' => 'Atorada', + 'aoz' => 'Uab Meto', + 'apb' => 'Sa\'a', + 'apc' => 'North Levantine Arabic', + 'apd' => 'Sudanese Arabic', + 'ape' => 'Bukiyip', + 'apf' => 'Pahanan Agta', + 'apg' => 'Ampanang', + 'aph' => 'Athpariya', + 'api' => 'Apiaká', + 'apj' => 'Jicarilla Apache', + 'apk' => 'Kiowa Apache', + 'apl' => 'Lipan Apache', + 'apm' => 'Mescalero-Chiricahua Apache', + 'apn' => 'Apinayé', + 'apo' => 'Ambul', + 'app' => 'Apma', + 'apq' => 'A-Pucikwar', + 'apr' => 'Arop-Lokep', + 'aps' => 'Arop-Sissano', + 'apt' => 'Apatani', + 'apu' => 'Apurinã', + 'apv' => 'Alapmunte', + 'apw' => 'Western Apache', + 'apx' => 'Aputai', + 'apy' => 'Apalaí', + 'apz' => 'Safeyoka', + 'aqc' => 'Archi', + 'aqd' => 'Ampari Dogon', + 'aqg' => 'Arigidi', + 'aqm' => 'Atohwaim', + 'aqn' => 'Northern Alta', + 'aqp' => 'Atakapa', + 'aqr' => 'Arhâ', + 'aqt' => 'Angaité', + 'aqz' => 'Akuntsu', + 'ar' => 'Arabic', + 'ara' => 'Arabic', + 'arb' => 'Standard Arabic', + 'arc' => 'Official Aramaic (700-300 BCE)', + 'ard' => 'Arabana', + 'are' => 'Western Arrarnta', + 'an' => 'Aragonese', + 'arg' => 'Aragonese', + 'arh' => 'Arhuaco', + 'ari' => 'Arikara', + 'arj' => 'Arapaso', + 'ark' => 'Arikapú', + 'arl' => 'Arabela', + 'arn' => 'Mapudungun', + 'aro' => 'Araona', + 'arp' => 'Arapaho', + 'arq' => 'Algerian Arabic', + 'arr' => 'Karo (Brazil)', + 'ars' => 'Najdi Arabic', + 'aru' => 'Aruá (Amazonas State)', + 'arv' => 'Arbore', + 'arw' => 'Arawak', + 'arx' => 'Aruá (Rodonia State)', + 'ary' => 'Moroccan Arabic', + 'arz' => 'Egyptian Arabic', + 'asa' => 'Asu (Tanzania)', + 'asb' => 'Assiniboine', + 'asc' => 'Casuarina Coast Asmat', + 'asd' => 'Asas', + 'ase' => 'American Sign Language', + 'asf' => 'Auslan', + 'asg' => 'Cishingini', + 'ash' => 'Abishira', + 'asi' => 'Buruwai', + 'asj' => 'Sari', + 'ask' => 'Ashkun', + 'asl' => 'Asilulu', + 'as' => 'Assamese', + 'asm' => 'Assamese', + 'asn' => 'Xingú Asuriní', + 'aso' => 'Dano', + 'asp' => 'Algerian Sign Language', + 'asq' => 'Austrian Sign Language', + 'asr' => 'Asuri', + 'ass' => 'Ipulo', + 'ast' => 'Asturian', + 'asu' => 'Tocantins Asurini', + 'asv' => 'Asoa', + 'asw' => 'Australian Aborigines Sign Language', + 'asx' => 'Muratayak', + 'asy' => 'Yaosakor Asmat', + 'asz' => 'As', + 'ata' => 'Pele-Ata', + 'atb' => 'Zaiwa', + 'atc' => 'Atsahuaca', + 'atd' => 'Ata Manobo', + 'ate' => 'Atemble', + 'atg' => 'Ivbie North-Okpela-Arhe', + 'ati' => 'Attié', + 'atj' => 'Atikamekw', + 'atk' => 'Ati', + 'atl' => 'Mt. Iraya Agta', + 'atm' => 'Ata', + 'atn' => 'Ashtiani', + 'ato' => 'Atong (Cameroon)', + 'atp' => 'Pudtol Atta', + 'atq' => 'Aralle-Tabulahan', + 'atr' => 'Waimiri-Atroari', + 'ats' => 'Gros Ventre', + 'att' => 'Pamplona Atta', + 'atu' => 'Reel', + 'atv' => 'Northern Altai', + 'atw' => 'Atsugewi', + 'atx' => 'Arutani', + 'aty' => 'Aneityum', + 'atz' => 'Arta', + 'aua' => 'Asumboa', + 'aub' => 'Alugu', + 'auc' => 'Waorani', + 'aud' => 'Anuta', + 'aug' => 'Aguna', + 'auh' => 'Aushi', + 'aui' => 'Anuki', + 'auj' => 'Awjilah', + 'auk' => 'Heyo', + 'aul' => 'Aulua', + 'aum' => 'Asu (Nigeria)', + 'aun' => 'Molmo One', + 'auo' => 'Auyokawa', + 'aup' => 'Makayam', + 'auq' => 'Anus', + 'aur' => 'Aruek', + 'aut' => 'Austral', + 'auu' => 'Auye', + 'auw' => 'Awyi', + 'aux' => 'Aurá', + 'auy' => 'Awiyaana', + 'auz' => 'Uzbeki Arabic', + 'av' => 'Avaric', + 'ava' => 'Avaric', + 'avb' => 'Avau', + 'avd' => 'Alviri-Vidari', + 'ae' => 'Avestan', + 'ave' => 'Avestan', + 'avi' => 'Avikam', + 'avk' => 'Kotava', + 'avl' => 'Eastern Egyptian Bedawi Arabic', + 'avm' => 'Angkamuthi', + 'avn' => 'Avatime', + 'avo' => 'Agavotaguerra', + 'avs' => 'Aushiri', + 'avt' => 'Au', + 'avu' => 'Avokaya', + 'avv' => 'Avá-Canoeiro', + 'awa' => 'Awadhi', + 'awb' => 'Awa (Papua New Guinea)', + 'awc' => 'Cicipu', + 'awe' => 'Awetí', + 'awg' => 'Anguthimri', + 'awh' => 'Awbono', + 'awi' => 'Aekyom', + 'awk' => 'Awabakal', + 'awm' => 'Arawum', + 'awn' => 'Awngi', + 'awo' => 'Awak', + 'awr' => 'Awera', + 'aws' => 'South Awyu', + 'awt' => 'Araweté', + 'awu' => 'Central Awyu', + 'awv' => 'Jair Awyu', + 'aww' => 'Awun', + 'awx' => 'Awara', + 'awy' => 'Edera Awyu', + 'axb' => 'Abipon', + 'axe' => 'Ayerrerenge', + 'axg' => 'Mato Grosso Arára', + 'axk' => 'Yaka (Central African Republic)', + 'axl' => 'Lower Southern Aranda', + 'axm' => 'Middle Armenian', + 'axx' => 'Xârâgurè', + 'aya' => 'Awar', + 'ayb' => 'Ayizo Gbe', + 'ayc' => 'Southern Aymara', + 'ayd' => 'Ayabadhu', + 'aye' => 'Ayere', + 'ayg' => 'Ginyanga', + 'ayh' => 'Hadrami Arabic', + 'ayi' => 'Leyigha', + 'ayk' => 'Akuku', + 'ayl' => 'Libyan Arabic', + 'ay' => 'Aymara', + 'aym' => 'Aymara', + 'ayn' => 'Sanaani Arabic', + 'ayo' => 'Ayoreo', + 'ayp' => 'North Mesopotamian Arabic', + 'ayq' => 'Ayi (Papua New Guinea)', + 'ayr' => 'Central Aymara', + 'ays' => 'Sorsogon Ayta', + 'ayt' => 'Magbukun Ayta', + 'ayu' => 'Ayu', + 'ayy' => 'Tayabas Ayta', + 'ayz' => 'Mai Brat', + 'aza' => 'Azha', + 'azb' => 'South Azerbaijani', + 'azd' => 'Eastern Durango Nahuatl', + 'az' => 'Azerbaijani', + 'aze' => 'Azerbaijani', + 'azg' => 'San Pedro Amuzgos Amuzgo', + 'azj' => 'North Azerbaijani', + 'azm' => 'Ipalapa Amuzgo', + 'azn' => 'Western Durango Nahuatl', + 'azo' => 'Awing', + 'azt' => 'Faire Atta', + 'azz' => 'Highland Puebla Nahuatl', + 'baa' => 'Babatana', + 'bab' => 'Bainouk-Gunyuño', + 'bac' => 'Badui', + 'bae' => 'Baré', + 'baf' => 'Nubaca', + 'bag' => 'Tuki', + 'bah' => 'Bahamas Creole English', + 'baj' => 'Barakai', + 'ba' => 'Bashkir', + 'bak' => 'Bashkir', + 'bal' => 'Baluchi', + 'bm' => 'Bambara', + 'bam' => 'Bambara', + 'ban' => 'Balinese', + 'bao' => 'Waimaha', + 'bap' => 'Bantawa', + 'bar' => 'Bavarian', + 'bas' => 'Basa (Cameroon)', + 'bau' => 'Bada (Nigeria)', + 'bav' => 'Vengo', + 'baw' => 'Bambili-Bambui', + 'bax' => 'Bamun', + 'bay' => 'Batuley', + 'bba' => 'Baatonum', + 'bbb' => 'Barai', + 'bbc' => 'Batak Toba', + 'bbd' => 'Bau', + 'bbe' => 'Bangba', + 'bbf' => 'Baibai', + 'bbg' => 'Barama', + 'bbh' => 'Bugan', + 'bbi' => 'Barombi', + 'bbj' => 'Ghomálá\'', + 'bbk' => 'Babanki', + 'bbl' => 'Bats', + 'bbm' => 'Babango', + 'bbn' => 'Uneapa', + 'bbo' => 'Northern Bobo Madaré', + 'bbp' => 'West Central Banda', + 'bbq' => 'Bamali', + 'bbr' => 'Girawa', + 'bbs' => 'Bakpinka', + 'bbt' => 'Mburku', + 'bbu' => 'Kulung (Nigeria)', + 'bbv' => 'Karnai', + 'bbw' => 'Baba', + 'bbx' => 'Bubia', + 'bby' => 'Befang', + 'bbz' => 'Babalia Creole Arabic', + 'bca' => 'Central Bai', + 'bcb' => 'Bainouk-Samik', + 'bcc' => 'Southern Balochi', + 'bcd' => 'North Babar', + 'bce' => 'Bamenyam', + 'bcf' => 'Bamu', + 'bcg' => 'Baga Pokur', + 'bch' => 'Bariai', + 'bci' => 'Baoulé', + 'bcj' => 'Bardi', + 'bck' => 'Bunaba', + 'bcl' => 'Central Bikol', + 'bcm' => 'Bannoni', + 'bcn' => 'Bali (Nigeria)', + 'bco' => 'Kaluli', + 'bcp' => 'Bali (Democratic Republic of Congo)', + 'bcq' => 'Bench', + 'bcr' => 'Babine', + 'bcs' => 'Kohumono', + 'bct' => 'Bendi', + 'bcu' => 'Awad Bing', + 'bcv' => 'Shoo-Minda-Nye', + 'bcw' => 'Bana', + 'bcy' => 'Bacama', + 'bcz' => 'Bainouk-Gunyaamolo', + 'bda' => 'Bayot', + 'bdb' => 'Basap', + 'bdc' => 'Emberá-Baudó', + 'bdd' => 'Bunama', + 'bde' => 'Bade', + 'bdf' => 'Biage', + 'bdg' => 'Bonggi', + 'bdh' => 'Baka (South Sudan)', + 'bdi' => 'Burun', + 'bdj' => 'Bai (South Sudan)', + 'bdk' => 'Budukh', + 'bdl' => 'Indonesian Bajau', + 'bdm' => 'Buduma', + 'bdn' => 'Baldemu', + 'bdo' => 'Morom', + 'bdp' => 'Bende', + 'bdq' => 'Bahnar', + 'bdr' => 'West Coast Bajau', + 'bds' => 'Burunge', + 'bdt' => 'Bokoto', + 'bdu' => 'Oroko', + 'bdv' => 'Bodo Parja', + 'bdw' => 'Baham', + 'bdx' => 'Budong-Budong', + 'bdy' => 'Bandjalang', + 'bdz' => 'Badeshi', + 'bea' => 'Beaver', + 'beb' => 'Bebele', + 'bec' => 'Iceve-Maci', + 'bed' => 'Bedoanas', + 'bee' => 'Byangsi', + 'bef' => 'Benabena', + 'beg' => 'Belait', + 'beh' => 'Biali', + 'bei' => 'Bekati\'', + 'bej' => 'Beja', + 'bek' => 'Bebeli', + 'be' => 'Belarusian', + 'bel' => 'Belarusian', + 'bem' => 'Bemba (Zambia)', + 'bn' => 'Bengali', + 'ben' => 'Bengali', + 'beo' => 'Beami', + 'bep' => 'Besoa', + 'beq' => 'Beembe', + 'bes' => 'Besme', + 'bet' => 'Guiberoua Béte', + 'beu' => 'Blagar', + 'bev' => 'Daloa Bété', + 'bew' => 'Betawi', + 'bex' => 'Jur Modo', + 'bey' => 'Beli (Papua New Guinea)', + 'bez' => 'Bena (Tanzania)', + 'bfa' => 'Bari', + 'bfb' => 'Pauri Bareli', + 'bfc' => 'Panyi Bai', + 'bfd' => 'Bafut', + 'bfe' => 'Betaf', + 'bff' => 'Bofi', + 'bfg' => 'Busang Kayan', + 'bfh' => 'Blafe', + 'bfi' => 'British Sign Language', + 'bfj' => 'Bafanji', + 'bfk' => 'Ban Khor Sign Language', + 'bfl' => 'Banda-Ndélé', + 'bfm' => 'Mmen', + 'bfn' => 'Bunak', + 'bfo' => 'Malba Birifor', + 'bfp' => 'Beba', + 'bfq' => 'Badaga', + 'bfr' => 'Bazigar', + 'bfs' => 'Southern Bai', + 'bft' => 'Balti', + 'bfu' => 'Gahri', + 'bfw' => 'Bondo', + 'bfx' => 'Bantayanon', + 'bfy' => 'Bagheli', + 'bfz' => 'Mahasu Pahari', + 'bga' => 'Gwamhi-Wuri', + 'bgb' => 'Bobongko', + 'bgc' => 'Haryanvi', + 'bgd' => 'Rathwi Bareli', + 'bge' => 'Bauria', + 'bgf' => 'Bangandu', + 'bgg' => 'Bugun', + 'bgi' => 'Giangan', + 'bgj' => 'Bangolan', + 'bgk' => 'Bit', + 'bgl' => 'Bo (Laos)', + 'bgn' => 'Western Balochi', + 'bgo' => 'Baga Koga', + 'bgp' => 'Eastern Balochi', + 'bgq' => 'Bagri', + 'bgr' => 'Bawm Chin', + 'bgs' => 'Tagabawa', + 'bgt' => 'Bughotu', + 'bgu' => 'Mbongno', + 'bgv' => 'Warkay-Bipim', + 'bgw' => 'Bhatri', + 'bgx' => 'Balkan Gagauz Turkish', + 'bgy' => 'Benggoi', + 'bgz' => 'Banggai', + 'bha' => 'Bharia', + 'bhb' => 'Bhili', + 'bhc' => 'Biga', + 'bhd' => 'Bhadrawahi', + 'bhe' => 'Bhaya', + 'bhf' => 'Odiai', + 'bhg' => 'Binandere', + 'bhh' => 'Bukharic', + 'bhi' => 'Bhilali', + 'bhj' => 'Bahing', + 'bhl' => 'Bimin', + 'bhm' => 'Bathari', + 'bhn' => 'Bohtan Neo-Aramaic', + 'bho' => 'Bhojpuri', + 'bhp' => 'Bima', + 'bhq' => 'Tukang Besi South', + 'bhr' => 'Bara Malagasy', + 'bhs' => 'Buwal', + 'bht' => 'Bhattiyali', + 'bhu' => 'Bhunjia', + 'bhv' => 'Bahau', + 'bhw' => 'Biak', + 'bhx' => 'Bhalay', + 'bhy' => 'Bhele', + 'bhz' => 'Bada (Indonesia)', + 'bia' => 'Badimaya', + 'bib' => 'Bissa', + 'bic' => 'Bikaru', + 'bid' => 'Bidiyo', + 'bie' => 'Bepour', + 'bif' => 'Biafada', + 'big' => 'Biangai', + 'bij' => 'Vaghat-Ya-Bijim-Legeri', + 'bik' => 'Bikol', + 'bil' => 'Bile', + 'bim' => 'Bimoba', + 'bin' => 'Bini', + 'bio' => 'Nai', + 'bip' => 'Bila', + 'biq' => 'Bipi', + 'bir' => 'Bisorio', + 'bi' => 'Bislama', + 'bis' => 'Bislama', + 'bit' => 'Berinomo', + 'biu' => 'Biete', + 'biv' => 'Southern Birifor', + 'biw' => 'Kol (Cameroon)', + 'bix' => 'Bijori', + 'biy' => 'Birhor', + 'biz' => 'Baloi', + 'bja' => 'Budza', + 'bjb' => 'Banggarla', + 'bjc' => 'Bariji', + 'bje' => 'Biao-Jiao Mien', + 'bjf' => 'Barzani Jewish Neo-Aramaic', + 'bjg' => 'Bidyogo', + 'bjh' => 'Bahinemo', + 'bji' => 'Burji', + 'bjj' => 'Kanauji', + 'bjk' => 'Barok', + 'bjl' => 'Bulu (Papua New Guinea)', + 'bjm' => 'Bajelani', + 'bjn' => 'Banjar', + 'bjo' => 'Mid-Southern Banda', + 'bjp' => 'Fanamaket', + 'bjr' => 'Binumarien', + 'bjs' => 'Bajan', + 'bjt' => 'Balanta-Ganja', + 'bju' => 'Busuu', + 'bjv' => 'Bedjond', + 'bjw' => 'Bakwé', + 'bjx' => 'Banao Itneg', + 'bjy' => 'Bayali', + 'bjz' => 'Baruga', + 'bka' => 'Kyak', + 'bkc' => 'Baka (Cameroon)', + 'bkd' => 'Binukid', + 'bkf' => 'Beeke', + 'bkg' => 'Buraka', + 'bkh' => 'Bakoko', + 'bki' => 'Baki', + 'bkj' => 'Pande', + 'bkk' => 'Brokskat', + 'bkl' => 'Berik', + 'bkm' => 'Kom (Cameroon)', + 'bkn' => 'Bukitan', + 'bko' => 'Kwa\'', + 'bkp' => 'Boko (Democratic Republic of Congo)', + 'bkq' => 'Bakairí', + 'bkr' => 'Bakumpai', + 'bks' => 'Northern Sorsoganon', + 'bkt' => 'Boloki', + 'bku' => 'Buhid', + 'bkv' => 'Bekwarra', + 'bkw' => 'Bekwel', + 'bkx' => 'Baikeno', + 'bky' => 'Bokyi', + 'bkz' => 'Bungku', + 'bla' => 'Siksika', + 'blb' => 'Bilua', + 'blc' => 'Bella Coola', + 'bld' => 'Bolango', + 'ble' => 'Balanta-Kentohe', + 'blf' => 'Buol', + 'blg' => 'Balau', + 'blh' => 'Kuwaa', + 'bli' => 'Bolia', + 'blj' => 'Bolongan', + 'blk' => 'Pa\'o Karen', + 'bll' => 'Biloxi', + 'blm' => 'Beli (South Sudan)', + 'bln' => 'Southern Catanduanes Bikol', + 'blo' => 'Anii', + 'blp' => 'Blablanga', + 'blq' => 'Baluan-Pam', + 'blr' => 'Blang', + 'bls' => 'Balaesang', + 'blt' => 'Tai Dam', + 'blv' => 'Kibala', + 'blw' => 'Balangao', + 'blx' => 'Mag-Indi Ayta', + 'bly' => 'Notre', + 'blz' => 'Balantak', + 'bma' => 'Lame', + 'bmb' => 'Bembe', + 'bmc' => 'Biem', + 'bmd' => 'Baga Manduri', + 'bme' => 'Limassa', + 'bmf' => 'Bom-Kim', + 'bmg' => 'Bamwe', + 'bmh' => 'Kein', + 'bmi' => 'Bagirmi', + 'bmj' => 'Bote-Majhi', + 'bmk' => 'Ghayavi', + 'bml' => 'Bomboli', + 'bmm' => 'Northern Betsimisaraka Malagasy', + 'bmn' => 'Bina (Papua New Guinea)', + 'bmo' => 'Bambalang', + 'bmp' => 'Bulgebi', + 'bmq' => 'Bomu', + 'bmr' => 'Muinane', + 'bms' => 'Bilma Kanuri', + 'bmt' => 'Biao Mon', + 'bmu' => 'Somba-Siawari', + 'bmv' => 'Bum', + 'bmw' => 'Bomwali', + 'bmx' => 'Baimak', + 'bmz' => 'Baramu', + 'bna' => 'Bonerate', + 'bnb' => 'Bookan', + 'bnc' => 'Bontok', + 'bnd' => 'Banda (Indonesia)', + 'bne' => 'Bintauna', + 'bnf' => 'Masiwang', + 'bng' => 'Benga', + 'bni' => 'Bangi', + 'bnj' => 'Eastern Tawbuid', + 'bnk' => 'Bierebo', + 'bnl' => 'Boon', + 'bnm' => 'Batanga', + 'bnn' => 'Bunun', + 'bno' => 'Bantoanon', + 'bnp' => 'Bola', + 'bnq' => 'Bantik', + 'bnr' => 'Butmas-Tur', + 'bns' => 'Bundeli', + 'bnu' => 'Bentong', + 'bnv' => 'Bonerif', + 'bnw' => 'Bisis', + 'bnx' => 'Bangubangu', + 'bny' => 'Bintulu', + 'bnz' => 'Beezen', + 'boa' => 'Bora', + 'bob' => 'Aweer', + 'bo' => 'Tibetan', + 'bod' => 'Tibetan', + 'boe' => 'Mundabli', + 'bof' => 'Bolon', + 'bog' => 'Bamako Sign Language', + 'boh' => 'Boma', + 'boi' => 'Barbareño', + 'boj' => 'Anjam', + 'bok' => 'Bonjo', + 'bol' => 'Bole', + 'bom' => 'Berom', + 'bon' => 'Bine', + 'boo' => 'Tiemacèwè Bozo', + 'bop' => 'Bonkiman', + 'boq' => 'Bogaya', + 'bor' => 'Borôro', + 'bs' => 'Bosnian', + 'bos' => 'Bosnian', + 'bot' => 'Bongo', + 'bou' => 'Bondei', + 'bov' => 'Tuwuli', + 'bow' => 'Rema', + 'box' => 'Buamu', + 'boy' => 'Bodo (Central African Republic)', + 'boz' => 'Tiéyaxo Bozo', + 'bpa' => 'Daakaka', + 'bpb' => 'Barbacoas', + 'bpd' => 'Banda-Banda', + 'bpg' => 'Bonggo', + 'bph' => 'Botlikh', + 'bpi' => 'Bagupi', + 'bpj' => 'Binji', + 'bpk' => 'Orowe', + 'bpl' => 'Broome Pearling Lugger Pidgin', + 'bpm' => 'Biyom', + 'bpn' => 'Dzao Min', + 'bpo' => 'Anasi', + 'bpp' => 'Kaure', + 'bpq' => 'Banda Malay', + 'bpr' => 'Koronadal Blaan', + 'bps' => 'Sarangani Blaan', + 'bpt' => 'Barrow Point', + 'bpu' => 'Bongu', + 'bpv' => 'Bian Marind', + 'bpw' => 'Bo (Papua New Guinea)', + 'bpx' => 'Palya Bareli', + 'bpy' => 'Bishnupriya', + 'bpz' => 'Bilba', + 'bqa' => 'Tchumbuli', + 'bqb' => 'Bagusa', + 'bqc' => 'Boko (Benin)', + 'bqd' => 'Bung', + 'bqf' => 'Baga Kaloum', + 'bqg' => 'Bago-Kusuntu', + 'bqh' => 'Baima', + 'bqi' => 'Bakhtiari', + 'bqj' => 'Bandial', + 'bqk' => 'Banda-Mbrès', + 'bql' => 'Bilakura', + 'bqm' => 'Wumboko', + 'bqn' => 'Bulgarian Sign Language', + 'bqo' => 'Balo', + 'bqp' => 'Busa', + 'bqq' => 'Biritai', + 'bqr' => 'Burusu', + 'bqs' => 'Bosngun', + 'bqt' => 'Bamukumbit', + 'bqu' => 'Boguru', + 'bqv' => 'Koro Wachi', + 'bqw' => 'Buru (Nigeria)', + 'bqx' => 'Baangi', + 'bqy' => 'Bengkala Sign Language', + 'bqz' => 'Bakaka', + 'bra' => 'Braj', + 'brb' => 'Lave', + 'brc' => 'Berbice Creole Dutch', + 'brd' => 'Baraamu', + 'br' => 'Breton', + 'bre' => 'Breton', + 'brf' => 'Bera', + 'brg' => 'Baure', + 'brh' => 'Brahui', + 'bri' => 'Mokpwe', + 'brj' => 'Bieria', + 'brk' => 'Birked', + 'brl' => 'Birwa', + 'brm' => 'Barambu', + 'brn' => 'Boruca', + 'bro' => 'Brokkat', + 'brp' => 'Barapasi', + 'brq' => 'Breri', + 'brr' => 'Birao', + 'brs' => 'Baras', + 'brt' => 'Bitare', + 'bru' => 'Eastern Bru', + 'brv' => 'Western Bru', + 'brw' => 'Bellari', + 'brx' => 'Bodo (India)', + 'bry' => 'Burui', + 'brz' => 'Bilbil', + 'bsa' => 'Abinomn', + 'bsb' => 'Brunei Bisaya', + 'bsc' => 'Bassari', + 'bse' => 'Wushi', + 'bsf' => 'Bauchi', + 'bsg' => 'Bashkardi', + 'bsh' => 'Kati', + 'bsi' => 'Bassossi', + 'bsj' => 'Bangwinji', + 'bsk' => 'Burushaski', + 'bsl' => 'Basa-Gumna', + 'bsm' => 'Busami', + 'bsn' => 'Barasana-Eduria', + 'bso' => 'Buso', + 'bsp' => 'Baga Sitemu', + 'bsq' => 'Bassa', + 'bsr' => 'Bassa-Kontagora', + 'bss' => 'Akoose', + 'bst' => 'Basketo', + 'bsu' => 'Bahonsuai', + 'bsv' => 'Baga Sobané', + 'bsw' => 'Baiso', + 'bsx' => 'Yangkam', + 'bsy' => 'Sabah Bisaya', + 'bta' => 'Bata', + 'btc' => 'Bati (Cameroon)', + 'btd' => 'Batak Dairi', + 'bte' => 'Gamo-Ningi', + 'btf' => 'Birgit', + 'btg' => 'Gagnoa Bété', + 'bth' => 'Biatah Bidayuh', + 'bti' => 'Burate', + 'btj' => 'Bacanese Malay', + 'btm' => 'Batak Mandailing', + 'btn' => 'Ratagnon', + 'bto' => 'Rinconada Bikol', + 'btp' => 'Budibud', + 'btq' => 'Batek', + 'btr' => 'Baetora', + 'bts' => 'Batak Simalungun', + 'btt' => 'Bete-Bendi', + 'btu' => 'Batu', + 'btv' => 'Bateri', + 'btw' => 'Butuanon', + 'btx' => 'Batak Karo', + 'bty' => 'Bobot', + 'btz' => 'Batak Alas-Kluet', + 'bua' => 'Buriat', + 'bub' => 'Bua', + 'buc' => 'Bushi', + 'bud' => 'Ntcham', + 'bue' => 'Beothuk', + 'buf' => 'Bushoong', + 'bug' => 'Buginese', + 'buh' => 'Younuo Bunu', + 'bui' => 'Bongili', + 'buj' => 'Basa-Gurmana', + 'buk' => 'Bugawac', + 'bg' => 'Bulgarian', + 'bul' => 'Bulgarian', + 'bum' => 'Bulu (Cameroon)', + 'bun' => 'Sherbro', + 'buo' => 'Terei', + 'bup' => 'Busoa', + 'buq' => 'Brem', + 'bus' => 'Bokobaru', + 'but' => 'Bungain', + 'buu' => 'Budu', + 'buv' => 'Bun', + 'buw' => 'Bubi', + 'bux' => 'Boghom', + 'buy' => 'Bullom So', + 'buz' => 'Bukwen', + 'bva' => 'Barein', + 'bvb' => 'Bube', + 'bvc' => 'Baelelea', + 'bvd' => 'Baeggu', + 'bve' => 'Berau Malay', + 'bvf' => 'Boor', + 'bvg' => 'Bonkeng', + 'bvh' => 'Bure', + 'bvi' => 'Belanda Viri', + 'bvj' => 'Baan', + 'bvk' => 'Bukat', + 'bvl' => 'Bolivian Sign Language', + 'bvm' => 'Bamunka', + 'bvn' => 'Buna', + 'bvo' => 'Bolgo', + 'bvp' => 'Bumang', + 'bvq' => 'Birri', + 'bvr' => 'Burarra', + 'bvt' => 'Bati (Indonesia)', + 'bvu' => 'Bukit Malay', + 'bvv' => 'Baniva', + 'bvw' => 'Boga', + 'bvx' => 'Dibole', + 'bvy' => 'Baybayanon', + 'bvz' => 'Bauzi', + 'bwa' => 'Bwatoo', + 'bwb' => 'Namosi-Naitasiri-Serua', + 'bwc' => 'Bwile', + 'bwd' => 'Bwaidoka', + 'bwe' => 'Bwe Karen', + 'bwf' => 'Boselewa', + 'bwg' => 'Barwe', + 'bwh' => 'Bishuo', + 'bwi' => 'Baniwa', + 'bwj' => 'Láá Láá Bwamu', + 'bwk' => 'Bauwaki', + 'bwl' => 'Bwela', + 'bwm' => 'Biwat', + 'bwn' => 'Wunai Bunu', + 'bwo' => 'Boro (Ethiopia)', + 'bwp' => 'Mandobo Bawah', + 'bwq' => 'Southern Bobo Madaré', + 'bwr' => 'Bura-Pabir', + 'bws' => 'Bomboma', + 'bwt' => 'Bafaw-Balong', + 'bwu' => 'Buli (Ghana)', + 'bww' => 'Bwa', + 'bwx' => 'Bu-Nao Bunu', + 'bwy' => 'Cwi Bwamu', + 'bwz' => 'Bwisi', + 'bxa' => 'Tairaha', + 'bxb' => 'Belanda Bor', + 'bxc' => 'Molengue', + 'bxd' => 'Pela', + 'bxe' => 'Birale', + 'bxf' => 'Bilur', + 'bxg' => 'Bangala', + 'bxh' => 'Buhutu', + 'bxi' => 'Pirlatapa', + 'bxj' => 'Bayungu', + 'bxk' => 'Bukusu', + 'bxl' => 'Jalkunan', + 'bxm' => 'Mongolia Buriat', + 'bxn' => 'Burduna', + 'bxo' => 'Barikanchi', + 'bxp' => 'Bebil', + 'bxq' => 'Beele', + 'bxr' => 'Russia Buriat', + 'bxs' => 'Busam', + 'bxu' => 'China Buriat', + 'bxv' => 'Berakou', + 'bxw' => 'Bankagooma', + 'bxz' => 'Binahari', + 'bya' => 'Batak', + 'byb' => 'Bikya', + 'byc' => 'Ubaghara', + 'byd' => 'Benyadu\'', + 'bye' => 'Pouye', + 'byf' => 'Bete', + 'byg' => 'Baygo', + 'byh' => 'Bhujel', + 'byi' => 'Buyu', + 'byj' => 'Bina (Nigeria)', + 'byk' => 'Biao', + 'byl' => 'Bayono', + 'bym' => 'Bidyara', + 'byn' => 'Bilin', + 'byo' => 'Biyo', + 'byp' => 'Bumaji', + 'byq' => 'Basay', + 'byr' => 'Baruya', + 'bys' => 'Burak', + 'byt' => 'Berti', + 'byv' => 'Medumba', + 'byw' => 'Belhariya', + 'byx' => 'Qaqet', + 'byz' => 'Banaro', + 'bza' => 'Bandi', + 'bzb' => 'Andio', + 'bzc' => 'Southern Betsimisaraka Malagasy', + 'bzd' => 'Bribri', + 'bze' => 'Jenaama Bozo', + 'bzf' => 'Boikin', + 'bzg' => 'Babuza', + 'bzh' => 'Mapos Buang', + 'bzi' => 'Bisu', + 'bzj' => 'Belize Kriol English', + 'bzk' => 'Nicaragua Creole English', + 'bzl' => 'Boano (Sulawesi)', + 'bzm' => 'Bolondo', + 'bzn' => 'Boano (Maluku)', + 'bzo' => 'Bozaba', + 'bzp' => 'Kemberano', + 'bzq' => 'Buli (Indonesia)', + 'bzr' => 'Biri', + 'bzs' => 'Brazilian Sign Language', + 'bzt' => 'Brithenig', + 'bzu' => 'Burmeso', + 'bzv' => 'Naami', + 'bzw' => 'Basa (Nigeria)', + 'bzx' => 'Kɛlɛngaxo Bozo', + 'bzy' => 'Obanliku', + 'bzz' => 'Evant', + 'caa' => 'Chortí', + 'cab' => 'Garifuna', + 'cac' => 'Chuj', + 'cad' => 'Caddo', + 'cae' => 'Lehar', + 'caf' => 'Southern Carrier', + 'cag' => 'Nivaclé', + 'cah' => 'Cahuarano', + 'caj' => 'Chané', + 'cak' => 'Kaqchikel', + 'cal' => 'Carolinian', + 'cam' => 'Cemuhî', + 'can' => 'Chambri', + 'cao' => 'Chácobo', + 'cap' => 'Chipaya', + 'caq' => 'Car Nicobarese', + 'car' => 'Galibi Carib', + 'cas' => 'Tsimané', + 'ca' => 'Catalan', + 'cat' => 'Catalan', + 'cav' => 'Cavineña', + 'caw' => 'Callawalla', + 'cax' => 'Chiquitano', + 'cay' => 'Cayuga', + 'caz' => 'Canichana', + 'cbb' => 'Cabiyarí', + 'cbc' => 'Carapana', + 'cbd' => 'Carijona', + 'cbg' => 'Chimila', + 'cbi' => 'Chachi', + 'cbj' => 'Ede Cabe', + 'cbk' => 'Chavacano', + 'cbl' => 'Bualkhaw Chin', + 'cbn' => 'Nyahkur', + 'cbo' => 'Izora', + 'cbq' => 'Tsucuba', + 'cbr' => 'Cashibo-Cacataibo', + 'cbs' => 'Cashinahua', + 'cbt' => 'Chayahuita', + 'cbu' => 'Candoshi-Shapra', + 'cbv' => 'Cacua', + 'cbw' => 'Kinabalian', + 'cby' => 'Carabayo', + 'cca' => 'Cauca', + 'ccc' => 'Chamicuro', + 'ccd' => 'Cafundo Creole', + 'cce' => 'Chopi', + 'ccg' => 'Samba Daka', + 'cch' => 'Atsam', + 'ccj' => 'Kasanga', + 'ccl' => 'Cutchi-Swahili', + 'ccm' => 'Malaccan Creole Malay', + 'cco' => 'Comaltepec Chinantec', + 'ccp' => 'Chakma', + 'ccr' => 'Cacaopera', + 'cda' => 'Choni', + 'cde' => 'Chenchu', + 'cdf' => 'Chiru', + 'cdg' => 'Chamari', + 'cdh' => 'Chambeali', + 'cdi' => 'Chodri', + 'cdj' => 'Churahi', + 'cdm' => 'Chepang', + 'cdn' => 'Chaudangsi', + 'cdo' => 'Min Dong Chinese', + 'cdr' => 'Cinda-Regi-Tiyal', + 'cds' => 'Chadian Sign Language', + 'cdy' => 'Chadong', + 'cdz' => 'Koda', + 'cea' => 'Lower Chehalis', + 'ceb' => 'Cebuano', + 'ceg' => 'Chamacoco', + 'cek' => 'Eastern Khumi Chin', + 'cen' => 'Cen', + 'cs' => 'Czech', + 'ces' => 'Czech', + 'cet' => 'Centúúm', + 'cfa' => 'Dijim-Bwilim', + 'cfd' => 'Cara', + 'cfg' => 'Como Karim', + 'cfm' => 'Falam Chin', + 'cga' => 'Changriwa', + 'cgc' => 'Kagayanen', + 'cgg' => 'Chiga', + 'cgk' => 'Chocangacakha', + 'ch' => 'Chamorro', + 'cha' => 'Chamorro', + 'chb' => 'Chibcha', + 'chc' => 'Catawba', + 'chd' => 'Highland Oaxaca Chontal', + 'ce' => 'Chechen', + 'che' => 'Chechen', + 'chf' => 'Tabasco Chontal', + 'chg' => 'Chagatai', + 'chh' => 'Chinook', + 'chj' => 'Ojitlán Chinantec', + 'chk' => 'Chuukese', + 'chl' => 'Cahuilla', + 'chm' => 'Mari (Russia)', + 'chn' => 'Chinook jargon', + 'cho' => 'Choctaw', + 'chp' => 'Chipewyan', + 'chq' => 'Quiotepec Chinantec', + 'chr' => 'Cherokee', + 'cht' => 'Cholón', + 'cu' => 'Church Slavic', + 'chu' => 'Church Slavic', + 'cv' => 'Chuvash', + 'chv' => 'Chuvash', + 'chw' => 'Chuwabu', + 'chx' => 'Chantyal', + 'chy' => 'Cheyenne', + 'chz' => 'Ozumacín Chinantec', + 'cia' => 'Cia-Cia', + 'cib' => 'Ci Gbe', + 'cic' => 'Chickasaw', + 'cid' => 'Chimariko', + 'cie' => 'Cineni', + 'cih' => 'Chinali', + 'cik' => 'Chitkuli Kinnauri', + 'cim' => 'Cimbrian', + 'cin' => 'Cinta Larga', + 'cip' => 'Chiapanec', + 'cir' => 'Tiri', + 'ciw' => 'Chippewa', + 'ciy' => 'Chaima', + 'cja' => 'Western Cham', + 'cje' => 'Chru', + 'cjh' => 'Upper Chehalis', + 'cji' => 'Chamalal', + 'cjk' => 'Chokwe', + 'cjm' => 'Eastern Cham', + 'cjn' => 'Chenapian', + 'cjo' => 'Ashéninka Pajonal', + 'cjp' => 'Cabécar', + 'cjs' => 'Shor', + 'cjv' => 'Chuave', + 'cjy' => 'Jinyu Chinese', + 'ckb' => 'Central Kurdish', + 'ckh' => 'Chak', + 'ckl' => 'Cibak', + 'ckn' => 'Kaang Chin', + 'cko' => 'Anufo', + 'ckq' => 'Kajakse', + 'ckr' => 'Kairak', + 'cks' => 'Tayo', + 'ckt' => 'Chukot', + 'cku' => 'Koasati', + 'ckv' => 'Kavalan', + 'ckx' => 'Caka', + 'cky' => 'Cakfem-Mushere', + 'ckz' => 'Cakchiquel-Quiché Mixed Language', + 'cla' => 'Ron', + 'clc' => 'Chilcotin', + 'cld' => 'Chaldean Neo-Aramaic', + 'cle' => 'Lealao Chinantec', + 'clh' => 'Chilisso', + 'cli' => 'Chakali', + 'clj' => 'Laitu Chin', + 'clk' => 'Idu-Mishmi', + 'cll' => 'Chala', + 'clm' => 'Clallam', + 'clo' => 'Lowland Oaxaca Chontal', + 'clt' => 'Lautu Chin', + 'clu' => 'Caluyanun', + 'clw' => 'Chulym', + 'cly' => 'Eastern Highland Chatino', + 'cma' => 'Maa', + 'cme' => 'Cerma', + 'cmg' => 'Classical Mongolian', + 'cmi' => 'Emberá-Chamí', + 'cml' => 'Campalagian', + 'cmm' => 'Michigamea', + 'cmn' => 'Mandarin Chinese', + 'cmo' => 'Central Mnong', + 'cmr' => 'Mro-Khimi Chin', + 'cms' => 'Messapic', + 'cmt' => 'Camtho', + 'cna' => 'Changthang', + 'cnb' => 'Chinbon Chin', + 'cnc' => 'Côông', + 'cng' => 'Northern Qiang', + 'cnh' => 'Hakha Chin', + 'cni' => 'Asháninka', + 'cnk' => 'Khumi Chin', + 'cnl' => 'Lalana Chinantec', + 'cno' => 'Con', + 'cnr' => 'Montenegrin', + 'cns' => 'Central Asmat', + 'cnt' => 'Tepetotutla Chinantec', + 'cnu' => 'Chenoua', + 'cnw' => 'Ngawn Chin', + 'cnx' => 'Middle Cornish', + 'coa' => 'Cocos Islands Malay', + 'cob' => 'Chicomuceltec', + 'coc' => 'Cocopa', + 'cod' => 'Cocama-Cocamilla', + 'coe' => 'Koreguaje', + 'cof' => 'Colorado', + 'cog' => 'Chong', + 'coh' => 'Chonyi-Dzihana-Kauma', + 'coj' => 'Cochimi', + 'cok' => 'Santa Teresa Cora', + 'col' => 'Columbia-Wenatchi', + 'com' => 'Comanche', + 'con' => 'Cofán', + 'coo' => 'Comox', + 'cop' => 'Coptic', + 'coq' => 'Coquille', + 'kw' => 'Cornish', + 'cor' => 'Cornish', + 'co' => 'Corsican', + 'cos' => 'Corsican', + 'cot' => 'Caquinte', + 'cou' => 'Wamey', + 'cov' => 'Cao Miao', + 'cow' => 'Cowlitz', + 'cox' => 'Nanti', + 'coz' => 'Chochotec', + 'cpa' => 'Palantla Chinantec', + 'cpb' => 'Ucayali-Yurúa Ashéninka', + 'cpc' => 'Ajyíninka Apurucayali', + 'cpg' => 'Cappadocian Greek', + 'cpi' => 'Chinese Pidgin English', + 'cpn' => 'Cherepon', + 'cpo' => 'Kpeego', + 'cps' => 'Capiznon', + 'cpu' => 'Pichis Ashéninka', + 'cpx' => 'Pu-Xian Chinese', + 'cpy' => 'South Ucayali Ashéninka', + 'cqd' => 'Chuanqiandian Cluster Miao', + 'cra' => 'Chara', + 'crb' => 'Island Carib', + 'crc' => 'Lonwolwol', + 'crd' => 'Coeur d\'Alene', + 'cr' => 'Cree', + 'cre' => 'Cree', + 'crf' => 'Caramanta', + 'crg' => 'Michif', + 'crh' => 'Crimean Tatar', + 'cri' => 'Sãotomense', + 'crj' => 'Southern East Cree', + 'crk' => 'Plains Cree', + 'crl' => 'Northern East Cree', + 'crm' => 'Moose Cree', + 'crn' => 'El Nayar Cora', + 'cro' => 'Crow', + 'crq' => 'Iyo\'wujwa Chorote', + 'crr' => 'Carolina Algonquian', + 'crs' => 'Seselwa Creole French', + 'crt' => 'Iyojwa\'ja Chorote', + 'crv' => 'Chaura', + 'crw' => 'Chrau', + 'crx' => 'Carrier', + 'cry' => 'Cori', + 'crz' => 'Cruzeño', + 'csa' => 'Chiltepec Chinantec', + 'csb' => 'Kashubian', + 'csc' => 'Catalan Sign Language', + 'csd' => 'Chiangmai Sign Language', + 'cse' => 'Czech Sign Language', + 'csf' => 'Cuba Sign Language', + 'csg' => 'Chilean Sign Language', + 'csh' => 'Asho Chin', + 'csi' => 'Coast Miwok', + 'csj' => 'Songlai Chin', + 'csk' => 'Jola-Kasa', + 'csl' => 'Chinese Sign Language', + 'csm' => 'Central Sierra Miwok', + 'csn' => 'Colombian Sign Language', + 'cso' => 'Sochiapam Chinantec', + 'csq' => 'Croatia Sign Language', + 'csr' => 'Costa Rican Sign Language', + 'css' => 'Southern Ohlone', + 'cst' => 'Northern Ohlone', + 'csv' => 'Sumtu Chin', + 'csw' => 'Swampy Cree', + 'csy' => 'Siyin Chin', + 'csz' => 'Coos', + 'cta' => 'Tataltepec Chatino', + 'ctc' => 'Chetco', + 'ctd' => 'Tedim Chin', + 'cte' => 'Tepinapa Chinantec', + 'ctg' => 'Chittagonian', + 'cth' => 'Thaiphum Chin', + 'ctl' => 'Tlacoatzintepec Chinantec', + 'ctm' => 'Chitimacha', + 'ctn' => 'Chhintange', + 'cto' => 'Emberá-Catío', + 'ctp' => 'Western Highland Chatino', + 'cts' => 'Northern Catanduanes Bikol', + 'ctt' => 'Wayanad Chetti', + 'ctu' => 'Chol', + 'ctz' => 'Zacatepec Chatino', + 'cua' => 'Cua', + 'cub' => 'Cubeo', + 'cuc' => 'Usila Chinantec', + 'cug' => 'Chungmboko', + 'cuh' => 'Chuka', + 'cui' => 'Cuiba', + 'cuj' => 'Mashco Piro', + 'cuk' => 'San Blas Kuna', + 'cul' => 'Culina', + 'cuo' => 'Cumanagoto', + 'cup' => 'Cupeño', + 'cuq' => 'Cun', + 'cur' => 'Chhulung', + 'cut' => 'Teutila Cuicatec', + 'cuu' => 'Tai Ya', + 'cuv' => 'Cuvok', + 'cuw' => 'Chukwa', + 'cux' => 'Tepeuxila Cuicatec', + 'cuy' => 'Cuitlatec', + 'cvg' => 'Chug', + 'cvn' => 'Valle Nacional Chinantec', + 'cwa' => 'Kabwa', + 'cwb' => 'Maindo', + 'cwd' => 'Woods Cree', + 'cwe' => 'Kwere', + 'cwg' => 'Chewong', + 'cwt' => 'Kuwaataay', + 'cya' => 'Nopala Chatino', + 'cyb' => 'Cayubaba', + 'cy' => 'Welsh', + 'cym' => 'Welsh', + 'cyo' => 'Cuyonon', + 'czh' => 'Huizhou Chinese', + 'czk' => 'Knaanic', + 'czn' => 'Zenzontepec Chatino', + 'czo' => 'Min Zhong Chinese', + 'czt' => 'Zotung Chin', + 'daa' => 'Dangaléat', + 'dac' => 'Dambi', + 'dad' => 'Marik', + 'dae' => 'Duupa', + 'dag' => 'Dagbani', + 'dah' => 'Gwahatike', + 'dai' => 'Day', + 'daj' => 'Dar Fur Daju', + 'dak' => 'Dakota', + 'dal' => 'Dahalo', + 'dam' => 'Damakawa', + 'da' => 'Danish', + 'dan' => 'Danish', + 'dao' => 'Daai Chin', + 'daq' => 'Dandami Maria', + 'dar' => 'Dargwa', + 'das' => 'Daho-Doo', + 'dau' => 'Dar Sila Daju', + 'dav' => 'Taita', + 'daw' => 'Davawenyo', + 'dax' => 'Dayi', + 'daz' => 'Dao', + 'dba' => 'Bangime', + 'dbb' => 'Deno', + 'dbd' => 'Dadiya', + 'dbe' => 'Dabe', + 'dbf' => 'Edopi', + 'dbg' => 'Dogul Dom Dogon', + 'dbi' => 'Doka', + 'dbj' => 'Ida\'an', + 'dbl' => 'Dyirbal', + 'dbm' => 'Duguri', + 'dbn' => 'Duriankere', + 'dbo' => 'Dulbu', + 'dbp' => 'Duwai', + 'dbq' => 'Daba', + 'dbr' => 'Dabarre', + 'dbt' => 'Ben Tey Dogon', + 'dbu' => 'Bondum Dom Dogon', + 'dbv' => 'Dungu', + 'dbw' => 'Bankan Tey Dogon', + 'dby' => 'Dibiyaso', + 'dcc' => 'Deccan', + 'dcr' => 'Negerhollands', + 'dda' => 'Dadi Dadi', + 'ddd' => 'Dongotono', + 'dde' => 'Doondo', + 'ddg' => 'Fataluku', + 'ddi' => 'West Goodenough', + 'ddj' => 'Jaru', + 'ddn' => 'Dendi (Benin)', + 'ddo' => 'Dido', + 'ddr' => 'Dhudhuroa', + 'dds' => 'Donno So Dogon', + 'ddw' => 'Dawera-Daweloor', + 'dec' => 'Dagik', + 'ded' => 'Dedua', + 'dee' => 'Dewoin', + 'def' => 'Dezfuli', + 'deg' => 'Degema', + 'deh' => 'Dehwari', + 'dei' => 'Demisa', + 'dek' => 'Dek', + 'del' => 'Delaware', + 'dem' => 'Dem', + 'den' => 'Slave (Athapascan)', + 'dep' => 'Pidgin Delaware', + 'deq' => 'Dendi (Central African Republic)', + 'der' => 'Deori', + 'des' => 'Desano', + 'de' => 'German', + 'deu' => 'German', + 'dev' => 'Domung', + 'dez' => 'Dengese', + 'dga' => 'Southern Dagaare', + 'dgb' => 'Bunoge Dogon', + 'dgc' => 'Casiguran Dumagat Agta', + 'dgd' => 'Dagaari Dioula', + 'dge' => 'Degenan', + 'dgg' => 'Doga', + 'dgh' => 'Dghwede', + 'dgi' => 'Northern Dagara', + 'dgk' => 'Dagba', + 'dgl' => 'Andaandi', + 'dgn' => 'Dagoman', + 'dgo' => 'Dogri (individual language)', + 'dgr' => 'Dogrib', + 'dgs' => 'Dogoso', + 'dgt' => 'Ndra\'ngith', + 'dgu' => 'Degaru', + 'dgw' => 'Daungwurrung', + 'dgx' => 'Doghoro', + 'dgz' => 'Daga', + 'dhd' => 'Dhundari', + 'dhg' => 'Dhangu-Djangu', + 'dhi' => 'Dhimal', + 'dhl' => 'Dhalandji', + 'dhm' => 'Zemba', + 'dhn' => 'Dhanki', + 'dho' => 'Dhodia', + 'dhr' => 'Dhargari', + 'dhs' => 'Dhaiso', + 'dhu' => 'Dhurga', + 'dhv' => 'Dehu', + 'dhw' => 'Dhanwar (Nepal)', + 'dhx' => 'Dhungaloo', + 'dia' => 'Dia', + 'dib' => 'South Central Dinka', + 'dic' => 'Lakota Dida', + 'did' => 'Didinga', + 'dif' => 'Dieri', + 'dig' => 'Digo', + 'dih' => 'Kumiai', + 'dii' => 'Dimbong', + 'dij' => 'Dai', + 'dik' => 'Southwestern Dinka', + 'dil' => 'Dilling', + 'dim' => 'Dime', + 'din' => 'Dinka', + 'dio' => 'Dibo', + 'dip' => 'Northeastern Dinka', + 'diq' => 'Dimli (individual language)', + 'dir' => 'Dirim', + 'dis' => 'Dimasa', + 'dit' => 'Dirari', + 'diu' => 'Diriku', + 'dv' => 'Dhivehi', + 'div' => 'Dhivehi', + 'diw' => 'Northwestern Dinka', + 'dix' => 'Dixon Reef', + 'diy' => 'Diuwe', + 'diz' => 'Ding', + 'dja' => 'Djadjawurrung', + 'djb' => 'Djinba', + 'djc' => 'Dar Daju Daju', + 'djd' => 'Djamindjung', + 'dje' => 'Zarma', + 'djf' => 'Djangun', + 'dji' => 'Djinang', + 'djj' => 'Djeebbana', + 'djk' => 'Eastern Maroon Creole', + 'djm' => 'Jamsay Dogon', + 'djn' => 'Djauan', + 'djo' => 'Jangkang', + 'djr' => 'Djambarrpuyngu', + 'dju' => 'Kapriman', + 'djw' => 'Djawi', + 'dka' => 'Dakpakha', + 'dkk' => 'Dakka', + 'dkr' => 'Kuijau', + 'dks' => 'Southeastern Dinka', + 'dkx' => 'Mazagway', + 'dlg' => 'Dolgan', + 'dlk' => 'Dahalik', + 'dlm' => 'Dalmatian', + 'dln' => 'Darlong', + 'dma' => 'Duma', + 'dmb' => 'Mombo Dogon', + 'dmc' => 'Gavak', + 'dmd' => 'Madhi Madhi', + 'dme' => 'Dugwor', + 'dmg' => 'Upper Kinabatangan', + 'dmk' => 'Domaaki', + 'dml' => 'Dameli', + 'dmm' => 'Dama', + 'dmo' => 'Kemedzung', + 'dmr' => 'East Damar', + 'dms' => 'Dampelas', + 'dmu' => 'Dubu', + 'dmv' => 'Dumpas', + 'dmw' => 'Mudburra', + 'dmx' => 'Dema', + 'dmy' => 'Demta', + 'dna' => 'Upper Grand Valley Dani', + 'dnd' => 'Daonda', + 'dne' => 'Ndendeule', + 'dng' => 'Dungan', + 'dni' => 'Lower Grand Valley Dani', + 'dnj' => 'Dan', + 'dnk' => 'Dengka', + 'dnn' => 'Dzùùngoo', + 'dno' => 'Ndrulo', + 'dnr' => 'Danaru', + 'dnt' => 'Mid Grand Valley Dani', + 'dnu' => 'Danau', + 'dnv' => 'Danu', + 'dnw' => 'Western Dani', + 'dny' => 'Dení', + 'doa' => 'Dom', + 'dob' => 'Dobu', + 'doc' => 'Northern Dong', + 'doe' => 'Doe', + 'dof' => 'Domu', + 'doh' => 'Dong', + 'doi' => 'Dogri (macrolanguage)', + 'dok' => 'Dondo', + 'dol' => 'Doso', + 'don' => 'Toura (Papua New Guinea)', + 'doo' => 'Dongo', + 'dop' => 'Lukpa', + 'doq' => 'Dominican Sign Language', + 'dor' => 'Dori\'o', + 'dos' => 'Dogosé', + 'dot' => 'Dass', + 'dov' => 'Dombe', + 'dow' => 'Doyayo', + 'dox' => 'Bussa', + 'doy' => 'Dompo', + 'doz' => 'Dorze', + 'dpp' => 'Papar', + 'drb' => 'Dair', + 'drc' => 'Minderico', + 'drd' => 'Darmiya', + 'dre' => 'Dolpo', + 'drg' => 'Rungus', + 'dri' => 'C\'Lela', + 'drl' => 'Paakantyi', + 'drn' => 'West Damar', + 'dro' => 'Daro-Matu Melanau', + 'drq' => 'Dura', + 'drr' => 'Dororo', + 'drs' => 'Gedeo', + 'drt' => 'Drents', + 'dru' => 'Rukai', + 'dry' => 'Darai', + 'dsb' => 'Lower Sorbian', + 'dse' => 'Dutch Sign Language', + 'dsh' => 'Daasanach', + 'dsi' => 'Disa', + 'dsl' => 'Danish Sign Language', + 'dsn' => 'Dusner', + 'dso' => 'Desiya', + 'dsq' => 'Tadaksahak', + 'dta' => 'Daur', + 'dtb' => 'Labuk-Kinabatangan Kadazan', + 'dtd' => 'Ditidaht', + 'dth' => 'Adithinngithigh', + 'dti' => 'Ana Tinga Dogon', + 'dtk' => 'Tene Kan Dogon', + 'dtm' => 'Tomo Kan Dogon', + 'dtn' => 'Daatsʼíin', + 'dto' => 'Tommo So Dogon', + 'dtp' => 'Kadazan Dusun', + 'dtr' => 'Lotud', + 'dts' => 'Toro So Dogon', + 'dtt' => 'Toro Tegu Dogon', + 'dtu' => 'Tebul Ure Dogon', + 'dty' => 'Dotyali', + 'dua' => 'Duala', + 'dub' => 'Dubli', + 'duc' => 'Duna', + 'dud' => 'Hun-Saare', + 'due' => 'Umiray Dumaget Agta', + 'duf' => 'Dumbea', + 'dug' => 'Duruma', + 'duh' => 'Dungra Bhil', + 'dui' => 'Dumun', + 'duk' => 'Uyajitaya', + 'dul' => 'Alabat Island Agta', + 'dum' => 'Middle Dutch (ca. 1050-1350)', + 'dun' => 'Dusun Deyah', + 'duo' => 'Dupaninan Agta', + 'dup' => 'Duano', + 'duq' => 'Dusun Malang', + 'dur' => 'Dii', + 'dus' => 'Dumi', + 'duu' => 'Drung', + 'duv' => 'Duvle', + 'duw' => 'Dusun Witu', + 'dux' => 'Duungooma', + 'duy' => 'Dicamay Agta', + 'duz' => 'Duli-Gey', + 'dva' => 'Duau', + 'dwa' => 'Diri', + 'dwr' => 'Dawro', + 'dws' => 'Dutton World Speedwords', + 'dwu' => 'Dhuwal', + 'dww' => 'Dawawa', + 'dwy' => 'Dhuwaya', + 'dwz' => 'Dewas Rai', + 'dya' => 'Dyan', + 'dyb' => 'Dyaberdyaber', + 'dyd' => 'Dyugun', + 'dyg' => 'Villa Viciosa Agta', + 'dyi' => 'Djimini Senoufo', + 'dym' => 'Yanda Dom Dogon', + 'dyn' => 'Dyangadi', + 'dyo' => 'Jola-Fonyi', + 'dyu' => 'Dyula', + 'dyy' => 'Dyaabugay', + 'dza' => 'Tunzu', + 'dze' => 'Djiwarli', + 'dzg' => 'Dazaga', + 'dzl' => 'Dzalakha', + 'dzn' => 'Dzando', + 'dz' => 'Dzongkha', + 'dzo' => 'Dzongkha', + 'eaa' => 'Karenggapa', + 'ebg' => 'Ebughu', + 'ebk' => 'Eastern Bontok', + 'ebo' => 'Teke-Ebo', + 'ebr' => 'Ebrié', + 'ebu' => 'Embu', + 'ecr' => 'Eteocretan', + 'ecs' => 'Ecuadorian Sign Language', + 'ecy' => 'Eteocypriot', + 'eee' => 'E', + 'efa' => 'Efai', + 'efe' => 'Efe', + 'efi' => 'Efik', + 'ega' => 'Ega', + 'egl' => 'Emilian', + 'ego' => 'Eggon', + 'egy' => 'Egyptian (Ancient)', + 'ehu' => 'Ehueun', + 'eip' => 'Eipomek', + 'eit' => 'Eitiep', + 'eiv' => 'Askopan', + 'eja' => 'Ejamat', + 'eka' => 'Ekajuk', + 'ekc' => 'Eastern Karnic', + 'eke' => 'Ekit', + 'ekg' => 'Ekari', + 'eki' => 'Eki', + 'ekk' => 'Standard Estonian', + 'ekl' => 'Kol (Bangladesh)', + 'ekm' => 'Elip', + 'eko' => 'Koti', + 'ekp' => 'Ekpeye', + 'ekr' => 'Yace', + 'eky' => 'Eastern Kayah', + 'ele' => 'Elepi', + 'elh' => 'El Hugeirat', + 'eli' => 'Nding', + 'elk' => 'Elkei', + 'el' => 'Modern Greek (1453-)', + 'ell' => 'Modern Greek (1453-)', + 'elm' => 'Eleme', + 'elo' => 'El Molo', + 'elu' => 'Elu', + 'elx' => 'Elamite', + 'ema' => 'Emai-Iuleha-Ora', + 'emb' => 'Embaloh', + 'eme' => 'Emerillon', + 'emg' => 'Eastern Meohang', + 'emi' => 'Mussau-Emira', + 'emk' => 'Eastern Maninkakan', + 'emm' => 'Mamulique', + 'emn' => 'Eman', + 'emp' => 'Northern Emberá', + 'ems' => 'Pacific Gulf Yupik', + 'emu' => 'Eastern Muria', + 'emw' => 'Emplawas', + 'emx' => 'Erromintxela', + 'emy' => 'Epigraphic Mayan', + 'ena' => 'Apali', + 'enb' => 'Markweeta', + 'enc' => 'En', + 'end' => 'Ende', + 'enf' => 'Forest Enets', + 'en' => 'English', + 'eng' => 'English', + 'enh' => 'Tundra Enets', + 'enl' => 'Enlhet', + 'enm' => 'Middle English (1100-1500)', + 'enn' => 'Engenni', + 'eno' => 'Enggano', + 'enq' => 'Enga', + 'enr' => 'Emumu', + 'enu' => 'Enu', + 'env' => 'Enwan (Edu State)', + 'enw' => 'Enwan (Akwa Ibom State)', + 'enx' => 'Enxet', + 'eot' => 'Beti (Côte d\'Ivoire)', + 'epi' => 'Epie', + 'eo' => 'Esperanto', + 'epo' => 'Esperanto', + 'era' => 'Eravallan', + 'erg' => 'Sie', + 'erh' => 'Eruwa', + 'eri' => 'Ogea', + 'erk' => 'South Efate', + 'ero' => 'Horpa', + 'err' => 'Erre', + 'ers' => 'Ersu', + 'ert' => 'Eritai', + 'erw' => 'Erokwanas', + 'ese' => 'Ese Ejja', + 'esg' => 'Aheri Gondi', + 'esh' => 'Eshtehardi', + 'esi' => 'North Alaskan Inupiatun', + 'esk' => 'Northwest Alaska Inupiatun', + 'esl' => 'Egypt Sign Language', + 'esm' => 'Esuma', + 'esn' => 'Salvadoran Sign Language', + 'eso' => 'Estonian Sign Language', + 'esq' => 'Esselen', + 'ess' => 'Central Siberian Yupik', + 'et' => 'Estonian', + 'est' => 'Estonian', + 'esu' => 'Central Yupik', + 'esy' => 'Eskayan', + 'etb' => 'Etebi', + 'etc' => 'Etchemin', + 'eth' => 'Ethiopian Sign Language', + 'etn' => 'Eton (Vanuatu)', + 'eto' => 'Eton (Cameroon)', + 'etr' => 'Edolo', + 'ets' => 'Yekhee', + 'ett' => 'Etruscan', + 'etu' => 'Ejagham', + 'etx' => 'Eten', + 'etz' => 'Semimi', + 'eu' => 'Basque', + 'eus' => 'Basque', + 'eve' => 'Even', + 'evh' => 'Uvbie', + 'evn' => 'Evenki', + 'ee' => 'Ewe', + 'ewe' => 'Ewe', + 'ewo' => 'Ewondo', + 'ext' => 'Extremaduran', + 'eya' => 'Eyak', + 'eyo' => 'Keiyo', + 'eza' => 'Ezaa', + 'eze' => 'Uzekwe', + 'faa' => 'Fasu', + 'fab' => 'Fa d\'Ambu', + 'fad' => 'Wagi', + 'faf' => 'Fagani', + 'fag' => 'Finongan', + 'fah' => 'Baissa Fali', + 'fai' => 'Faiwol', + 'faj' => 'Faita', + 'fak' => 'Fang (Cameroon)', + 'fal' => 'South Fali', + 'fam' => 'Fam', + 'fan' => 'Fang (Equatorial Guinea)', + 'fo' => 'Faroese', + 'fao' => 'Faroese', + 'fap' => 'Paloor', + 'far' => 'Fataleka', + 'fa' => 'Persian', + 'fas' => 'Persian', + 'fat' => 'Fanti', + 'fau' => 'Fayu', + 'fax' => 'Fala', + 'fay' => 'Southwestern Fars', + 'faz' => 'Northwestern Fars', + 'fbl' => 'West Albay Bikol', + 'fcs' => 'Quebec Sign Language', + 'fer' => 'Feroge', + 'ffi' => 'Foia Foia', + 'ffm' => 'Maasina Fulfulde', + 'fgr' => 'Fongoro', + 'fia' => 'Nobiin', + 'fie' => 'Fyer', + 'fj' => 'Fijian', + 'fij' => 'Fijian', + 'fil' => 'Filipino', + 'fi' => 'Finnish', + 'fin' => 'Finnish', + 'fip' => 'Fipa', + 'fir' => 'Firan', + 'fit' => 'Tornedalen Finnish', + 'fiw' => 'Fiwaga', + 'fkk' => 'Kirya-Konzəl', + 'fkv' => 'Kven Finnish', + 'fla' => 'Kalispel-Pend d\'Oreille', + 'flh' => 'Foau', + 'fli' => 'Fali', + 'fll' => 'North Fali', + 'fln' => 'Flinders Island', + 'flr' => 'Fuliiru', + 'fly' => 'Flaaitaal', + 'fmp' => 'Fe\'fe\'', + 'fmu' => 'Far Western Muria', + 'fnb' => 'Fanbak', + 'fng' => 'Fanagalo', + 'fni' => 'Fania', + 'fod' => 'Foodo', + 'foi' => 'Foi', + 'fom' => 'Foma', + 'fon' => 'Fon', + 'for' => 'Fore', + 'fos' => 'Siraya', + 'fpe' => 'Fernando Po Creole English', + 'fqs' => 'Fas', + 'fr' => 'French', + 'fra' => 'French', + 'frc' => 'Cajun French', + 'frd' => 'Fordata', + 'frk' => 'Frankish', + 'frm' => 'Middle French (ca. 1400-1600)', + 'fro' => 'Old French (842-ca. 1400)', + 'frp' => 'Arpitan', + 'frq' => 'Forak', + 'frr' => 'Northern Frisian', + 'frs' => 'Eastern Frisian', + 'frt' => 'Fortsenal', + 'fy' => 'Western Frisian', + 'fry' => 'Western Frisian', + 'fse' => 'Finnish Sign Language', + 'fsl' => 'French Sign Language', + 'fss' => 'Finland-Swedish Sign Language', + 'fub' => 'Adamawa Fulfulde', + 'fuc' => 'Pulaar', + 'fud' => 'East Futuna', + 'fue' => 'Borgu Fulfulde', + 'fuf' => 'Pular', + 'fuh' => 'Western Niger Fulfulde', + 'fui' => 'Bagirmi Fulfulde', + 'fuj' => 'Ko', + 'ff' => 'Fulah', + 'ful' => 'Fulah', + 'fum' => 'Fum', + 'fun' => 'Fulniô', + 'fuq' => 'Central-Eastern Niger Fulfulde', + 'fur' => 'Friulian', + 'fut' => 'Futuna-Aniwa', + 'fuu' => 'Furu', + 'fuv' => 'Nigerian Fulfulde', + 'fuy' => 'Fuyug', + 'fvr' => 'Fur', + 'fwa' => 'Fwâi', + 'fwe' => 'Fwe', + 'gaa' => 'Ga', + 'gab' => 'Gabri', + 'gac' => 'Mixed Great Andamanese', + 'gad' => 'Gaddang', + 'gae' => 'Guarequena', + 'gaf' => 'Gende', + 'gag' => 'Gagauz', + 'gah' => 'Alekano', + 'gai' => 'Borei', + 'gaj' => 'Gadsup', + 'gak' => 'Gamkonora', + 'gal' => 'Galolen', + 'gam' => 'Kandawo', + 'gan' => 'Gan Chinese', + 'gao' => 'Gants', + 'gap' => 'Gal', + 'gaq' => 'Gata\'', + 'gar' => 'Galeya', + 'gas' => 'Adiwasi Garasia', + 'gat' => 'Kenati', + 'gau' => 'Mudhili Gadaba', + 'gaw' => 'Nobonob', + 'gax' => 'Borana-Arsi-Guji Oromo', + 'gay' => 'Gayo', + 'gaz' => 'West Central Oromo', + 'gba' => 'Gbaya (Central African Republic)', + 'gbb' => 'Kaytetye', + 'gbd' => 'Karadjeri', + 'gbe' => 'Niksek', + 'gbf' => 'Gaikundi', + 'gbg' => 'Gbanziri', + 'gbh' => 'Defi Gbe', + 'gbi' => 'Galela', + 'gbj' => 'Bodo Gadaba', + 'gbk' => 'Gaddi', + 'gbl' => 'Gamit', + 'gbm' => 'Garhwali', + 'gbn' => 'Mo\'da', + 'gbo' => 'Northern Grebo', + 'gbp' => 'Gbaya-Bossangoa', + 'gbq' => 'Gbaya-Bozoum', + 'gbr' => 'Gbagyi', + 'gbs' => 'Gbesi Gbe', + 'gbu' => 'Gagadu', + 'gbv' => 'Gbanu', + 'gbw' => 'Gabi-Gabi', + 'gbx' => 'Eastern Xwla Gbe', + 'gby' => 'Gbari', + 'gbz' => 'Zoroastrian Dari', + 'gcc' => 'Mali', + 'gcd' => 'Ganggalida', + 'gce' => 'Galice', + 'gcf' => 'Guadeloupean Creole French', + 'gcl' => 'Grenadian Creole English', + 'gcn' => 'Gaina', + 'gcr' => 'Guianese Creole French', + 'gct' => 'Colonia Tovar German', + 'gda' => 'Gade Lohar', + 'gdb' => 'Pottangi Ollar Gadaba', + 'gdc' => 'Gugu Badhun', + 'gdd' => 'Gedaged', + 'gde' => 'Gude', + 'gdf' => 'Guduf-Gava', + 'gdg' => 'Ga\'dang', + 'gdh' => 'Gadjerawang', + 'gdi' => 'Gundi', + 'gdj' => 'Gurdjar', + 'gdk' => 'Gadang', + 'gdl' => 'Dirasha', + 'gdm' => 'Laal', + 'gdn' => 'Umanakaina', + 'gdo' => 'Ghodoberi', + 'gdq' => 'Mehri', + 'gdr' => 'Wipi', + 'gds' => 'Ghandruk Sign Language', + 'gdt' => 'Kungardutyi', + 'gdu' => 'Gudu', + 'gdx' => 'Godwari', + 'gea' => 'Geruma', + 'geb' => 'Kire', + 'gec' => 'Gboloo Grebo', + 'ged' => 'Gade', + 'geg' => 'Gengle', + 'geh' => 'Hutterite German', + 'gei' => 'Gebe', + 'gej' => 'Gen', + 'gek' => 'Ywom', + 'gel' => 'ut-Ma\'in', + 'geq' => 'Geme', + 'ges' => 'Geser-Gorom', + 'gev' => 'Eviya', + 'gew' => 'Gera', + 'gex' => 'Garre', + 'gey' => 'Enya', + 'gez' => 'Geez', + 'gfk' => 'Patpatar', + 'gft' => 'Gafat', + 'gga' => 'Gao', + 'ggb' => 'Gbii', + 'ggd' => 'Gugadj', + 'gge' => 'Guragone', + 'ggg' => 'Gurgula', + 'ggk' => 'Kungarakany', + 'ggl' => 'Ganglau', + 'ggt' => 'Gitua', + 'ggu' => 'Gagu', + 'ggw' => 'Gogodala', + 'gha' => 'Ghadamès', + 'ghc' => 'Hiberno-Scottish Gaelic', + 'ghe' => 'Southern Ghale', + 'ghh' => 'Northern Ghale', + 'ghk' => 'Geko Karen', + 'ghl' => 'Ghulfan', + 'ghn' => 'Ghanongga', + 'gho' => 'Ghomara', + 'ghr' => 'Ghera', + 'ghs' => 'Guhu-Samane', + 'ght' => 'Kuke', + 'gia' => 'Kitja', + 'gib' => 'Gibanawa', + 'gic' => 'Gail', + 'gid' => 'Gidar', + 'gie' => 'Gaɓogbo', + 'gig' => 'Goaria', + 'gih' => 'Githabul', + 'gil' => 'Gilbertese', + 'gim' => 'Gimi (Eastern Highlands)', + 'gin' => 'Hinukh', + 'gip' => 'Gimi (West New Britain)', + 'giq' => 'Green Gelao', + 'gir' => 'Red Gelao', + 'gis' => 'North Giziga', + 'git' => 'Gitxsan', + 'giu' => 'Mulao', + 'giw' => 'White Gelao', + 'gix' => 'Gilima', + 'giy' => 'Giyug', + 'giz' => 'South Giziga', + 'gji' => 'Geji', + 'gjk' => 'Kachi Koli', + 'gjm' => 'Gunditjmara', + 'gjn' => 'Gonja', + 'gjr' => 'Gurindji Kriol', + 'gju' => 'Gujari', + 'gka' => 'Guya', + 'gkd' => 'Magɨ (Madang Province)', + 'gke' => 'Ndai', + 'gkn' => 'Gokana', + 'gko' => 'Kok-Nar', + 'gkp' => 'Guinea Kpelle', + 'gku' => 'ǂUngkue', + 'gd' => 'Scottish Gaelic', + 'gla' => 'Scottish Gaelic', + 'glc' => 'Bon Gula', + 'gld' => 'Nanai', + 'ga' => 'Irish', + 'gle' => 'Irish', + 'gl' => 'Galician', + 'glg' => 'Galician', + 'glh' => 'Northwest Pashai', + 'gli' => 'Guliguli', + 'glj' => 'Gula Iro', + 'glk' => 'Gilaki', + 'gll' => 'Garlali', + 'glo' => 'Galambu', + 'glr' => 'Glaro-Twabo', + 'glu' => 'Gula (Chad)', + 'gv' => 'Manx', + 'glv' => 'Manx', + 'glw' => 'Glavda', + 'gly' => 'Gule', + 'gma' => 'Gambera', + 'gmb' => 'Gula\'alaa', + 'gmd' => 'Mághdì', + 'gmg' => 'Magɨyi', + 'gmh' => 'Middle High German (ca. 1050-1500)', + 'gml' => 'Middle Low German', + 'gmm' => 'Gbaya-Mbodomo', + 'gmn' => 'Gimnime', + 'gmu' => 'Gumalu', + 'gmv' => 'Gamo', + 'gmx' => 'Magoma', + 'gmy' => 'Mycenaean Greek', + 'gmz' => 'Mgbolizhia', + 'gna' => 'Kaansa', + 'gnb' => 'Gangte', + 'gnc' => 'Guanche', + 'gnd' => 'Zulgo-Gemzek', + 'gne' => 'Ganang', + 'gng' => 'Ngangam', + 'gnh' => 'Lere', + 'gni' => 'Gooniyandi', + 'gnj' => 'Ngen', + 'gnk' => '||Gana', + 'gnl' => 'Gangulu', + 'gnm' => 'Ginuman', + 'gnn' => 'Gumatj', + 'gno' => 'Northern Gondi', + 'gnq' => 'Gana', + 'gnr' => 'Gureng Gureng', + 'gnt' => 'Guntai', + 'gnu' => 'Gnau', + 'gnw' => 'Western Bolivian Guaraní', + 'gnz' => 'Ganzi', + 'goa' => 'Guro', + 'gob' => 'Playero', + 'goc' => 'Gorakor', + 'god' => 'Godié', + 'goe' => 'Gongduk', + 'gof' => 'Gofa', + 'gog' => 'Gogo', + 'goh' => 'Old High German (ca. 750-1050)', + 'goi' => 'Gobasi', + 'goj' => 'Gowlan', + 'gok' => 'Gowli', + 'gol' => 'Gola', + 'gom' => 'Goan Konkani', + 'gon' => 'Gondi', + 'goo' => 'Gone Dau', + 'gop' => 'Yeretuar', + 'goq' => 'Gorap', + 'gor' => 'Gorontalo', + 'gos' => 'Gronings', + 'got' => 'Gothic', + 'gou' => 'Gavar', + 'gow' => 'Gorowa', + 'gox' => 'Gobu', + 'goy' => 'Goundo', + 'goz' => 'Gozarkhani', + 'gpa' => 'Gupa-Abawa', + 'gpe' => 'Ghanaian Pidgin English', + 'gpn' => 'Taiap', + 'gqa' => 'Ga\'anda', + 'gqi' => 'Guiqiong', + 'gqn' => 'Guana (Brazil)', + 'gqr' => 'Gor', + 'gqu' => 'Qau', + 'gra' => 'Rajput Garasia', + 'grb' => 'Grebo', + 'grc' => 'Ancient Greek (to 1453)', + 'grd' => 'Guruntum-Mbaaru', + 'grg' => 'Madi', + 'grh' => 'Gbiri-Niragu', + 'gri' => 'Ghari', + 'grj' => 'Southern Grebo', + 'grm' => 'Kota Marudu Talantang', + 'gn' => 'Guarani', + 'grn' => 'Guarani', + 'gro' => 'Groma', + 'grq' => 'Gorovu', + 'grr' => 'Taznatit', + 'grs' => 'Gresi', + 'grt' => 'Garo', + 'gru' => 'Kistane', + 'grv' => 'Central Grebo', + 'grw' => 'Gweda', + 'grx' => 'Guriaso', + 'gry' => 'Barclayville Grebo', + 'grz' => 'Guramalum', + 'gse' => 'Ghanaian Sign Language', + 'gsg' => 'German Sign Language', + 'gsl' => 'Gusilay', + 'gsm' => 'Guatemalan Sign Language', + 'gsn' => 'Nema', + 'gso' => 'Southwest Gbaya', + 'gsp' => 'Wasembo', + 'gss' => 'Greek Sign Language', + 'gsw' => 'Swiss German', + 'gta' => 'Guató', + 'gtu' => 'Aghu-Tharnggala', + 'gua' => 'Shiki', + 'gub' => 'Guajajára', + 'guc' => 'Wayuu', + 'gud' => 'Yocoboué Dida', + 'gue' => 'Gurinji', + 'guf' => 'Gupapuyngu', + 'gug' => 'Paraguayan Guaraní', + 'guh' => 'Guahibo', + 'gui' => 'Eastern Bolivian Guaraní', + 'gu' => 'Gujarati', + 'guj' => 'Gujarati', + 'guk' => 'Gumuz', + 'gul' => 'Sea Island Creole English', + 'gum' => 'Guambiano', + 'gun' => 'Mbyá Guaraní', + 'guo' => 'Guayabero', + 'gup' => 'Gunwinggu', + 'guq' => 'Aché', + 'gur' => 'Farefare', + 'gus' => 'Guinean Sign Language', + 'gut' => 'Maléku Jaíka', + 'guu' => 'Yanomamö', + 'guw' => 'Gun', + 'gux' => 'Gourmanchéma', + 'guz' => 'Gusii', + 'gva' => 'Guana (Paraguay)', + 'gvc' => 'Guanano', + 'gve' => 'Duwet', + 'gvf' => 'Golin', + 'gvj' => 'Guajá', + 'gvl' => 'Gulay', + 'gvm' => 'Gurmana', + 'gvn' => 'Kuku-Yalanji', + 'gvo' => 'Gavião Do Jiparaná', + 'gvp' => 'Pará Gavião', + 'gvr' => 'Gurung', + 'gvs' => 'Gumawana', + 'gvy' => 'Guyani', + 'gwa' => 'Mbato', + 'gwb' => 'Gwa', + 'gwc' => 'Kalami', + 'gwd' => 'Gawwada', + 'gwe' => 'Gweno', + 'gwf' => 'Gowro', + 'gwg' => 'Moo', + 'gwi' => 'Gwichʼin', + 'gwj' => 'ǀGwi', + 'gwm' => 'Awngthim', + 'gwn' => 'Gwandara', + 'gwr' => 'Gwere', + 'gwt' => 'Gawar-Bati', + 'gwu' => 'Guwamu', + 'gww' => 'Kwini', + 'gwx' => 'Gua', + 'gxx' => 'Wè Southern', + 'gya' => 'Northwest Gbaya', + 'gyb' => 'Garus', + 'gyd' => 'Kayardild', + 'gye' => 'Gyem', + 'gyf' => 'Gungabula', + 'gyg' => 'Gbayi', + 'gyi' => 'Gyele', + 'gyl' => 'Gayil', + 'gym' => 'Ngäbere', + 'gyn' => 'Guyanese Creole English', + 'gyo' => 'Gyalsumdo', + 'gyr' => 'Guarayu', + 'gyy' => 'Gunya', + 'gza' => 'Ganza', + 'gzi' => 'Gazi', + 'gzn' => 'Gane', + 'haa' => 'Han', + 'hab' => 'Hanoi Sign Language', + 'hac' => 'Gurani', + 'had' => 'Hatam', + 'hae' => 'Eastern Oromo', + 'haf' => 'Haiphong Sign Language', + 'hag' => 'Hanga', + 'hah' => 'Hahon', + 'hai' => 'Haida', + 'haj' => 'Hajong', + 'hak' => 'Hakka Chinese', + 'hal' => 'Halang', + 'ham' => 'Hewa', + 'han' => 'Hangaza', + 'hao' => 'Hakö', + 'hap' => 'Hupla', + 'haq' => 'Ha', + 'har' => 'Harari', + 'has' => 'Haisla', + 'ht' => 'Haitian', + 'hat' => 'Haitian', + 'ha' => 'Hausa', + 'hau' => 'Hausa', + 'hav' => 'Havu', + 'haw' => 'Hawaiian', + 'hax' => 'Southern Haida', + 'hay' => 'Haya', + 'haz' => 'Hazaragi', + 'hba' => 'Hamba', + 'hbb' => 'Huba', + 'hbn' => 'Heiban', + 'hbo' => 'Ancient Hebrew', + 'sh' => 'Serbo-Croatian', + 'hbs' => 'Serbo-Croatian', + 'hbu' => 'Habu', + 'hca' => 'Andaman Creole Hindi', + 'hch' => 'Huichol', + 'hdn' => 'Northern Haida', + 'hds' => 'Honduras Sign Language', + 'hdy' => 'Hadiyya', + 'hea' => 'Northern Qiandong Miao', + 'he' => 'Hebrew', + 'heb' => 'Hebrew', + 'hed' => 'Herdé', + 'heg' => 'Helong', + 'heh' => 'Hehe', + 'hei' => 'Heiltsuk', + 'hem' => 'Hemba', + 'hz' => 'Herero', + 'her' => 'Herero', + 'hgm' => 'Haiǁom', + 'hgw' => 'Haigwai', + 'hhi' => 'Hoia Hoia', + 'hhr' => 'Kerak', + 'hhy' => 'Hoyahoya', + 'hia' => 'Lamang', + 'hib' => 'Hibito', + 'hid' => 'Hidatsa', + 'hif' => 'Fiji Hindi', + 'hig' => 'Kamwe', + 'hih' => 'Pamosu', + 'hii' => 'Hinduri', + 'hij' => 'Hijuk', + 'hik' => 'Seit-Kaitetu', + 'hil' => 'Hiligaynon', + 'hi' => 'Hindi', + 'hin' => 'Hindi', + 'hio' => 'Tsoa', + 'hir' => 'Himarimã', + 'hit' => 'Hittite', + 'hiw' => 'Hiw', + 'hix' => 'Hixkaryána', + 'hji' => 'Haji', + 'hka' => 'Kahe', + 'hke' => 'Hunde', + 'hkk' => 'Hunjara-Kaina Ke', + 'hkn' => 'Mel-Khaonh', + 'hks' => 'Hong Kong Sign Language', + 'hla' => 'Halia', + 'hlb' => 'Halbi', + 'hld' => 'Halang Doan', + 'hle' => 'Hlersu', + 'hlt' => 'Matu Chin', + 'hlu' => 'Hieroglyphic Luwian', + 'hma' => 'Southern Mashan Hmong', + 'hmb' => 'Humburi Senni Songhay', + 'hmc' => 'Central Huishui Hmong', + 'hmd' => 'Large Flowery Miao', + 'hme' => 'Eastern Huishui Hmong', + 'hmf' => 'Hmong Don', + 'hmg' => 'Southwestern Guiyang Hmong', + 'hmh' => 'Southwestern Huishui Hmong', + 'hmi' => 'Northern Huishui Hmong', + 'hmj' => 'Ge', + 'hmk' => 'Maek', + 'hml' => 'Luopohe Hmong', + 'hmm' => 'Central Mashan Hmong', + 'hmn' => 'Hmong', + 'ho' => 'Hiri Motu', + 'hmo' => 'Hiri Motu', + 'hmp' => 'Northern Mashan Hmong', + 'hmq' => 'Eastern Qiandong Miao', + 'hmr' => 'Hmar', + 'hms' => 'Southern Qiandong Miao', + 'hmt' => 'Hamtai', + 'hmu' => 'Hamap', + 'hmv' => 'Hmong Dô', + 'hmw' => 'Western Mashan Hmong', + 'hmy' => 'Southern Guiyang Hmong', + 'hmz' => 'Hmong Shua', + 'hna' => 'Mina (Cameroon)', + 'hnd' => 'Southern Hindko', + 'hne' => 'Chhattisgarhi', + 'hnh' => 'ǁAni', + 'hni' => 'Hani', + 'hnj' => 'Hmong Njua', + 'hnn' => 'Hanunoo', + 'hno' => 'Northern Hindko', + 'hns' => 'Caribbean Hindustani', + 'hnu' => 'Hung', + 'hoa' => 'Hoava', + 'hob' => 'Mari (Madang Province)', + 'hoc' => 'Ho', + 'hod' => 'Holma', + 'hoe' => 'Horom', + 'hoh' => 'Hobyót', + 'hoi' => 'Holikachuk', + 'hoj' => 'Hadothi', + 'hol' => 'Holu', + 'hom' => 'Homa', + 'hoo' => 'Holoholo', + 'hop' => 'Hopi', + 'hor' => 'Horo', + 'hos' => 'Ho Chi Minh City Sign Language', + 'hot' => 'Hote', + 'hov' => 'Hovongan', + 'how' => 'Honi', + 'hoy' => 'Holiya', + 'hoz' => 'Hozo', + 'hpo' => 'Hpon', + 'hps' => 'Hawai\'i Sign Language (HSL)', + 'hra' => 'Hrangkhol', + 'hrc' => 'Niwer Mil', + 'hre' => 'Hre', + 'hrk' => 'Haruku', + 'hrm' => 'Horned Miao', + 'hro' => 'Haroi', + 'hrp' => 'Nhirrpi', + 'hrt' => 'Hértevin', + 'hru' => 'Hruso', + 'hr' => 'Croatian', + 'hrv' => 'Croatian', + 'hrw' => 'Warwar Feni', + 'hrx' => 'Hunsrik', + 'hrz' => 'Harzani', + 'hsb' => 'Upper Sorbian', + 'hsh' => 'Hungarian Sign Language', + 'hsl' => 'Hausa Sign Language', + 'hsn' => 'Xiang Chinese', + 'hss' => 'Harsusi', + 'hti' => 'Hoti', + 'hto' => 'Minica Huitoto', + 'hts' => 'Hadza', + 'htu' => 'Hitu', + 'htx' => 'Middle Hittite', + 'hub' => 'Huambisa', + 'huc' => 'ǂHua', + 'hud' => 'Huaulu', + 'hue' => 'San Francisco Del Mar Huave', + 'huf' => 'Humene', + 'hug' => 'Huachipaeri', + 'huh' => 'Huilliche', + 'hui' => 'Huli', + 'huj' => 'Northern Guiyang Hmong', + 'huk' => 'Hulung', + 'hul' => 'Hula', + 'hum' => 'Hungana', + 'hu' => 'Hungarian', + 'hun' => 'Hungarian', + 'huo' => 'Hu', + 'hup' => 'Hupa', + 'huq' => 'Tsat', + 'hur' => 'Halkomelem', + 'hus' => 'Huastec', + 'hut' => 'Humla', + 'huu' => 'Murui Huitoto', + 'huv' => 'San Mateo Del Mar Huave', + 'huw' => 'Hukumina', + 'hux' => 'Nüpode Huitoto', + 'huy' => 'Hulaulá', + 'huz' => 'Hunzib', + 'hvc' => 'Haitian Vodoun Culture Language', + 'hve' => 'San Dionisio Del Mar Huave', + 'hvk' => 'Haveke', + 'hvn' => 'Sabu', + 'hvv' => 'Santa María Del Mar Huave', + 'hwa' => 'Wané', + 'hwc' => 'Hawai\'i Creole English', + 'hwo' => 'Hwana', + 'hya' => 'Hya', + 'hy' => 'Armenian', + 'hye' => 'Armenian', + 'hyw' => 'Western Armenian', + 'iai' => 'Iaai', + 'ian' => 'Iatmul', + 'iar' => 'Purari', + 'iba' => 'Iban', + 'ibb' => 'Ibibio', + 'ibd' => 'Iwaidja', + 'ibe' => 'Akpes', + 'ibg' => 'Ibanag', + 'ibh' => 'Bih', + 'ibl' => 'Ibaloi', + 'ibm' => 'Agoi', + 'ibn' => 'Ibino', + 'ig' => 'Igbo', + 'ibo' => 'Igbo', + 'ibr' => 'Ibuoro', + 'ibu' => 'Ibu', + 'iby' => 'Ibani', + 'ica' => 'Ede Ica', + 'ich' => 'Etkywan', + 'icl' => 'Icelandic Sign Language', + 'icr' => 'Islander Creole English', + 'ida' => 'Idakho-Isukha-Tiriki', + 'idb' => 'Indo-Portuguese', + 'idc' => 'Idon', + 'idd' => 'Ede Idaca', + 'ide' => 'Idere', + 'idi' => 'Idi', + 'io' => 'Ido', + 'ido' => 'Ido', + 'idr' => 'Indri', + 'ids' => 'Idesa', + 'idt' => 'Idaté', + 'idu' => 'Idoma', + 'ifa' => 'Amganad Ifugao', + 'ifb' => 'Batad Ifugao', + 'ife' => 'Ifè', + 'iff' => 'Ifo', + 'ifk' => 'Tuwali Ifugao', + 'ifm' => 'Teke-Fuumu', + 'ifu' => 'Mayoyao Ifugao', + 'ify' => 'Keley-I Kallahan', + 'igb' => 'Ebira', + 'ige' => 'Igede', + 'igg' => 'Igana', + 'igl' => 'Igala', + 'igm' => 'Kanggape', + 'ign' => 'Ignaciano', + 'igo' => 'Isebe', + 'igs' => 'Interglossa', + 'igw' => 'Igwe', + 'ihb' => 'Iha Based Pidgin', + 'ihi' => 'Ihievbe', + 'ihp' => 'Iha', + 'ihw' => 'Bidhawal', + 'ii' => 'Sichuan Yi', + 'iii' => 'Sichuan Yi', + 'iin' => 'Thiin', + 'ijc' => 'Izon', + 'ije' => 'Biseni', + 'ijj' => 'Ede Ije', + 'ijn' => 'Kalabari', + 'ijs' => 'Southeast Ijo', + 'ike' => 'Eastern Canadian Inuktitut', + 'iki' => 'Iko', + 'ikk' => 'Ika', + 'ikl' => 'Ikulu', + 'iko' => 'Olulumo-Ikom', + 'ikp' => 'Ikpeshi', + 'ikr' => 'Ikaranggal', + 'iks' => 'Inuit Sign Language', + 'ikt' => 'Inuinnaqtun', + 'iu' => 'Inuktitut', + 'iku' => 'Inuktitut', + 'ikv' => 'Iku-Gora-Ankwa', + 'ikw' => 'Ikwere', + 'ikx' => 'Ik', + 'ikz' => 'Ikizu', + 'ila' => 'Ile Ape', + 'ilb' => 'Ila', + 'ie' => 'Interlingue', + 'ile' => 'Interlingue', + 'ilg' => 'Garig-Ilgar', + 'ili' => 'Ili Turki', + 'ilk' => 'Ilongot', + 'ilm' => 'Iranun (Malaysia)', + 'ilo' => 'Iloko', + 'ilp' => 'Iranun (Philippines)', + 'ils' => 'International Sign', + 'ilu' => 'Ili\'uun', + 'ilv' => 'Ilue', + 'ima' => 'Mala Malasar', + 'imi' => 'Anamgura', + 'iml' => 'Miluk', + 'imn' => 'Imonda', + 'imo' => 'Imbongu', + 'imr' => 'Imroing', + 'ims' => 'Marsian', + 'imy' => 'Milyan', + 'ia' => 'Interlingua (International Auxiliary Language Association)', + 'ina' => 'Interlingua (International Auxiliary Language Association)', + 'inb' => 'Inga', + 'id' => 'Indonesian', + 'ind' => 'Indonesian', + 'ing' => 'Degexit\'an', + 'inh' => 'Ingush', + 'inj' => 'Jungle Inga', + 'inl' => 'Indonesian Sign Language', + 'inm' => 'Minaean', + 'inn' => 'Isinai', + 'ino' => 'Inoke-Yate', + 'inp' => 'Iñapari', + 'ins' => 'Indian Sign Language', + 'int' => 'Intha', + 'inz' => 'Ineseño', + 'ior' => 'Inor', + 'iou' => 'Tuma-Irumu', + 'iow' => 'Iowa-Oto', + 'ipi' => 'Ipili', + 'ik' => 'Inupiaq', + 'ipk' => 'Inupiaq', + 'ipo' => 'Ipiko', + 'iqu' => 'Iquito', + 'iqw' => 'Ikwo', + 'ire' => 'Iresim', + 'irh' => 'Irarutu', + 'iri' => 'Rigwe', + 'irk' => 'Iraqw', + 'irn' => 'Irántxe', + 'irr' => 'Ir', + 'iru' => 'Irula', + 'irx' => 'Kamberau', + 'iry' => 'Iraya', + 'isa' => 'Isabi', + 'isc' => 'Isconahua', + 'isd' => 'Isnag', + 'ise' => 'Italian Sign Language', + 'isg' => 'Irish Sign Language', + 'ish' => 'Esan', + 'isi' => 'Nkem-Nkum', + 'isk' => 'Ishkashimi', + 'is' => 'Icelandic', + 'isl' => 'Icelandic', + 'ism' => 'Masimasi', + 'isn' => 'Isanzu', + 'iso' => 'Isoko', + 'isr' => 'Israeli Sign Language', + 'ist' => 'Istriot', + 'isu' => 'Isu (Menchum Division)', + 'it' => 'Italian', + 'ita' => 'Italian', + 'itb' => 'Binongan Itneg', + 'itd' => 'Southern Tidung', + 'ite' => 'Itene', + 'iti' => 'Inlaod Itneg', + 'itk' => 'Judeo-Italian', + 'itl' => 'Itelmen', + 'itm' => 'Itu Mbon Uzo', + 'ito' => 'Itonama', + 'itr' => 'Iteri', + 'its' => 'Isekiri', + 'itt' => 'Maeng Itneg', + 'itv' => 'Itawit', + 'itw' => 'Ito', + 'itx' => 'Itik', + 'ity' => 'Moyadan Itneg', + 'itz' => 'Itzá', + 'ium' => 'Iu Mien', + 'ivb' => 'Ibatan', + 'ivv' => 'Ivatan', + 'iwk' => 'I-Wak', + 'iwm' => 'Iwam', + 'iwo' => 'Iwur', + 'iws' => 'Sepik Iwam', + 'ixc' => 'Ixcatec', + 'ixl' => 'Ixil', + 'iya' => 'Iyayu', + 'iyo' => 'Mesaka', + 'iyx' => 'Yaka (Congo)', + 'izh' => 'Ingrian', + 'izr' => 'Izere', + 'izz' => 'Izii', + 'jaa' => 'Jamamadí', + 'jab' => 'Hyam', + 'jac' => 'Popti\'', + 'jad' => 'Jahanka', + 'jae' => 'Yabem', + 'jaf' => 'Jara', + 'jah' => 'Jah Hut', + 'jaj' => 'Zazao', + 'jak' => 'Jakun', + 'jal' => 'Yalahatan', + 'jam' => 'Jamaican Creole English', + 'jan' => 'Jandai', + 'jao' => 'Yanyuwa', + 'jaq' => 'Yaqay', + 'jas' => 'New Caledonian Javanese', + 'jat' => 'Jakati', + 'jau' => 'Yaur', + 'jv' => 'Javanese', + 'jav' => 'Javanese', + 'jax' => 'Jambi Malay', + 'jay' => 'Yan-nhangu', + 'jaz' => 'Jawe', + 'jbe' => 'Judeo-Berber', + 'jbi' => 'Badjiri', + 'jbj' => 'Arandai', + 'jbk' => 'Barikewa', + 'jbn' => 'Nafusi', + 'jbo' => 'Lojban', + 'jbr' => 'Jofotek-Bromnya', + 'jbt' => 'Jabutí', + 'jbu' => 'Jukun Takum', + 'jbw' => 'Yawijibaya', + 'jcs' => 'Jamaican Country Sign Language', + 'jct' => 'Krymchak', + 'jda' => 'Jad', + 'jdg' => 'Jadgali', + 'jdt' => 'Judeo-Tat', + 'jeb' => 'Jebero', + 'jee' => 'Jerung', + 'jeh' => 'Jeh', + 'jei' => 'Yei', + 'jek' => 'Jeri Kuo', + 'jel' => 'Yelmek', + 'jen' => 'Dza', + 'jer' => 'Jere', + 'jet' => 'Manem', + 'jeu' => 'Jonkor Bourmataguil', + 'jgb' => 'Ngbee', + 'jge' => 'Judeo-Georgian', + 'jgk' => 'Gwak', + 'jgo' => 'Ngomba', + 'jhi' => 'Jehai', + 'jhs' => 'Jhankot Sign Language', + 'jia' => 'Jina', + 'jib' => 'Jibu', + 'jic' => 'Tol', + 'jid' => 'Bu', + 'jie' => 'Jilbe', + 'jig' => 'Djingili', + 'jih' => 'sTodsde', + 'jii' => 'Jiiddu', + 'jil' => 'Jilim', + 'jim' => 'Jimi (Cameroon)', + 'jio' => 'Jiamao', + 'jiq' => 'Guanyinqiao', + 'jit' => 'Jita', + 'jiu' => 'Youle Jinuo', + 'jiv' => 'Shuar', + 'jiy' => 'Buyuan Jinuo', + 'jje' => 'Jejueo', + 'jjr' => 'Bankal', + 'jka' => 'Kaera', + 'jkm' => 'Mobwa Karen', + 'jko' => 'Kubo', + 'jkp' => 'Paku Karen', + 'jkr' => 'Koro (India)', + 'jku' => 'Labir', + 'jle' => 'Ngile', + 'jls' => 'Jamaican Sign Language', + 'jma' => 'Dima', + 'jmb' => 'Zumbun', + 'jmc' => 'Machame', + 'jmd' => 'Yamdena', + 'jmi' => 'Jimi (Nigeria)', + 'jml' => 'Jumli', + 'jmn' => 'Makuri Naga', + 'jmr' => 'Kamara', + 'jms' => 'Mashi (Nigeria)', + 'jmw' => 'Mouwase', + 'jmx' => 'Western Juxtlahuaca Mixtec', + 'jna' => 'Jangshung', + 'jnd' => 'Jandavra', + 'jng' => 'Yangman', + 'jni' => 'Janji', + 'jnj' => 'Yemsa', + 'jnl' => 'Rawat', + 'jns' => 'Jaunsari', + 'job' => 'Joba', + 'jod' => 'Wojenaka', + 'jog' => 'Jogi', + 'jor' => 'Jorá', + 'jos' => 'Jordanian Sign Language', + 'jow' => 'Jowulu', + 'jpa' => 'Jewish Palestinian Aramaic', + 'ja' => 'Japanese', + 'jpn' => 'Japanese', + 'jpr' => 'Judeo-Persian', + 'jqr' => 'Jaqaru', + 'jra' => 'Jarai', + 'jrb' => 'Judeo-Arabic', + 'jrr' => 'Jiru', + 'jrt' => 'Jorto', + 'jru' => 'Japrería', + 'jsl' => 'Japanese Sign Language', + 'jua' => 'Júma', + 'jub' => 'Wannu', + 'juc' => 'Jurchen', + 'jud' => 'Worodougou', + 'juh' => 'Hõne', + 'jui' => 'Ngadjuri', + 'juk' => 'Wapan', + 'jul' => 'Jirel', + 'jum' => 'Jumjum', + 'jun' => 'Juang', + 'juo' => 'Jiba', + 'jup' => 'Hupdë', + 'jur' => 'Jurúna', + 'jus' => 'Jumla Sign Language', + 'jut' => 'Jutish', + 'juu' => 'Ju', + 'juw' => 'Wãpha', + 'juy' => 'Juray', + 'jvd' => 'Javindo', + 'jvn' => 'Caribbean Javanese', + 'jwi' => 'Jwira-Pepesa', + 'jya' => 'Jiarong', + 'jye' => 'Judeo-Yemeni Arabic', + 'jyy' => 'Jaya', + 'kaa' => 'Kara-Kalpak', + 'kab' => 'Kabyle', + 'kac' => 'Kachin', + 'kad' => 'Adara', + 'kae' => 'Ketangalan', + 'kaf' => 'Katso', + 'kag' => 'Kajaman', + 'kah' => 'Kara (Central African Republic)', + 'kai' => 'Karekare', + 'kaj' => 'Jju', + 'kak' => 'Kalanguya', + 'kl' => 'Kalaallisut', + 'kal' => 'Kalaallisut', + 'kam' => 'Kamba (Kenya)', + 'kn' => 'Kannada', + 'kan' => 'Kannada', + 'kao' => 'Xaasongaxango', + 'kap' => 'Bezhta', + 'kaq' => 'Capanahua', + 'ks' => 'Kashmiri', + 'kas' => 'Kashmiri', + 'ka' => 'Georgian', + 'kat' => 'Georgian', + 'kr' => 'Kanuri', + 'kau' => 'Kanuri', + 'kav' => 'Katukína', + 'kaw' => 'Kawi', + 'kax' => 'Kao', + 'kay' => 'Kamayurá', + 'kk' => 'Kazakh', + 'kaz' => 'Kazakh', + 'kba' => 'Kalarko', + 'kbb' => 'Kaxuiâna', + 'kbc' => 'Kadiwéu', + 'kbd' => 'Kabardian', + 'kbe' => 'Kanju', + 'kbg' => 'Khamba', + 'kbh' => 'Camsá', + 'kbi' => 'Kaptiau', + 'kbj' => 'Kari', + 'kbk' => 'Grass Koiari', + 'kbl' => 'Kanembu', + 'kbm' => 'Iwal', + 'kbn' => 'Kare (Central African Republic)', + 'kbo' => 'Keliko', + 'kbp' => 'Kabiyè', + 'kbq' => 'Kamano', + 'kbr' => 'Kafa', + 'kbs' => 'Kande', + 'kbt' => 'Abadi', + 'kbu' => 'Kabutra', + 'kbv' => 'Dera (Indonesia)', + 'kbw' => 'Kaiep', + 'kbx' => 'Ap Ma', + 'kby' => 'Manga Kanuri', + 'kbz' => 'Duhwa', + 'kca' => 'Khanty', + 'kcb' => 'Kawacha', + 'kcc' => 'Lubila', + 'kcd' => 'Ngkâlmpw Kanum', + 'kce' => 'Kaivi', + 'kcf' => 'Ukaan', + 'kcg' => 'Tyap', + 'kch' => 'Vono', + 'kci' => 'Kamantan', + 'kcj' => 'Kobiana', + 'kck' => 'Kalanga', + 'kcl' => 'Kela (Papua New Guinea)', + 'kcm' => 'Gula (Central African Republic)', + 'kcn' => 'Nubi', + 'kco' => 'Kinalakna', + 'kcp' => 'Kanga', + 'kcq' => 'Kamo', + 'kcr' => 'Katla', + 'kcs' => 'Koenoem', + 'kct' => 'Kaian', + 'kcu' => 'Kami (Tanzania)', + 'kcv' => 'Kete', + 'kcw' => 'Kabwari', + 'kcx' => 'Kachama-Ganjule', + 'kcy' => 'Korandje', + 'kcz' => 'Konongo', + 'kda' => 'Worimi', + 'kdc' => 'Kutu', + 'kdd' => 'Yankunytjatjara', + 'kde' => 'Makonde', + 'kdf' => 'Mamusi', + 'kdg' => 'Seba', + 'kdh' => 'Tem', + 'kdi' => 'Kumam', + 'kdj' => 'Karamojong', + 'kdk' => 'Numèè', + 'kdl' => 'Tsikimba', + 'kdm' => 'Kagoma', + 'kdn' => 'Kunda', + 'kdp' => 'Kaningdon-Nindem', + 'kdq' => 'Koch', + 'kdr' => 'Karaim', + 'kdt' => 'Kuy', + 'kdu' => 'Kadaru', + 'kdw' => 'Koneraw', + 'kdx' => 'Kam', + 'kdy' => 'Keder', + 'kdz' => 'Kwaja', + 'kea' => 'Kabuverdianu', + 'keb' => 'Kélé', + 'kec' => 'Keiga', + 'ked' => 'Kerewe', + 'kee' => 'Eastern Keres', + 'kef' => 'Kpessi', + 'keg' => 'Tese', + 'keh' => 'Keak', + 'kei' => 'Kei', + 'kej' => 'Kadar', + 'kek' => 'Kekchí', + 'kel' => 'Kela (Democratic Republic of Congo)', + 'kem' => 'Kemak', + 'ken' => 'Kenyang', + 'keo' => 'Kakwa', + 'kep' => 'Kaikadi', + 'keq' => 'Kamar', + 'ker' => 'Kera', + 'kes' => 'Kugbo', + 'ket' => 'Ket', + 'keu' => 'Akebu', + 'kev' => 'Kanikkaran', + 'kew' => 'West Kewa', + 'kex' => 'Kukna', + 'key' => 'Kupia', + 'kez' => 'Kukele', + 'kfa' => 'Kodava', + 'kfb' => 'Northwestern Kolami', + 'kfc' => 'Konda-Dora', + 'kfd' => 'Korra Koraga', + 'kfe' => 'Kota (India)', + 'kff' => 'Koya', + 'kfg' => 'Kudiya', + 'kfh' => 'Kurichiya', + 'kfi' => 'Kannada Kurumba', + 'kfj' => 'Kemiehua', + 'kfk' => 'Kinnauri', + 'kfl' => 'Kung', + 'kfm' => 'Khunsari', + 'kfn' => 'Kuk', + 'kfo' => 'Koro (Côte d\'Ivoire)', + 'kfp' => 'Korwa', + 'kfq' => 'Korku', + 'kfr' => 'Kachhi', + 'kfs' => 'Bilaspuri', + 'kft' => 'Kanjari', + 'kfu' => 'Katkari', + 'kfv' => 'Kurmukar', + 'kfw' => 'Kharam Naga', + 'kfx' => 'Kullu Pahari', + 'kfy' => 'Kumaoni', + 'kfz' => 'Koromfé', + 'kga' => 'Koyaga', + 'kgb' => 'Kawe', + 'kge' => 'Komering', + 'kgf' => 'Kube', + 'kgg' => 'Kusunda', + 'kgi' => 'Selangor Sign Language', + 'kgj' => 'Gamale Kham', + 'kgk' => 'Kaiwá', + 'kgl' => 'Kunggari', + 'kgm' => 'Karipúna', + 'kgn' => 'Karingani', + 'kgo' => 'Krongo', + 'kgp' => 'Kaingang', + 'kgq' => 'Kamoro', + 'kgr' => 'Abun', + 'kgs' => 'Kumbainggar', + 'kgt' => 'Somyev', + 'kgu' => 'Kobol', + 'kgv' => 'Karas', + 'kgw' => 'Karon Dori', + 'kgx' => 'Kamaru', + 'kgy' => 'Kyerung', + 'kha' => 'Khasi', + 'khb' => 'Lü', + 'khc' => 'Tukang Besi North', + 'khd' => 'Bädi Kanum', + 'khe' => 'Korowai', + 'khf' => 'Khuen', + 'khg' => 'Khams Tibetan', + 'khh' => 'Kehu', + 'khj' => 'Kuturmi', + 'khk' => 'Halh Mongolian', + 'khl' => 'Lusi', + 'km' => 'Khmer', + 'khm' => 'Khmer', + 'khn' => 'Khandesi', + 'kho' => 'Khotanese', + 'khp' => 'Kapori', + 'khq' => 'Koyra Chiini Songhay', + 'khr' => 'Kharia', + 'khs' => 'Kasua', + 'kht' => 'Khamti', + 'khu' => 'Nkhumbi', + 'khv' => 'Khvarshi', + 'khw' => 'Khowar', + 'khx' => 'Kanu', + 'khy' => 'Kele (Democratic Republic of Congo)', + 'khz' => 'Keapara', + 'kia' => 'Kim', + 'kib' => 'Koalib', + 'kic' => 'Kickapoo', + 'kid' => 'Koshin', + 'kie' => 'Kibet', + 'kif' => 'Eastern Parbate Kham', + 'kig' => 'Kimaama', + 'kih' => 'Kilmeri', + 'kii' => 'Kitsai', + 'kij' => 'Kilivila', + 'ki' => 'Kikuyu', + 'kik' => 'Kikuyu', + 'kil' => 'Kariya', + 'kim' => 'Karagas', + 'rw' => 'Kinyarwanda', + 'kin' => 'Kinyarwanda', + 'kio' => 'Kiowa', + 'kip' => 'Sheshi Kham', + 'kiq' => 'Kosadle', + 'ky' => 'Kirghiz', + 'kir' => 'Kirghiz', + 'kis' => 'Kis', + 'kit' => 'Agob', + 'kiu' => 'Kirmanjki (individual language)', + 'kiv' => 'Kimbu', + 'kiw' => 'Northeast Kiwai', + 'kix' => 'Khiamniungan Naga', + 'kiy' => 'Kirikiri', + 'kiz' => 'Kisi', + 'kja' => 'Mlap', + 'kjb' => 'Q\'anjob\'al', + 'kjc' => 'Coastal Konjo', + 'kjd' => 'Southern Kiwai', + 'kje' => 'Kisar', + 'kjf' => 'Khalaj', + 'kjg' => 'Khmu', + 'kjh' => 'Khakas', + 'kji' => 'Zabana', + 'kjj' => 'Khinalugh', + 'kjk' => 'Highland Konjo', + 'kjl' => 'Western Parbate Kham', + 'kjm' => 'Kháng', + 'kjn' => 'Kunjen', + 'kjo' => 'Harijan Kinnauri', + 'kjp' => 'Pwo Eastern Karen', + 'kjq' => 'Western Keres', + 'kjr' => 'Kurudu', + 'kjs' => 'East Kewa', + 'kjt' => 'Phrae Pwo Karen', + 'kju' => 'Kashaya', + 'kjv' => 'Kaikavian Literary Language', + 'kjx' => 'Ramopa', + 'kjy' => 'Erave', + 'kjz' => 'Bumthangkha', + 'kka' => 'Kakanda', + 'kkb' => 'Kwerisa', + 'kkc' => 'Odoodee', + 'kkd' => 'Kinuku', + 'kke' => 'Kakabe', + 'kkf' => 'Kalaktang Monpa', + 'kkg' => 'Mabaka Valley Kalinga', + 'kkh' => 'Khün', + 'kki' => 'Kagulu', + 'kkj' => 'Kako', + 'kkk' => 'Kokota', + 'kkl' => 'Kosarek Yale', + 'kkm' => 'Kiong', + 'kkn' => 'Kon Keu', + 'kko' => 'Karko', + 'kkp' => 'Gugubera', + 'kkq' => 'Kaiku', + 'kkr' => 'Kir-Balar', + 'kks' => 'Giiwo', + 'kkt' => 'Koi', + 'kku' => 'Tumi', + 'kkv' => 'Kangean', + 'kkw' => 'Teke-Kukuya', + 'kkx' => 'Kohin', + 'kky' => 'Guguyimidjir', + 'kkz' => 'Kaska', + 'kla' => 'Klamath-Modoc', + 'klb' => 'Kiliwa', + 'klc' => 'Kolbila', + 'kld' => 'Gamilaraay', + 'kle' => 'Kulung (Nepal)', + 'klf' => 'Kendeje', + 'klg' => 'Tagakaulo', + 'klh' => 'Weliki', + 'kli' => 'Kalumpang', + 'klj' => 'Turkic Khalaj', + 'klk' => 'Kono (Nigeria)', + 'kll' => 'Kagan Kalagan', + 'klm' => 'Migum', + 'kln' => 'Kalenjin', + 'klo' => 'Kapya', + 'klp' => 'Kamasa', + 'klq' => 'Rumu', + 'klr' => 'Khaling', + 'kls' => 'Kalasha', + 'klt' => 'Nukna', + 'klu' => 'Klao', + 'klv' => 'Maskelynes', + 'klw' => 'Tado', + 'klx' => 'Koluwawa', + 'kly' => 'Kalao', + 'klz' => 'Kabola', + 'kma' => 'Konni', + 'kmb' => 'Kimbundu', + 'kmc' => 'Southern Dong', + 'kmd' => 'Majukayang Kalinga', + 'kme' => 'Bakole', + 'kmf' => 'Kare (Papua New Guinea)', + 'kmg' => 'Kâte', + 'kmh' => 'Kalam', + 'kmi' => 'Kami (Nigeria)', + 'kmj' => 'Kumarbhag Paharia', + 'kmk' => 'Limos Kalinga', + 'kml' => 'Tanudan Kalinga', + 'kmm' => 'Kom (India)', + 'kmn' => 'Awtuw', + 'kmo' => 'Kwoma', + 'kmp' => 'Gimme', + 'kmq' => 'Kwama', + 'kmr' => 'Northern Kurdish', + 'kms' => 'Kamasau', + 'kmt' => 'Kemtuik', + 'kmu' => 'Kanite', + 'kmv' => 'Karipúna Creole French', + 'kmw' => 'Komo (Democratic Republic of Congo)', + 'kmx' => 'Waboda', + 'kmy' => 'Koma', + 'kmz' => 'Khorasani Turkish', + 'kna' => 'Dera (Nigeria)', + 'knb' => 'Lubuagan Kalinga', + 'knc' => 'Central Kanuri', + 'knd' => 'Konda', + 'kne' => 'Kankanaey', + 'knf' => 'Mankanya', + 'kng' => 'Koongo', + 'kni' => 'Kanufi', + 'knj' => 'Western Kanjobal', + 'knk' => 'Kuranko', + 'knl' => 'Keninjal', + 'knm' => 'Kanamarí', + 'knn' => 'Konkani (individual language)', + 'kno' => 'Kono (Sierra Leone)', + 'knp' => 'Kwanja', + 'knq' => 'Kintaq', + 'knr' => 'Kaningra', + 'kns' => 'Kensiu', + 'knt' => 'Panoan Katukína', + 'knu' => 'Kono (Guinea)', + 'knv' => 'Tabo', + 'knw' => 'Kung-Ekoka', + 'knx' => 'Kendayan', + 'kny' => 'Kanyok', + 'knz' => 'Kalamsé', + 'koa' => 'Konomala', + 'koc' => 'Kpati', + 'kod' => 'Kodi', + 'koe' => 'Kacipo-Balesi', + 'kof' => 'Kubi', + 'kog' => 'Cogui', + 'koh' => 'Koyo', + 'koi' => 'Komi-Permyak', + 'kok' => 'Konkani (macrolanguage)', + 'kol' => 'Kol (Papua New Guinea)', + 'kv' => 'Komi', + 'kom' => 'Komi', + 'kg' => 'Kongo', + 'kon' => 'Kongo', + 'koo' => 'Konzo', + 'kop' => 'Waube', + 'koq' => 'Kota (Gabon)', + 'ko' => 'Korean', + 'kor' => 'Korean', + 'kos' => 'Kosraean', + 'kot' => 'Lagwan', + 'kou' => 'Koke', + 'kov' => 'Kudu-Camo', + 'kow' => 'Kugama', + 'koy' => 'Koyukon', + 'koz' => 'Korak', + 'kpa' => 'Kutto', + 'kpb' => 'Mullu Kurumba', + 'kpc' => 'Curripaco', + 'kpd' => 'Koba', + 'kpe' => 'Kpelle', + 'kpf' => 'Komba', + 'kpg' => 'Kapingamarangi', + 'kph' => 'Kplang', + 'kpi' => 'Kofei', + 'kpj' => 'Karajá', + 'kpk' => 'Kpan', + 'kpl' => 'Kpala', + 'kpm' => 'Koho', + 'kpn' => 'Kepkiriwát', + 'kpo' => 'Ikposo', + 'kpq' => 'Korupun-Sela', + 'kpr' => 'Korafe-Yegha', + 'kps' => 'Tehit', + 'kpt' => 'Karata', + 'kpu' => 'Kafoa', + 'kpv' => 'Komi-Zyrian', + 'kpw' => 'Kobon', + 'kpx' => 'Mountain Koiali', + 'kpy' => 'Koryak', + 'kpz' => 'Kupsabiny', + 'kqa' => 'Mum', + 'kqb' => 'Kovai', + 'kqc' => 'Doromu-Koki', + 'kqd' => 'Koy Sanjaq Surat', + 'kqe' => 'Kalagan', + 'kqf' => 'Kakabai', + 'kqg' => 'Khe', + 'kqh' => 'Kisankasa', + 'kqi' => 'Koitabu', + 'kqj' => 'Koromira', + 'kqk' => 'Kotafon Gbe', + 'kql' => 'Kyenele', + 'kqm' => 'Khisa', + 'kqn' => 'Kaonde', + 'kqo' => 'Eastern Krahn', + 'kqp' => 'Kimré', + 'kqq' => 'Krenak', + 'kqr' => 'Kimaragang', + 'kqs' => 'Northern Kissi', + 'kqt' => 'Klias River Kadazan', + 'kqu' => 'Seroa', + 'kqv' => 'Okolod', + 'kqw' => 'Kandas', + 'kqx' => 'Mser', + 'kqy' => 'Koorete', + 'kqz' => 'Korana', + 'kra' => 'Kumhali', + 'krb' => 'Karkin', + 'krc' => 'Karachay-Balkar', + 'krd' => 'Kairui-Midiki', + 'kre' => 'Panará', + 'krf' => 'Koro (Vanuatu)', + 'krh' => 'Kurama', + 'kri' => 'Krio', + 'krj' => 'Kinaray-A', + 'krk' => 'Kerek', + 'krl' => 'Karelian', + 'krn' => 'Sapo', + 'krp' => 'Korop', + 'krr' => 'Krung', + 'krs' => 'Gbaya (Sudan)', + 'krt' => 'Tumari Kanuri', + 'kru' => 'Kurukh', + 'krv' => 'Kavet', + 'krw' => 'Western Krahn', + 'krx' => 'Karon', + 'kry' => 'Kryts', + 'krz' => 'Sota Kanum', + 'ksa' => 'Shuwa-Zamani', + 'ksb' => 'Shambala', + 'ksc' => 'Southern Kalinga', + 'ksd' => 'Kuanua', + 'kse' => 'Kuni', + 'ksf' => 'Bafia', + 'ksg' => 'Kusaghe', + 'ksh' => 'Kölsch', + 'ksi' => 'Krisa', + 'ksj' => 'Uare', + 'ksk' => 'Kansa', + 'ksl' => 'Kumalu', + 'ksm' => 'Kumba', + 'ksn' => 'Kasiguranin', + 'kso' => 'Kofa', + 'ksp' => 'Kaba', + 'ksq' => 'Kwaami', + 'ksr' => 'Borong', + 'kss' => 'Southern Kisi', + 'kst' => 'Winyé', + 'ksu' => 'Khamyang', + 'ksv' => 'Kusu', + 'ksw' => 'S\'gaw Karen', + 'ksx' => 'Kedang', + 'ksy' => 'Kharia Thar', + 'ksz' => 'Kodaku', + 'kta' => 'Katua', + 'ktb' => 'Kambaata', + 'ktc' => 'Kholok', + 'ktd' => 'Kokata', + 'kte' => 'Nubri', + 'ktf' => 'Kwami', + 'ktg' => 'Kalkutung', + 'kth' => 'Karanga', + 'kti' => 'North Muyu', + 'ktj' => 'Plapo Krumen', + 'ktk' => 'Kaniet', + 'ktl' => 'Koroshi', + 'ktm' => 'Kurti', + 'ktn' => 'Karitiâna', + 'kto' => 'Kuot', + 'ktp' => 'Kaduo', + 'ktq' => 'Katabaga', + 'kts' => 'South Muyu', + 'ktt' => 'Ketum', + 'ktu' => 'Kituba (Democratic Republic of Congo)', + 'ktv' => 'Eastern Katu', + 'ktw' => 'Kato', + 'ktx' => 'Kaxararí', + 'kty' => 'Kango (Bas-Uélé District)', + 'ktz' => 'Juǀʼhoan', + 'kj' => 'Kuanyama', + 'kua' => 'Kuanyama', + 'kub' => 'Kutep', + 'kuc' => 'Kwinsu', + 'kud' => '\'Auhelawa', + 'kue' => 'Kuman (Papua New Guinea)', + 'kuf' => 'Western Katu', + 'kug' => 'Kupa', + 'kuh' => 'Kushi', + 'kui' => 'Kuikúro-Kalapálo', + 'kuj' => 'Kuria', + 'kuk' => 'Kepo\'', + 'kul' => 'Kulere', + 'kum' => 'Kumyk', + 'kun' => 'Kunama', + 'kuo' => 'Kumukio', + 'kup' => 'Kunimaipa', + 'kuq' => 'Karipuna', + 'ku' => 'Kurdish', + 'kur' => 'Kurdish', + 'kus' => 'Kusaal', + 'kut' => 'Kutenai', + 'kuu' => 'Upper Kuskokwim', + 'kuv' => 'Kur', + 'kuw' => 'Kpagua', + 'kux' => 'Kukatja', + 'kuy' => 'Kuuku-Ya\'u', + 'kuz' => 'Kunza', + 'kva' => 'Bagvalal', + 'kvb' => 'Kubu', + 'kvc' => 'Kove', + 'kvd' => 'Kui (Indonesia)', + 'kve' => 'Kalabakan', + 'kvf' => 'Kabalai', + 'kvg' => 'Kuni-Boazi', + 'kvh' => 'Komodo', + 'kvi' => 'Kwang', + 'kvj' => 'Psikye', + 'kvk' => 'Korean Sign Language', + 'kvl' => 'Kayaw', + 'kvm' => 'Kendem', + 'kvn' => 'Border Kuna', + 'kvo' => 'Dobel', + 'kvp' => 'Kompane', + 'kvq' => 'Geba Karen', + 'kvr' => 'Kerinci', + 'kvt' => 'Lahta Karen', + 'kvu' => 'Yinbaw Karen', + 'kvv' => 'Kola', + 'kvw' => 'Wersing', + 'kvx' => 'Parkari Koli', + 'kvy' => 'Yintale Karen', + 'kvz' => 'Tsakwambo', + 'kwa' => 'Dâw', + 'kwb' => 'Kwa', + 'kwc' => 'Likwala', + 'kwd' => 'Kwaio', + 'kwe' => 'Kwerba', + 'kwf' => 'Kwara\'ae', + 'kwg' => 'Sara Kaba Deme', + 'kwh' => 'Kowiai', + 'kwi' => 'Awa-Cuaiquer', + 'kwj' => 'Kwanga', + 'kwk' => 'Kwakiutl', + 'kwl' => 'Kofyar', + 'kwm' => 'Kwambi', + 'kwn' => 'Kwangali', + 'kwo' => 'Kwomtari', + 'kwp' => 'Kodia', + 'kwr' => 'Kwer', + 'kws' => 'Kwese', + 'kwt' => 'Kwesten', + 'kwu' => 'Kwakum', + 'kwv' => 'Sara Kaba Náà', + 'kww' => 'Kwinti', + 'kwx' => 'Khirwar', + 'kwy' => 'San Salvador Kongo', + 'kwz' => 'Kwadi', + 'kxa' => 'Kairiru', + 'kxb' => 'Krobu', + 'kxc' => 'Konso', + 'kxd' => 'Brunei', + 'kxf' => 'Manumanaw Karen', + 'kxh' => 'Karo (Ethiopia)', + 'kxi' => 'Keningau Murut', + 'kxj' => 'Kulfa', + 'kxk' => 'Zayein Karen', + 'kxl' => 'Nepali Kurux', + 'kxm' => 'Northern Khmer', + 'kxn' => 'Kanowit-Tanjong Melanau', + 'kxo' => 'Kanoé', + 'kxp' => 'Wadiyara Koli', + 'kxq' => 'Smärky Kanum', + 'kxr' => 'Koro (Papua New Guinea)', + 'kxs' => 'Kangjia', + 'kxt' => 'Koiwat', + 'kxu' => 'Kui (India)', + 'kxv' => 'Kuvi', + 'kxw' => 'Konai', + 'kxx' => 'Likuba', + 'kxy' => 'Kayong', + 'kxz' => 'Kerewo', + 'kya' => 'Kwaya', + 'kyb' => 'Butbut Kalinga', + 'kyc' => 'Kyaka', + 'kyd' => 'Karey', + 'kye' => 'Krache', + 'kyf' => 'Kouya', + 'kyg' => 'Keyagana', + 'kyh' => 'Karok', + 'kyi' => 'Kiput', + 'kyj' => 'Karao', + 'kyk' => 'Kamayo', + 'kyl' => 'Kalapuya', + 'kym' => 'Kpatili', + 'kyn' => 'Northern Binukidnon', + 'kyo' => 'Kelon', + 'kyp' => 'Kang', + 'kyq' => 'Kenga', + 'kyr' => 'Kuruáya', + 'kys' => 'Baram Kayan', + 'kyt' => 'Kayagar', + 'kyu' => 'Western Kayah', + 'kyv' => 'Kayort', + 'kyw' => 'Kudmali', + 'kyx' => 'Rapoisi', + 'kyy' => 'Kambaira', + 'kyz' => 'Kayabí', + 'kza' => 'Western Karaboro', + 'kzb' => 'Kaibobo', + 'kzc' => 'Bondoukou Kulango', + 'kzd' => 'Kadai', + 'kze' => 'Kosena', + 'kzf' => 'Da\'a Kaili', + 'kzg' => 'Kikai', + 'kzi' => 'Kelabit', + 'kzk' => 'Kazukuru', + 'kzl' => 'Kayeli', + 'kzm' => 'Kais', + 'kzn' => 'Kokola', + 'kzo' => 'Kaningi', + 'kzp' => 'Kaidipang', + 'kzq' => 'Kaike', + 'kzr' => 'Karang', + 'kzs' => 'Sugut Dusun', + 'kzu' => 'Kayupulau', + 'kzv' => 'Komyandaret', + 'kzw' => 'Karirí-Xocó', + 'kzx' => 'Kamarian', + 'kzy' => 'Kango (Tshopo District)', + 'kzz' => 'Kalabra', + 'laa' => 'Southern Subanen', + 'lab' => 'Linear A', + 'lac' => 'Lacandon', + 'lad' => 'Ladino', + 'lae' => 'Pattani', + 'laf' => 'Lafofa', + 'lag' => 'Langi', + 'lah' => 'Lahnda', + 'lai' => 'Lambya', + 'laj' => 'Lango (Uganda)', + 'lak' => 'Laka (Nigeria)', + 'lal' => 'Lalia', + 'lam' => 'Lamba', + 'lan' => 'Laru', + 'lo' => 'Lao', + 'lao' => 'Lao', + 'lap' => 'Laka (Chad)', + 'laq' => 'Qabiao', + 'lar' => 'Larteh', + 'las' => 'Lama (Togo)', + 'la' => 'Latin', + 'lat' => 'Latin', + 'lau' => 'Laba', + 'lv' => 'Latvian', + 'lav' => 'Latvian', + 'law' => 'Lauje', + 'lax' => 'Tiwa', + 'lay' => 'Lama Bai', + 'laz' => 'Aribwatsa', + 'lba' => 'Lui', + 'lbb' => 'Label', + 'lbc' => 'Lakkia', + 'lbe' => 'Lak', + 'lbf' => 'Tinani', + 'lbg' => 'Laopang', + 'lbi' => 'La\'bi', + 'lbj' => 'Ladakhi', + 'lbk' => 'Central Bontok', + 'lbl' => 'Libon Bikol', + 'lbm' => 'Lodhi', + 'lbn' => 'Lamet', + 'lbo' => 'Laven', + 'lbq' => 'Wampar', + 'lbr' => 'Lohorung', + 'lbs' => 'Libyan Sign Language', + 'lbt' => 'Lachi', + 'lbu' => 'Labu', + 'lbv' => 'Lavatbura-Lamusong', + 'lbw' => 'Tolaki', + 'lbx' => 'Lawangan', + 'lby' => 'Lamu-Lamu', + 'lbz' => 'Lardil', + 'lcc' => 'Legenyem', + 'lcd' => 'Lola', + 'lce' => 'Loncong', + 'lcf' => 'Lubu', + 'lch' => 'Luchazi', + 'lcl' => 'Lisela', + 'lcm' => 'Tungag', + 'lcp' => 'Western Lawa', + 'lcq' => 'Luhu', + 'lcs' => 'Lisabata-Nuniali', + 'lda' => 'Kla-Dan', + 'ldb' => 'Dũya', + 'ldd' => 'Luri', + 'ldg' => 'Lenyima', + 'ldh' => 'Lamja-Dengsa-Tola', + 'ldi' => 'Laari', + 'ldj' => 'Lemoro', + 'ldk' => 'Leelau', + 'ldl' => 'Kaan', + 'ldm' => 'Landoma', + 'ldn' => 'Láadan', + 'ldo' => 'Loo', + 'ldp' => 'Tso', + 'ldq' => 'Lufu', + 'lea' => 'Lega-Shabunda', + 'leb' => 'Lala-Bisa', + 'lec' => 'Leco', + 'led' => 'Lendu', + 'lee' => 'Lyélé', + 'lef' => 'Lelemi', + 'leh' => 'Lenje', + 'lei' => 'Lemio', + 'lej' => 'Lengola', + 'lek' => 'Leipon', + 'lel' => 'Lele (Democratic Republic of Congo)', + 'lem' => 'Nomaande', + 'len' => 'Lenca', + 'leo' => 'Leti (Cameroon)', + 'lep' => 'Lepcha', + 'leq' => 'Lembena', + 'ler' => 'Lenkau', + 'les' => 'Lese', + 'let' => 'Lesing-Gelimi', + 'leu' => 'Kara (Papua New Guinea)', + 'lev' => 'Lamma', + 'lew' => 'Ledo Kaili', + 'lex' => 'Luang', + 'ley' => 'Lemolang', + 'lez' => 'Lezghian', + 'lfa' => 'Lefa', + 'lfn' => 'Lingua Franca Nova', + 'lga' => 'Lungga', + 'lgb' => 'Laghu', + 'lgg' => 'Lugbara', + 'lgh' => 'Laghuu', + 'lgi' => 'Lengilu', + 'lgk' => 'Lingarak', + 'lgl' => 'Wala', + 'lgm' => 'Lega-Mwenga', + 'lgn' => 'T\'apo', + 'lgq' => 'Logba', + 'lgr' => 'Lengo', + 'lgt' => 'Pahi', + 'lgu' => 'Longgu', + 'lgz' => 'Ligenza', + 'lha' => 'Laha (Viet Nam)', + 'lhh' => 'Laha (Indonesia)', + 'lhi' => 'Lahu Shi', + 'lhl' => 'Lahul Lohar', + 'lhm' => 'Lhomi', + 'lhn' => 'Lahanan', + 'lhp' => 'Lhokpu', + 'lhs' => 'Mlahsö', + 'lht' => 'Lo-Toga', + 'lhu' => 'Lahu', + 'lia' => 'West-Central Limba', + 'lib' => 'Likum', + 'lic' => 'Hlai', + 'lid' => 'Nyindrou', + 'lie' => 'Likila', + 'lif' => 'Limbu', + 'lig' => 'Ligbi', + 'lih' => 'Lihir', + 'lij' => 'Ligurian', + 'lik' => 'Lika', + 'lil' => 'Lillooet', + 'li' => 'Limburgan', + 'lim' => 'Limburgan', + 'ln' => 'Lingala', + 'lin' => 'Lingala', + 'lio' => 'Liki', + 'lip' => 'Sekpele', + 'liq' => 'Libido', + 'lir' => 'Liberian English', + 'lis' => 'Lisu', + 'lt' => 'Lithuanian', + 'lit' => 'Lithuanian', + 'liu' => 'Logorik', + 'liv' => 'Liv', + 'liw' => 'Col', + 'lix' => 'Liabuku', + 'liy' => 'Banda-Bambari', + 'liz' => 'Libinza', + 'lja' => 'Golpa', + 'lje' => 'Rampi', + 'lji' => 'Laiyolo', + 'ljl' => 'Li\'o', + 'ljp' => 'Lampung Api', + 'ljw' => 'Yirandali', + 'ljx' => 'Yuru', + 'lka' => 'Lakalei', + 'lkb' => 'Kabras', + 'lkc' => 'Kucong', + 'lkd' => 'Lakondê', + 'lke' => 'Kenyi', + 'lkh' => 'Lakha', + 'lki' => 'Laki', + 'lkj' => 'Remun', + 'lkl' => 'Laeko-Libuat', + 'lkm' => 'Kalaamaya', + 'lkn' => 'Lakon', + 'lko' => 'Khayo', + 'lkr' => 'Päri', + 'lks' => 'Kisa', + 'lkt' => 'Lakota', + 'lku' => 'Kungkari', + 'lky' => 'Lokoya', + 'lla' => 'Lala-Roba', + 'llb' => 'Lolo', + 'llc' => 'Lele (Guinea)', + 'lld' => 'Ladin', + 'lle' => 'Lele (Papua New Guinea)', + 'llf' => 'Hermit', + 'llg' => 'Lole', + 'llh' => 'Lamu', + 'lli' => 'Teke-Laali', + 'llj' => 'Ladji Ladji', + 'llk' => 'Lelak', + 'lll' => 'Lilau', + 'llm' => 'Lasalimu', + 'lln' => 'Lele (Chad)', + 'llo' => 'Khlor', + 'llp' => 'North Efate', + 'llq' => 'Lolak', + 'lls' => 'Lithuanian Sign Language', + 'llu' => 'Lau', + 'llx' => 'Lauan', + 'lma' => 'East Limba', + 'lmb' => 'Merei', + 'lmc' => 'Limilngan', + 'lmd' => 'Lumun', + 'lme' => 'Pévé', + 'lmf' => 'South Lembata', + 'lmg' => 'Lamogai', + 'lmh' => 'Lambichhong', + 'lmi' => 'Lombi', + 'lmj' => 'West Lembata', + 'lmk' => 'Lamkang', + 'lml' => 'Hano', + 'lmn' => 'Lambadi', + 'lmo' => 'Lombard', + 'lmp' => 'Limbum', + 'lmq' => 'Lamatuka', + 'lmr' => 'Lamalera', + 'lmu' => 'Lamenu', + 'lmv' => 'Lomaiviti', + 'lmw' => 'Lake Miwok', + 'lmx' => 'Laimbue', + 'lmy' => 'Lamboya', + 'lmz' => 'Lumbee', + 'lna' => 'Langbashe', + 'lnb' => 'Mbalanhu', + 'lnd' => 'Lundayeh', + 'lng' => 'Langobardic', + 'lnh' => 'Lanoh', + 'lni' => 'Daantanai\'', + 'lnj' => 'Leningitij', + 'lnl' => 'South Central Banda', + 'lnm' => 'Langam', + 'lnn' => 'Lorediakarkar', + 'lno' => 'Lango (South Sudan)', + 'lns' => 'Lamnso\'', + 'lnu' => 'Longuda', + 'lnw' => 'Lanima', + 'lnz' => 'Lonzo', + 'loa' => 'Loloda', + 'lob' => 'Lobi', + 'loc' => 'Inonhan', + 'loe' => 'Saluan', + 'lof' => 'Logol', + 'log' => 'Logo', + 'loh' => 'Narim', + 'loi' => 'Loma (Côte d\'Ivoire)', + 'loj' => 'Lou', + 'lok' => 'Loko', + 'lol' => 'Mongo', + 'lom' => 'Loma (Liberia)', + 'lon' => 'Malawi Lomwe', + 'loo' => 'Lombo', + 'lop' => 'Lopa', + 'loq' => 'Lobala', + 'lor' => 'Téén', + 'los' => 'Loniu', + 'lot' => 'Otuho', + 'lou' => 'Louisiana Creole', + 'lov' => 'Lopi', + 'low' => 'Tampias Lobu', + 'lox' => 'Loun', + 'loy' => 'Loke', + 'loz' => 'Lozi', + 'lpa' => 'Lelepa', + 'lpe' => 'Lepki', + 'lpn' => 'Long Phuri Naga', + 'lpo' => 'Lipo', + 'lpx' => 'Lopit', + 'lra' => 'Rara Bakati\'', + 'lrc' => 'Northern Luri', + 'lre' => 'Laurentian', + 'lrg' => 'Laragia', + 'lri' => 'Marachi', + 'lrk' => 'Loarki', + 'lrl' => 'Lari', + 'lrm' => 'Marama', + 'lrn' => 'Lorang', + 'lro' => 'Laro', + 'lrr' => 'Southern Yamphu', + 'lrt' => 'Larantuka Malay', + 'lrv' => 'Larevat', + 'lrz' => 'Lemerig', + 'lsa' => 'Lasgerdi', + 'lsd' => 'Lishana Deni', + 'lse' => 'Lusengo', + 'lsh' => 'Lish', + 'lsi' => 'Lashi', + 'lsl' => 'Latvian Sign Language', + 'lsm' => 'Saamia', + 'lso' => 'Laos Sign Language', + 'lsp' => 'Panamanian Sign Language', + 'lsr' => 'Aruop', + 'lss' => 'Lasi', + 'lst' => 'Trinidad and Tobago Sign Language', + 'lsy' => 'Mauritian Sign Language', + 'ltc' => 'Late Middle Chinese', + 'ltg' => 'Latgalian', + 'lth' => 'Thur', + 'lti' => 'Leti (Indonesia)', + 'ltn' => 'Latundê', + 'lto' => 'Tsotso', + 'lts' => 'Tachoni', + 'ltu' => 'Latu', + 'lb' => 'Luxembourgish', + 'ltz' => 'Luxembourgish', + 'lua' => 'Luba-Lulua', + 'lu' => 'Luba-Katanga', + 'lub' => 'Luba-Katanga', + 'luc' => 'Aringa', + 'lud' => 'Ludian', + 'lue' => 'Luvale', + 'luf' => 'Laua', + 'lg' => 'Ganda', + 'lug' => 'Ganda', + 'lui' => 'Luiseno', + 'luj' => 'Luna', + 'luk' => 'Lunanakha', + 'lul' => 'Olu\'bo', + 'lum' => 'Luimbi', + 'lun' => 'Lunda', + 'luo' => 'Luo (Kenya and Tanzania)', + 'lup' => 'Lumbu', + 'luq' => 'Lucumi', + 'lur' => 'Laura', + 'lus' => 'Lushai', + 'lut' => 'Lushootseed', + 'luu' => 'Lumba-Yakkha', + 'luv' => 'Luwati', + 'luw' => 'Luo (Cameroon)', + 'luy' => 'Luyia', + 'luz' => 'Southern Luri', + 'lva' => 'Maku\'a', + 'lvk' => 'Lavukaleve', + 'lvs' => 'Standard Latvian', + 'lvu' => 'Levuka', + 'lwa' => 'Lwalu', + 'lwe' => 'Lewo Eleng', + 'lwg' => 'Wanga', + 'lwh' => 'White Lachi', + 'lwl' => 'Eastern Lawa', + 'lwm' => 'Laomian', + 'lwo' => 'Luwo', + 'lws' => 'Malawian Sign Language', + 'lwt' => 'Lewotobi', + 'lwu' => 'Lawu', + 'lww' => 'Lewo', + 'lya' => 'Layakha', + 'lyg' => 'Lyngngam', + 'lyn' => 'Luyana', + 'lzh' => 'Literary Chinese', + 'lzl' => 'Litzlitz', + 'lzn' => 'Leinong Naga', + 'lzz' => 'Laz', + 'maa' => 'San Jerónimo Tecóatl Mazatec', + 'mab' => 'Yutanduchi Mixtec', + 'mad' => 'Madurese', + 'mae' => 'Bo-Rukul', + 'maf' => 'Mafa', + 'mag' => 'Magahi', + 'mh' => 'Marshallese', + 'mah' => 'Marshallese', + 'mai' => 'Maithili', + 'maj' => 'Jalapa De Díaz Mazatec', + 'mak' => 'Makasar', + 'ml' => 'Malayalam', + 'mal' => 'Malayalam', + 'mam' => 'Mam', + 'man' => 'Mandingo', + 'maq' => 'Chiquihuitlán Mazatec', + 'mr' => 'Marathi', + 'mar' => 'Marathi', + 'mas' => 'Masai', + 'mat' => 'San Francisco Matlatzinca', + 'mau' => 'Huautla Mazatec', + 'mav' => 'Sateré-Mawé', + 'maw' => 'Mampruli', + 'max' => 'North Moluccan Malay', + 'maz' => 'Central Mazahua', + 'mba' => 'Higaonon', + 'mbb' => 'Western Bukidnon Manobo', + 'mbc' => 'Macushi', + 'mbd' => 'Dibabawon Manobo', + 'mbe' => 'Molale', + 'mbf' => 'Baba Malay', + 'mbh' => 'Mangseng', + 'mbi' => 'Ilianen Manobo', + 'mbj' => 'Nadëb', + 'mbk' => 'Malol', + 'mbl' => 'Maxakalí', + 'mbm' => 'Ombamba', + 'mbn' => 'Macaguán', + 'mbo' => 'Mbo (Cameroon)', + 'mbp' => 'Malayo', + 'mbq' => 'Maisin', + 'mbr' => 'Nukak Makú', + 'mbs' => 'Sarangani Manobo', + 'mbt' => 'Matigsalug Manobo', + 'mbu' => 'Mbula-Bwazza', + 'mbv' => 'Mbulungish', + 'mbw' => 'Maring', + 'mbx' => 'Mari (East Sepik Province)', + 'mby' => 'Memoni', + 'mbz' => 'Amoltepec Mixtec', + 'mca' => 'Maca', + 'mcb' => 'Machiguenga', + 'mcc' => 'Bitur', + 'mcd' => 'Sharanahua', + 'mce' => 'Itundujia Mixtec', + 'mcf' => 'Matsés', + 'mcg' => 'Mapoyo', + 'mch' => 'Maquiritari', + 'mci' => 'Mese', + 'mcj' => 'Mvanip', + 'mck' => 'Mbunda', + 'mcl' => 'Macaguaje', + 'mcm' => 'Malaccan Creole Portuguese', + 'mcn' => 'Masana', + 'mco' => 'Coatlán Mixe', + 'mcp' => 'Makaa', + 'mcq' => 'Ese', + 'mcr' => 'Menya', + 'mcs' => 'Mambai', + 'mct' => 'Mengisa', + 'mcu' => 'Cameroon Mambila', + 'mcv' => 'Minanibai', + 'mcw' => 'Mawa (Chad)', + 'mcx' => 'Mpiemo', + 'mcy' => 'South Watut', + 'mcz' => 'Mawan', + 'mda' => 'Mada (Nigeria)', + 'mdb' => 'Morigi', + 'mdc' => 'Male (Papua New Guinea)', + 'mdd' => 'Mbum', + 'mde' => 'Maba (Chad)', + 'mdf' => 'Moksha', + 'mdg' => 'Massalat', + 'mdh' => 'Maguindanaon', + 'mdi' => 'Mamvu', + 'mdj' => 'Mangbetu', + 'mdk' => 'Mangbutu', + 'mdl' => 'Maltese Sign Language', + 'mdm' => 'Mayogo', + 'mdn' => 'Mbati', + 'mdp' => 'Mbala', + 'mdq' => 'Mbole', + 'mdr' => 'Mandar', + 'mds' => 'Maria (Papua New Guinea)', + 'mdt' => 'Mbere', + 'mdu' => 'Mboko', + 'mdv' => 'Santa Lucía Monteverde Mixtec', + 'mdw' => 'Mbosi', + 'mdx' => 'Dizin', + 'mdy' => 'Male (Ethiopia)', + 'mdz' => 'Suruí Do Pará', + 'mea' => 'Menka', + 'meb' => 'Ikobi', + 'mec' => 'Mara', + 'med' => 'Melpa', + 'mee' => 'Mengen', + 'mef' => 'Megam', + 'meh' => 'Southwestern Tlaxiaco Mixtec', + 'mei' => 'Midob', + 'mej' => 'Meyah', + 'mek' => 'Mekeo', + 'mel' => 'Central Melanau', + 'mem' => 'Mangala', + 'men' => 'Mende (Sierra Leone)', + 'meo' => 'Kedah Malay', + 'mep' => 'Miriwung', + 'meq' => 'Merey', + 'mer' => 'Meru', + 'mes' => 'Masmaje', + 'met' => 'Mato', + 'meu' => 'Motu', + 'mev' => 'Mano', + 'mew' => 'Maaka', + 'mey' => 'Hassaniyya', + 'mez' => 'Menominee', + 'mfa' => 'Pattani Malay', + 'mfb' => 'Bangka', + 'mfc' => 'Mba', + 'mfd' => 'Mendankwe-Nkwen', + 'mfe' => 'Morisyen', + 'mff' => 'Naki', + 'mfg' => 'Mogofin', + 'mfh' => 'Matal', + 'mfi' => 'Wandala', + 'mfj' => 'Mefele', + 'mfk' => 'North Mofu', + 'mfl' => 'Putai', + 'mfm' => 'Marghi South', + 'mfn' => 'Cross River Mbembe', + 'mfo' => 'Mbe', + 'mfp' => 'Makassar Malay', + 'mfq' => 'Moba', + 'mfr' => 'Marithiel', + 'mfs' => 'Mexican Sign Language', + 'mft' => 'Mokerang', + 'mfu' => 'Mbwela', + 'mfv' => 'Mandjak', + 'mfw' => 'Mulaha', + 'mfx' => 'Melo', + 'mfy' => 'Mayo', + 'mfz' => 'Mabaan', + 'mga' => 'Middle Irish (900-1200)', + 'mgb' => 'Mararit', + 'mgc' => 'Morokodo', + 'mgd' => 'Moru', + 'mge' => 'Mango', + 'mgf' => 'Maklew', + 'mgg' => 'Mpumpong', + 'mgh' => 'Makhuwa-Meetto', + 'mgi' => 'Lijili', + 'mgj' => 'Abureni', + 'mgk' => 'Mawes', + 'mgl' => 'Maleu-Kilenge', + 'mgm' => 'Mambae', + 'mgn' => 'Mbangi', + 'mgo' => 'Meta\'', + 'mgp' => 'Eastern Magar', + 'mgq' => 'Malila', + 'mgr' => 'Mambwe-Lungu', + 'mgs' => 'Manda (Tanzania)', + 'mgt' => 'Mongol', + 'mgu' => 'Mailu', + 'mgv' => 'Matengo', + 'mgw' => 'Matumbi', + 'mgy' => 'Mbunga', + 'mgz' => 'Mbugwe', + 'mha' => 'Manda (India)', + 'mhb' => 'Mahongwe', + 'mhc' => 'Mocho', + 'mhd' => 'Mbugu', + 'mhe' => 'Besisi', + 'mhf' => 'Mamaa', + 'mhg' => 'Margu', + 'mhi' => 'Ma\'di', + 'mhj' => 'Mogholi', + 'mhk' => 'Mungaka', + 'mhl' => 'Mauwake', + 'mhm' => 'Makhuwa-Moniga', + 'mhn' => 'Mócheno', + 'mho' => 'Mashi (Zambia)', + 'mhp' => 'Balinese Malay', + 'mhq' => 'Mandan', + 'mhr' => 'Eastern Mari', + 'mhs' => 'Buru (Indonesia)', + 'mht' => 'Mandahuaca', + 'mhu' => 'Digaro-Mishmi', + 'mhw' => 'Mbukushu', + 'mhx' => 'Maru', + 'mhy' => 'Ma\'anyan', + 'mhz' => 'Mor (Mor Islands)', + 'mia' => 'Miami', + 'mib' => 'Atatláhuca Mixtec', + 'mic' => 'Mi\'kmaq', + 'mid' => 'Mandaic', + 'mie' => 'Ocotepec Mixtec', + 'mif' => 'Mofu-Gudur', + 'mig' => 'San Miguel El Grande Mixtec', + 'mih' => 'Chayuco Mixtec', + 'mii' => 'Chigmecatitlán Mixtec', + 'mij' => 'Abar', + 'mik' => 'Mikasuki', + 'mil' => 'Peñoles Mixtec', + 'mim' => 'Alacatlatzala Mixtec', + 'min' => 'Minangkabau', + 'mio' => 'Pinotepa Nacional Mixtec', + 'mip' => 'Apasco-Apoala Mixtec', + 'miq' => 'Mískito', + 'mir' => 'Isthmus Mixe', + 'mis' => 'Uncoded languages', + 'mit' => 'Southern Puebla Mixtec', + 'miu' => 'Cacaloxtepec Mixtec', + 'miw' => 'Akoye', + 'mix' => 'Mixtepec Mixtec', + 'miy' => 'Ayutla Mixtec', + 'miz' => 'Coatzospan Mixtec', + 'mjb' => 'Makalero', + 'mjc' => 'San Juan Colorado Mixtec', + 'mjd' => 'Northwest Maidu', + 'mje' => 'Muskum', + 'mjg' => 'Tu', + 'mjh' => 'Mwera (Nyasa)', + 'mji' => 'Kim Mun', + 'mjj' => 'Mawak', + 'mjk' => 'Matukar', + 'mjl' => 'Mandeali', + 'mjm' => 'Medebur', + 'mjn' => 'Ma (Papua New Guinea)', + 'mjo' => 'Malankuravan', + 'mjp' => 'Malapandaram', + 'mjq' => 'Malaryan', + 'mjr' => 'Malavedan', + 'mjs' => 'Miship', + 'mjt' => 'Sauria Paharia', + 'mju' => 'Manna-Dora', + 'mjv' => 'Mannan', + 'mjw' => 'Karbi', + 'mjx' => 'Mahali', + 'mjy' => 'Mahican', + 'mjz' => 'Majhi', + 'mka' => 'Mbre', + 'mkb' => 'Mal Paharia', + 'mkc' => 'Siliput', + 'mk' => 'Macedonian', + 'mkd' => 'Macedonian', + 'mke' => 'Mawchi', + 'mkf' => 'Miya', + 'mkg' => 'Mak (China)', + 'mki' => 'Dhatki', + 'mkj' => 'Mokilese', + 'mkk' => 'Byep', + 'mkl' => 'Mokole', + 'mkm' => 'Moklen', + 'mkn' => 'Kupang Malay', + 'mko' => 'Mingang Doso', + 'mkp' => 'Moikodi', + 'mkq' => 'Bay Miwok', + 'mkr' => 'Malas', + 'mks' => 'Silacayoapan Mixtec', + 'mkt' => 'Vamale', + 'mku' => 'Konyanka Maninka', + 'mkv' => 'Mafea', + 'mkw' => 'Kituba (Congo)', + 'mkx' => 'Kinamiging Manobo', + 'mky' => 'East Makian', + 'mkz' => 'Makasae', + 'mla' => 'Malo', + 'mlb' => 'Mbule', + 'mlc' => 'Cao Lan', + 'mle' => 'Manambu', + 'mlf' => 'Mal', + 'mg' => 'Malagasy', + 'mlg' => 'Malagasy', + 'mlh' => 'Mape', + 'mli' => 'Malimpung', + 'mlj' => 'Miltu', + 'mlk' => 'Ilwana', + 'mll' => 'Malua Bay', + 'mlm' => 'Mulam', + 'mln' => 'Malango', + 'mlo' => 'Mlomp', + 'mlp' => 'Bargam', + 'mlq' => 'Western Maninkakan', + 'mlr' => 'Vame', + 'mls' => 'Masalit', + 'mt' => 'Maltese', + 'mlt' => 'Maltese', + 'mlu' => 'To\'abaita', + 'mlv' => 'Motlav', + 'mlw' => 'Moloko', + 'mlx' => 'Malfaxal', + 'mlz' => 'Malaynon', + 'mma' => 'Mama', + 'mmb' => 'Momina', + 'mmc' => 'Michoacán Mazahua', + 'mmd' => 'Maonan', + 'mme' => 'Mae', + 'mmf' => 'Mundat', + 'mmg' => 'North Ambrym', + 'mmh' => 'Mehináku', + 'mmi' => 'Musar', + 'mmj' => 'Majhwar', + 'mmk' => 'Mukha-Dora', + 'mml' => 'Man Met', + 'mmm' => 'Maii', + 'mmn' => 'Mamanwa', + 'mmo' => 'Mangga Buang', + 'mmp' => 'Siawi', + 'mmq' => 'Musak', + 'mmr' => 'Western Xiangxi Miao', + 'mmt' => 'Malalamai', + 'mmu' => 'Mmaala', + 'mmv' => 'Miriti', + 'mmw' => 'Emae', + 'mmx' => 'Madak', + 'mmy' => 'Migaama', + 'mmz' => 'Mabaale', + 'mna' => 'Mbula', + 'mnb' => 'Muna', + 'mnc' => 'Manchu', + 'mnd' => 'Mondé', + 'mne' => 'Naba', + 'mnf' => 'Mundani', + 'mng' => 'Eastern Mnong', + 'mnh' => 'Mono (Democratic Republic of Congo)', + 'mni' => 'Manipuri', + 'mnj' => 'Munji', + 'mnk' => 'Mandinka', + 'mnl' => 'Tiale', + 'mnm' => 'Mapena', + 'mnn' => 'Southern Mnong', + 'mnp' => 'Min Bei Chinese', + 'mnq' => 'Minriq', + 'mnr' => 'Mono (USA)', + 'mns' => 'Mansi', + 'mnu' => 'Mer', + 'mnv' => 'Rennell-Bellona', + 'mnw' => 'Mon', + 'mnx' => 'Manikion', + 'mny' => 'Manyawa', + 'mnz' => 'Moni', + 'moa' => 'Mwan', + 'moc' => 'Mocoví', + 'mod' => 'Mobilian', + 'moe' => 'Montagnais', + 'mog' => 'Mongondow', + 'moh' => 'Mohawk', + 'moi' => 'Mboi', + 'moj' => 'Monzombo', + 'mok' => 'Morori', + 'mom' => 'Mangue', + 'mn' => 'Mongolian', + 'mon' => 'Mongolian', + 'moo' => 'Monom', + 'mop' => 'Mopán Maya', + 'moq' => 'Mor (Bomberai Peninsula)', + 'mor' => 'Moro', + 'mos' => 'Mossi', + 'mot' => 'Barí', + 'mou' => 'Mogum', + 'mov' => 'Mohave', + 'mow' => 'Moi (Congo)', + 'mox' => 'Molima', + 'moy' => 'Shekkacho', + 'moz' => 'Mukulu', + 'mpa' => 'Mpoto', + 'mpb' => 'Mullukmulluk', + 'mpc' => 'Mangarayi', + 'mpd' => 'Machinere', + 'mpe' => 'Majang', + 'mpg' => 'Marba', + 'mph' => 'Maung', + 'mpi' => 'Mpade', + 'mpj' => 'Martu Wangka', + 'mpk' => 'Mbara (Chad)', + 'mpl' => 'Middle Watut', + 'mpm' => 'Yosondúa Mixtec', + 'mpn' => 'Mindiri', + 'mpo' => 'Miu', + 'mpp' => 'Migabac', + 'mpq' => 'Matís', + 'mpr' => 'Vangunu', + 'mps' => 'Dadibi', + 'mpt' => 'Mian', + 'mpu' => 'Makuráp', + 'mpv' => 'Mungkip', + 'mpw' => 'Mapidian', + 'mpx' => 'Misima-Panaeati', + 'mpy' => 'Mapia', + 'mpz' => 'Mpi', + 'mqa' => 'Maba (Indonesia)', + 'mqb' => 'Mbuko', + 'mqc' => 'Mangole', + 'mqe' => 'Matepi', + 'mqf' => 'Momuna', + 'mqg' => 'Kota Bangun Kutai Malay', + 'mqh' => 'Tlazoyaltepec Mixtec', + 'mqi' => 'Mariri', + 'mqj' => 'Mamasa', + 'mqk' => 'Rajah Kabunsuwan Manobo', + 'mql' => 'Mbelime', + 'mqm' => 'South Marquesan', + 'mqn' => 'Moronene', + 'mqo' => 'Modole', + 'mqp' => 'Manipa', + 'mqq' => 'Minokok', + 'mqr' => 'Mander', + 'mqs' => 'West Makian', + 'mqt' => 'Mok', + 'mqu' => 'Mandari', + 'mqv' => 'Mosimo', + 'mqw' => 'Murupi', + 'mqx' => 'Mamuju', + 'mqy' => 'Manggarai', + 'mqz' => 'Pano', + 'mra' => 'Mlabri', + 'mrb' => 'Marino', + 'mrc' => 'Maricopa', + 'mrd' => 'Western Magar', + 'mre' => 'Martha\'s Vineyard Sign Language', + 'mrf' => 'Elseng', + 'mrg' => 'Mising', + 'mrh' => 'Mara Chin', + 'mi' => 'Maori', + 'mri' => 'Maori', + 'mrj' => 'Western Mari', + 'mrk' => 'Hmwaveke', + 'mrl' => 'Mortlockese', + 'mrm' => 'Merlav', + 'mrn' => 'Cheke Holo', + 'mro' => 'Mru', + 'mrp' => 'Morouas', + 'mrq' => 'North Marquesan', + 'mrr' => 'Maria (India)', + 'mrs' => 'Maragus', + 'mrt' => 'Marghi Central', + 'mru' => 'Mono (Cameroon)', + 'mrv' => 'Mangareva', + 'mrw' => 'Maranao', + 'mrx' => 'Maremgi', + 'mry' => 'Mandaya', + 'mrz' => 'Marind', + 'ms' => 'Malay (macrolanguage)', + 'msa' => 'Malay (macrolanguage)', + 'msb' => 'Masbatenyo', + 'msc' => 'Sankaran Maninka', + 'msd' => 'Yucatec Maya Sign Language', + 'mse' => 'Musey', + 'msf' => 'Mekwei', + 'msg' => 'Moraid', + 'msh' => 'Masikoro Malagasy', + 'msi' => 'Sabah Malay', + 'msj' => 'Ma (Democratic Republic of Congo)', + 'msk' => 'Mansaka', + 'msl' => 'Molof', + 'msm' => 'Agusan Manobo', + 'msn' => 'Vurës', + 'mso' => 'Mombum', + 'msp' => 'Maritsauá', + 'msq' => 'Caac', + 'msr' => 'Mongolian Sign Language', + 'mss' => 'West Masela', + 'msu' => 'Musom', + 'msv' => 'Maslam', + 'msw' => 'Mansoanka', + 'msx' => 'Moresada', + 'msy' => 'Aruamu', + 'msz' => 'Momare', + 'mta' => 'Cotabato Manobo', + 'mtb' => 'Anyin Morofo', + 'mtc' => 'Munit', + 'mtd' => 'Mualang', + 'mte' => 'Mono (Solomon Islands)', + 'mtf' => 'Murik (Papua New Guinea)', + 'mtg' => 'Una', + 'mth' => 'Munggui', + 'mti' => 'Maiwa (Papua New Guinea)', + 'mtj' => 'Moskona', + 'mtk' => 'Mbe\'', + 'mtl' => 'Montol', + 'mtm' => 'Mator', + 'mtn' => 'Matagalpa', + 'mto' => 'Totontepec Mixe', + 'mtp' => 'Wichí Lhamtés Nocten', + 'mtq' => 'Muong', + 'mtr' => 'Mewari', + 'mts' => 'Yora', + 'mtt' => 'Mota', + 'mtu' => 'Tututepec Mixtec', + 'mtv' => 'Asaro\'o', + 'mtw' => 'Southern Binukidnon', + 'mtx' => 'Tidaá Mixtec', + 'mty' => 'Nabi', + 'mua' => 'Mundang', + 'mub' => 'Mubi', + 'muc' => 'Ajumbu', + 'mud' => 'Mednyj Aleut', + 'mue' => 'Media Lengua', + 'mug' => 'Musgu', + 'muh' => 'Mündü', + 'mui' => 'Musi', + 'muj' => 'Mabire', + 'muk' => 'Mugom', + 'mul' => 'Multiple languages', + 'mum' => 'Maiwala', + 'muo' => 'Nyong', + 'mup' => 'Malvi', + 'muq' => 'Eastern Xiangxi Miao', + 'mur' => 'Murle', + 'mus' => 'Creek', + 'mut' => 'Western Muria', + 'muu' => 'Yaaku', + 'muv' => 'Muthuvan', + 'mux' => 'Bo-Ung', + 'muy' => 'Muyang', + 'muz' => 'Mursi', + 'mva' => 'Manam', + 'mvb' => 'Mattole', + 'mvd' => 'Mamboru', + 'mve' => 'Marwari (Pakistan)', + 'mvf' => 'Peripheral Mongolian', + 'mvg' => 'Yucuañe Mixtec', + 'mvh' => 'Mulgi', + 'mvi' => 'Miyako', + 'mvk' => 'Mekmek', + 'mvl' => 'Mbara (Australia)', + 'mvm' => 'Muya', + 'mvn' => 'Minaveha', + 'mvo' => 'Marovo', + 'mvp' => 'Duri', + 'mvq' => 'Moere', + 'mvr' => 'Marau', + 'mvs' => 'Massep', + 'mvt' => 'Mpotovoro', + 'mvu' => 'Marfa', + 'mvv' => 'Tagal Murut', + 'mvw' => 'Machinga', + 'mvx' => 'Meoswar', + 'mvy' => 'Indus Kohistani', + 'mvz' => 'Mesqan', + 'mwa' => 'Mwatebu', + 'mwb' => 'Juwal', + 'mwc' => 'Are', + 'mwe' => 'Mwera (Chimwera)', + 'mwf' => 'Murrinh-Patha', + 'mwg' => 'Aiklep', + 'mwh' => 'Mouk-Aria', + 'mwi' => 'Labo', + 'mwk' => 'Kita Maninkakan', + 'mwl' => 'Mirandese', + 'mwm' => 'Sar', + 'mwn' => 'Nyamwanga', + 'mwo' => 'Central Maewo', + 'mwp' => 'Kala Lagaw Ya', + 'mwq' => 'Mün Chin', + 'mwr' => 'Marwari', + 'mws' => 'Mwimbi-Muthambi', + 'mwt' => 'Moken', + 'mwu' => 'Mittu', + 'mwv' => 'Mentawai', + 'mww' => 'Hmong Daw', + 'mwz' => 'Moingi', + 'mxa' => 'Northwest Oaxaca Mixtec', + 'mxb' => 'Tezoatlán Mixtec', + 'mxc' => 'Manyika', + 'mxd' => 'Modang', + 'mxe' => 'Mele-Fila', + 'mxf' => 'Malgbe', + 'mxg' => 'Mbangala', + 'mxh' => 'Mvuba', + 'mxi' => 'Mozarabic', + 'mxj' => 'Miju-Mishmi', + 'mxk' => 'Monumbo', + 'mxl' => 'Maxi Gbe', + 'mxm' => 'Meramera', + 'mxn' => 'Moi (Indonesia)', + 'mxo' => 'Mbowe', + 'mxp' => 'Tlahuitoltepec Mixe', + 'mxq' => 'Juquila Mixe', + 'mxr' => 'Murik (Malaysia)', + 'mxs' => 'Huitepec Mixtec', + 'mxt' => 'Jamiltepec Mixtec', + 'mxu' => 'Mada (Cameroon)', + 'mxv' => 'Metlatónoc Mixtec', + 'mxw' => 'Namo', + 'mxx' => 'Mahou', + 'mxy' => 'Southeastern Nochixtlán Mixtec', + 'mxz' => 'Central Masela', + 'my' => 'Burmese', + 'mya' => 'Burmese', + 'myb' => 'Mbay', + 'myc' => 'Mayeka', + 'myd' => 'Maramba', + 'mye' => 'Myene', + 'myf' => 'Bambassi', + 'myg' => 'Manta', + 'myh' => 'Makah', + 'myi' => 'Mina (India)', + 'myj' => 'Mangayat', + 'myk' => 'Mamara Senoufo', + 'myl' => 'Moma', + 'mym' => 'Me\'en', + 'myo' => 'Anfillo', + 'myp' => 'Pirahã', + 'myr' => 'Muniche', + 'mys' => 'Mesmes', + 'myu' => 'Mundurukú', + 'myv' => 'Erzya', + 'myw' => 'Muyuw', + 'myx' => 'Masaaba', + 'myy' => 'Macuna', + 'myz' => 'Classical Mandaic', + 'mza' => 'Santa María Zacatepec Mixtec', + 'mzb' => 'Tumzabt', + 'mzc' => 'Madagascar Sign Language', + 'mzd' => 'Malimba', + 'mze' => 'Morawa', + 'mzg' => 'Monastic Sign Language', + 'mzh' => 'Wichí Lhamtés Güisnay', + 'mzi' => 'Ixcatlán Mazatec', + 'mzj' => 'Manya', + 'mzk' => 'Nigeria Mambila', + 'mzl' => 'Mazatlán Mixe', + 'mzm' => 'Mumuye', + 'mzn' => 'Mazanderani', + 'mzo' => 'Matipuhy', + 'mzp' => 'Movima', + 'mzq' => 'Mori Atas', + 'mzr' => 'Marúbo', + 'mzs' => 'Macanese', + 'mzt' => 'Mintil', + 'mzu' => 'Inapang', + 'mzv' => 'Manza', + 'mzw' => 'Deg', + 'mzx' => 'Mawayana', + 'mzy' => 'Mozambican Sign Language', + 'mzz' => 'Maiadomu', + 'naa' => 'Namla', + 'nab' => 'Southern Nambikuára', + 'nac' => 'Narak', + 'nae' => 'Naka\'ela', + 'naf' => 'Nabak', + 'nag' => 'Naga Pidgin', + 'naj' => 'Nalu', + 'nak' => 'Nakanai', + 'nal' => 'Nalik', + 'nam' => 'Ngan\'gityemerri', + 'nan' => 'Min Nan Chinese', + 'nao' => 'Naaba', + 'nap' => 'Neapolitan', + 'naq' => 'Khoekhoe', + 'nar' => 'Iguta', + 'nas' => 'Naasioi', + 'nat' => 'Ca̱hungwa̱rya̱', + 'na' => 'Nauru', + 'nau' => 'Nauru', + 'nv' => 'Navajo', + 'nav' => 'Navajo', + 'naw' => 'Nawuri', + 'nax' => 'Nakwi', + 'nay' => 'Narrinyeri', + 'naz' => 'Coatepec Nahuatl', + 'nba' => 'Nyemba', + 'nbb' => 'Ndoe', + 'nbc' => 'Chang Naga', + 'nbd' => 'Ngbinda', + 'nbe' => 'Konyak Naga', + 'nbg' => 'Nagarchal', + 'nbh' => 'Ngamo', + 'nbi' => 'Mao Naga', + 'nbj' => 'Ngarinman', + 'nbk' => 'Nake', + 'nr' => 'South Ndebele', + 'nbl' => 'South Ndebele', + 'nbm' => 'Ngbaka Ma\'bo', + 'nbn' => 'Kuri', + 'nbo' => 'Nkukoli', + 'nbp' => 'Nnam', + 'nbq' => 'Nggem', + 'nbr' => 'Numana-Nunku-Gbantu-Numbu', + 'nbs' => 'Namibian Sign Language', + 'nbt' => 'Na', + 'nbu' => 'Rongmei Naga', + 'nbv' => 'Ngamambo', + 'nbw' => 'Southern Ngbandi', + 'nby' => 'Ningera', + 'nca' => 'Iyo', + 'ncb' => 'Central Nicobarese', + 'ncc' => 'Ponam', + 'ncd' => 'Nachering', + 'nce' => 'Yale', + 'ncf' => 'Notsi', + 'ncg' => 'Nisga\'a', + 'nch' => 'Central Huasteca Nahuatl', + 'nci' => 'Classical Nahuatl', + 'ncj' => 'Northern Puebla Nahuatl', + 'nck' => 'Nakara', + 'ncl' => 'Michoacán Nahuatl', + 'ncm' => 'Nambo', + 'ncn' => 'Nauna', + 'nco' => 'Sibe', + 'ncq' => 'Northern Katang', + 'ncr' => 'Ncane', + 'ncs' => 'Nicaraguan Sign Language', + 'nct' => 'Chothe Naga', + 'ncu' => 'Chumburung', + 'ncx' => 'Central Puebla Nahuatl', + 'ncz' => 'Natchez', + 'nda' => 'Ndasa', + 'ndb' => 'Kenswei Nsei', + 'ndc' => 'Ndau', + 'ndd' => 'Nde-Nsele-Nta', + 'nd' => 'North Ndebele', + 'nde' => 'North Ndebele', + 'ndf' => 'Nadruvian', + 'ndg' => 'Ndengereko', + 'ndh' => 'Ndali', + 'ndi' => 'Samba Leko', + 'ndj' => 'Ndamba', + 'ndk' => 'Ndaka', + 'ndl' => 'Ndolo', + 'ndm' => 'Ndam', + 'ndn' => 'Ngundi', + 'ng' => 'Ndonga', + 'ndo' => 'Ndonga', + 'ndp' => 'Ndo', + 'ndq' => 'Ndombe', + 'ndr' => 'Ndoola', + 'nds' => 'Low German', + 'ndt' => 'Ndunga', + 'ndu' => 'Dugun', + 'ndv' => 'Ndut', + 'ndw' => 'Ndobo', + 'ndx' => 'Nduga', + 'ndy' => 'Lutos', + 'ndz' => 'Ndogo', + 'nea' => 'Eastern Ngad\'a', + 'neb' => 'Toura (Côte d\'Ivoire)', + 'nec' => 'Nedebang', + 'ned' => 'Nde-Gbite', + 'nee' => 'Nêlêmwa-Nixumwak', + 'nef' => 'Nefamese', + 'neg' => 'Negidal', + 'neh' => 'Nyenkha', + 'nei' => 'Neo-Hittite', + 'nej' => 'Neko', + 'nek' => 'Neku', + 'nem' => 'Nemi', + 'nen' => 'Nengone', + 'neo' => 'Ná-Meo', + 'ne' => 'Nepali (macrolanguage)', + 'nep' => 'Nepali (macrolanguage)', + 'neq' => 'North Central Mixe', + 'ner' => 'Yahadian', + 'nes' => 'Bhoti Kinnauri', + 'net' => 'Nete', + 'neu' => 'Neo', + 'nev' => 'Nyaheun', + 'new' => 'Newari', + 'nex' => 'Neme', + 'ney' => 'Neyo', + 'nez' => 'Nez Perce', + 'nfa' => 'Dhao', + 'nfd' => 'Ahwai', + 'nfl' => 'Ayiwo', + 'nfr' => 'Nafaanra', + 'nfu' => 'Mfumte', + 'nga' => 'Ngbaka', + 'ngb' => 'Northern Ngbandi', + 'ngc' => 'Ngombe (Democratic Republic of Congo)', + 'ngd' => 'Ngando (Central African Republic)', + 'nge' => 'Ngemba', + 'ngg' => 'Ngbaka Manza', + 'ngh' => 'Nǀu', + 'ngi' => 'Ngizim', + 'ngj' => 'Ngie', + 'ngk' => 'Dalabon', + 'ngl' => 'Lomwe', + 'ngm' => 'Ngatik Men\'s Creole', + 'ngn' => 'Ngwo', + 'ngo' => 'Ngoni', + 'ngp' => 'Ngulu', + 'ngq' => 'Ngurimi', + 'ngr' => 'Engdewu', + 'ngs' => 'Gvoko', + 'ngt' => 'Kriang', + 'ngu' => 'Guerrero Nahuatl', + 'ngv' => 'Nagumi', + 'ngw' => 'Ngwaba', + 'ngx' => 'Nggwahyi', + 'ngy' => 'Tibea', + 'ngz' => 'Ngungwel', + 'nha' => 'Nhanda', + 'nhb' => 'Beng', + 'nhc' => 'Tabasco Nahuatl', + 'nhd' => 'Chiripá', + 'nhe' => 'Eastern Huasteca Nahuatl', + 'nhf' => 'Nhuwala', + 'nhg' => 'Tetelcingo Nahuatl', + 'nhh' => 'Nahari', + 'nhi' => 'Zacatlán-Ahuacatlán-Tepetzintla Nahuatl', + 'nhk' => 'Isthmus-Cosoleacaque Nahuatl', + 'nhm' => 'Morelos Nahuatl', + 'nhn' => 'Central Nahuatl', + 'nho' => 'Takuu', + 'nhp' => 'Isthmus-Pajapan Nahuatl', + 'nhq' => 'Huaxcaleca Nahuatl', + 'nhr' => 'Naro', + 'nht' => 'Ometepec Nahuatl', + 'nhu' => 'Noone', + 'nhv' => 'Temascaltepec Nahuatl', + 'nhw' => 'Western Huasteca Nahuatl', + 'nhx' => 'Isthmus-Mecayapan Nahuatl', + 'nhy' => 'Northern Oaxaca Nahuatl', + 'nhz' => 'Santa María La Alta Nahuatl', + 'nia' => 'Nias', + 'nib' => 'Nakame', + 'nid' => 'Ngandi', + 'nie' => 'Niellim', + 'nif' => 'Nek', + 'nig' => 'Ngalakan', + 'nih' => 'Nyiha (Tanzania)', + 'nii' => 'Nii', + 'nij' => 'Ngaju', + 'nik' => 'Southern Nicobarese', + 'nil' => 'Nila', + 'nim' => 'Nilamba', + 'nin' => 'Ninzo', + 'nio' => 'Nganasan', + 'niq' => 'Nandi', + 'nir' => 'Nimboran', + 'nis' => 'Nimi', + 'nit' => 'Southeastern Kolami', + 'niu' => 'Niuean', + 'niv' => 'Gilyak', + 'niw' => 'Nimo', + 'nix' => 'Hema', + 'niy' => 'Ngiti', + 'niz' => 'Ningil', + 'nja' => 'Nzanyi', + 'njb' => 'Nocte Naga', + 'njd' => 'Ndonde Hamba', + 'njh' => 'Lotha Naga', + 'nji' => 'Gudanji', + 'njj' => 'Njen', + 'njl' => 'Njalgulgule', + 'njm' => 'Angami Naga', + 'njn' => 'Liangmai Naga', + 'njo' => 'Ao Naga', + 'njr' => 'Njerep', + 'njs' => 'Nisa', + 'njt' => 'Ndyuka-Trio Pidgin', + 'nju' => 'Ngadjunmaya', + 'njx' => 'Kunyi', + 'njy' => 'Njyem', + 'njz' => 'Nyishi', + 'nka' => 'Nkoya', + 'nkb' => 'Khoibu Naga', + 'nkc' => 'Nkongho', + 'nkd' => 'Koireng', + 'nke' => 'Duke', + 'nkf' => 'Inpui Naga', + 'nkg' => 'Nekgini', + 'nkh' => 'Khezha Naga', + 'nki' => 'Thangal Naga', + 'nkj' => 'Nakai', + 'nkk' => 'Nokuku', + 'nkm' => 'Namat', + 'nkn' => 'Nkangala', + 'nko' => 'Nkonya', + 'nkp' => 'Niuatoputapu', + 'nkq' => 'Nkami', + 'nkr' => 'Nukuoro', + 'nks' => 'North Asmat', + 'nkt' => 'Nyika (Tanzania)', + 'nku' => 'Bouna Kulango', + 'nkv' => 'Nyika (Malawi and Zambia)', + 'nkw' => 'Nkutu', + 'nkx' => 'Nkoroo', + 'nkz' => 'Nkari', + 'nla' => 'Ngombale', + 'nlc' => 'Nalca', + 'nl' => 'Dutch', + 'nld' => 'Dutch', + 'nle' => 'East Nyala', + 'nlg' => 'Gela', + 'nli' => 'Grangali', + 'nlj' => 'Nyali', + 'nlk' => 'Ninia Yali', + 'nll' => 'Nihali', + 'nlm' => 'Mankiyali', + 'nlo' => 'Ngul', + 'nlq' => 'Lao Naga', + 'nlu' => 'Nchumbulu', + 'nlv' => 'Orizaba Nahuatl', + 'nlw' => 'Walangama', + 'nlx' => 'Nahali', + 'nly' => 'Nyamal', + 'nlz' => 'Nalögo', + 'nma' => 'Maram Naga', + 'nmb' => 'Big Nambas', + 'nmc' => 'Ngam', + 'nmd' => 'Ndumu', + 'nme' => 'Mzieme Naga', + 'nmf' => 'Tangkhul Naga (India)', + 'nmg' => 'Kwasio', + 'nmh' => 'Monsang Naga', + 'nmi' => 'Nyam', + 'nmj' => 'Ngombe (Central African Republic)', + 'nmk' => 'Namakura', + 'nml' => 'Ndemli', + 'nmm' => 'Manangba', + 'nmn' => '!Xóõ', + 'nmo' => 'Moyon Naga', + 'nmp' => 'Nimanbur', + 'nmq' => 'Nambya', + 'nmr' => 'Nimbari', + 'nms' => 'Letemboi', + 'nmt' => 'Namonuito', + 'nmu' => 'Northeast Maidu', + 'nmv' => 'Ngamini', + 'nmw' => 'Nimoa', + 'nmx' => 'Nama (Papua New Guinea)', + 'nmy' => 'Namuyi', + 'nmz' => 'Nawdm', + 'nna' => 'Nyangumarta', + 'nnb' => 'Nande', + 'nnc' => 'Nancere', + 'nnd' => 'West Ambae', + 'nne' => 'Ngandyera', + 'nnf' => 'Ngaing', + 'nng' => 'Maring Naga', + 'nnh' => 'Ngiemboon', + 'nni' => 'North Nuaulu', + 'nnj' => 'Nyangatom', + 'nnk' => 'Nankina', + 'nnl' => 'Northern Rengma Naga', + 'nnm' => 'Namia', + 'nnn' => 'Ngete', + 'nn' => 'Norwegian Nynorsk', + 'nno' => 'Norwegian Nynorsk', + 'nnp' => 'Wancho Naga', + 'nnq' => 'Ngindo', + 'nnr' => 'Narungga', + 'nns' => 'Ningye', + 'nnt' => 'Nanticoke', + 'nnu' => 'Dwang', + 'nnv' => 'Nugunu (Australia)', + 'nnw' => 'Southern Nuni', + 'nny' => 'Nyangga', + 'nnz' => 'Nda\'nda\'', + 'noa' => 'Woun Meu', + 'nb' => 'Norwegian Bokmål', + 'nob' => 'Norwegian Bokmål', + 'noc' => 'Nuk', + 'nod' => 'Northern Thai', + 'noe' => 'Nimadi', + 'nof' => 'Nomane', + 'nog' => 'Nogai', + 'noh' => 'Nomu', + 'noi' => 'Noiri', + 'noj' => 'Nonuya', + 'nok' => 'Nooksack', + 'nol' => 'Nomlaki', + 'nom' => 'Nocamán', + 'non' => 'Old Norse', + 'nop' => 'Numanggang', + 'noq' => 'Ngongo', + 'no' => 'Norwegian', + 'nor' => 'Norwegian', + 'nos' => 'Eastern Nisu', + 'not' => 'Nomatsiguenga', + 'nou' => 'Ewage-Notu', + 'nov' => 'Novial', + 'now' => 'Nyambo', + 'noy' => 'Noy', + 'noz' => 'Nayi', + 'npa' => 'Nar Phu', + 'npb' => 'Nupbikha', + 'npg' => 'Ponyo-Gongwang Naga', + 'nph' => 'Phom Naga', + 'npi' => 'Nepali (individual language)', + 'npl' => 'Southeastern Puebla Nahuatl', + 'npn' => 'Mondropolon', + 'npo' => 'Pochuri Naga', + 'nps' => 'Nipsan', + 'npu' => 'Puimei Naga', + 'npx' => 'Noipx', + 'npy' => 'Napu', + 'nqg' => 'Southern Nago', + 'nqk' => 'Kura Ede Nago', + 'nql' => 'Ngendelengo', + 'nqm' => 'Ndom', + 'nqn' => 'Nen', + 'nqo' => 'N\'Ko', + 'nqq' => 'Kyan-Karyaw Naga', + 'nqy' => 'Akyaung Ari Naga', + 'nra' => 'Ngom', + 'nrb' => 'Nara', + 'nrc' => 'Noric', + 'nre' => 'Southern Rengma Naga', + 'nrf' => 'Jèrriais', + 'nrg' => 'Narango', + 'nri' => 'Chokri Naga', + 'nrk' => 'Ngarla', + 'nrl' => 'Ngarluma', + 'nrm' => 'Narom', + 'nrn' => 'Norn', + 'nrp' => 'North Picene', + 'nrr' => 'Norra', + 'nrt' => 'Northern Kalapuya', + 'nru' => 'Narua', + 'nrx' => 'Ngurmbur', + 'nrz' => 'Lala', + 'nsa' => 'Sangtam Naga', + 'nsc' => 'Nshi', + 'nsd' => 'Southern Nisu', + 'nse' => 'Nsenga', + 'nsf' => 'Northwestern Nisu', + 'nsg' => 'Ngasa', + 'nsh' => 'Ngoshie', + 'nsi' => 'Nigerian Sign Language', + 'nsk' => 'Naskapi', + 'nsl' => 'Norwegian Sign Language', + 'nsm' => 'Sumi Naga', + 'nsn' => 'Nehan', + 'nso' => 'Pedi', + 'nsp' => 'Nepalese Sign Language', + 'nsq' => 'Northern Sierra Miwok', + 'nsr' => 'Maritime Sign Language', + 'nss' => 'Nali', + 'nst' => 'Tase Naga', + 'nsu' => 'Sierra Negra Nahuatl', + 'nsv' => 'Southwestern Nisu', + 'nsw' => 'Navut', + 'nsx' => 'Nsongo', + 'nsy' => 'Nasal', + 'nsz' => 'Nisenan', + 'ntd' => 'Northern Tidung', + 'nte' => 'Nathembo', + 'ntg' => 'Ngantangarra', + 'nti' => 'Natioro', + 'ntj' => 'Ngaanyatjarra', + 'ntk' => 'Ikoma-Nata-Isenye', + 'ntm' => 'Nateni', + 'nto' => 'Ntomba', + 'ntp' => 'Northern Tepehuan', + 'ntr' => 'Delo', + 'ntu' => 'Natügu', + 'ntw' => 'Nottoway', + 'ntx' => 'Tangkhul Naga (Myanmar)', + 'nty' => 'Mantsi', + 'ntz' => 'Natanzi', + 'nua' => 'Yuanga', + 'nuc' => 'Nukuini', + 'nud' => 'Ngala', + 'nue' => 'Ngundu', + 'nuf' => 'Nusu', + 'nug' => 'Nungali', + 'nuh' => 'Ndunda', + 'nui' => 'Ngumbi', + 'nuj' => 'Nyole', + 'nuk' => 'Nuu-chah-nulth', + 'nul' => 'Nusa Laut', + 'num' => 'Niuafo\'ou', + 'nun' => 'Anong', + 'nuo' => 'Nguôn', + 'nup' => 'Nupe-Nupe-Tako', + 'nuq' => 'Nukumanu', + 'nur' => 'Nukuria', + 'nus' => 'Nuer', + 'nut' => 'Nung (Viet Nam)', + 'nuu' => 'Ngbundu', + 'nuv' => 'Northern Nuni', + 'nuw' => 'Nguluwan', + 'nux' => 'Mehek', + 'nuy' => 'Nunggubuyu', + 'nuz' => 'Tlamacazapa Nahuatl', + 'nvh' => 'Nasarian', + 'nvm' => 'Namiae', + 'nvo' => 'Nyokon', + 'nwa' => 'Nawathinehena', + 'nwb' => 'Nyabwa', + 'nwc' => 'Classical Newari', + 'nwe' => 'Ngwe', + 'nwg' => 'Ngayawung', + 'nwi' => 'Southwest Tanna', + 'nwm' => 'Nyamusa-Molo', + 'nwo' => 'Nauo', + 'nwr' => 'Nawaru', + 'nwx' => 'Middle Newar', + 'nwy' => 'Nottoway-Meherrin', + 'nxa' => 'Nauete', + 'nxd' => 'Ngando (Democratic Republic of Congo)', + 'nxe' => 'Nage', + 'nxg' => 'Ngad\'a', + 'nxi' => 'Nindi', + 'nxk' => 'Koki Naga', + 'nxl' => 'South Nuaulu', + 'nxm' => 'Numidian', + 'nxn' => 'Ngawun', + 'nxo' => 'Ndambomo', + 'nxq' => 'Naxi', + 'nxr' => 'Ninggerum', + 'nxu' => 'Narau', + 'nxx' => 'Nafri', + 'ny' => 'Nyanja', + 'nya' => 'Nyanja', + 'nyb' => 'Nyangbo', + 'nyc' => 'Nyanga-li', + 'nyd' => 'Nyore', + 'nye' => 'Nyengo', + 'nyf' => 'Giryama', + 'nyg' => 'Nyindu', + 'nyh' => 'Nyigina', + 'nyi' => 'Ama (Sudan)', + 'nyj' => 'Nyanga', + 'nyk' => 'Nyaneka', + 'nyl' => 'Nyeu', + 'nym' => 'Nyamwezi', + 'nyn' => 'Nyankole', + 'nyo' => 'Nyoro', + 'nyp' => 'Nyang\'i', + 'nyq' => 'Nayini', + 'nyr' => 'Nyiha (Malawi)', + 'nys' => 'Nyunga', + 'nyt' => 'Nyawaygi', + 'nyu' => 'Nyungwe', + 'nyv' => 'Nyulnyul', + 'nyw' => 'Nyaw', + 'nyx' => 'Nganyaywana', + 'nyy' => 'Nyakyusa-Ngonde', + 'nza' => 'Tigon Mbembe', + 'nzb' => 'Njebi', + 'nzd' => 'Nzadi', + 'nzi' => 'Nzima', + 'nzk' => 'Nzakara', + 'nzm' => 'Zeme Naga', + 'nzs' => 'New Zealand Sign Language', + 'nzu' => 'Teke-Nzikou', + 'nzy' => 'Nzakambay', + 'nzz' => 'Nanga Dama Dogon', + 'oaa' => 'Orok', + 'oac' => 'Oroch', + 'oar' => 'Old Aramaic (up to 700 BCE)', + 'oav' => 'Old Avar', + 'obi' => 'Obispeño', + 'obk' => 'Southern Bontok', + 'obl' => 'Oblo', + 'obm' => 'Moabite', + 'obo' => 'Obo Manobo', + 'obr' => 'Old Burmese', + 'obt' => 'Old Breton', + 'obu' => 'Obulom', + 'oca' => 'Ocaina', + 'och' => 'Old Chinese', + 'oc' => 'Occitan (post 1500)', + 'oci' => 'Occitan (post 1500)', + 'oco' => 'Old Cornish', + 'ocu' => 'Atzingo Matlatzinca', + 'oda' => 'Odut', + 'odk' => 'Od', + 'odt' => 'Old Dutch', + 'odu' => 'Odual', + 'ofo' => 'Ofo', + 'ofs' => 'Old Frisian', + 'ofu' => 'Efutop', + 'ogb' => 'Ogbia', + 'ogc' => 'Ogbah', + 'oge' => 'Old Georgian', + 'ogg' => 'Ogbogolo', + 'ogo' => 'Khana', + 'ogu' => 'Ogbronuagum', + 'oht' => 'Old Hittite', + 'ohu' => 'Old Hungarian', + 'oia' => 'Oirata', + 'oin' => 'Inebu One', + 'ojb' => 'Northwestern Ojibwa', + 'ojc' => 'Central Ojibwa', + 'ojg' => 'Eastern Ojibwa', + 'oj' => 'Ojibwa', + 'oji' => 'Ojibwa', + 'ojp' => 'Old Japanese', + 'ojs' => 'Severn Ojibwa', + 'ojv' => 'Ontong Java', + 'ojw' => 'Western Ojibwa', + 'oka' => 'Okanagan', + 'okb' => 'Okobo', + 'okd' => 'Okodia', + 'oke' => 'Okpe (Southwestern Edo)', + 'okg' => 'Koko Babangk', + 'okh' => 'Koresh-e Rostam', + 'oki' => 'Okiek', + 'okj' => 'Oko-Juwoi', + 'okk' => 'Kwamtim One', + 'okl' => 'Old Kentish Sign Language', + 'okm' => 'Middle Korean (10th-16th cent.)', + 'okn' => 'Oki-No-Erabu', + 'oko' => 'Old Korean (3rd-9th cent.)', + 'okr' => 'Kirike', + 'oks' => 'Oko-Eni-Osayen', + 'oku' => 'Oku', + 'okv' => 'Orokaiva', + 'okx' => 'Okpe (Northwestern Edo)', + 'ola' => 'Walungge', + 'old' => 'Mochi', + 'ole' => 'Olekha', + 'olk' => 'Olkol', + 'olm' => 'Oloma', + 'olo' => 'Livvi', + 'olr' => 'Olrat', + 'olt' => 'Old Lithuanian', + 'olu' => 'Kuvale', + 'oma' => 'Omaha-Ponca', + 'omb' => 'East Ambae', + 'omc' => 'Mochica', + 'omg' => 'Omagua', + 'omi' => 'Omi', + 'omk' => 'Omok', + 'oml' => 'Ombo', + 'omn' => 'Minoan', + 'omo' => 'Utarmbung', + 'omp' => 'Old Manipuri', + 'omr' => 'Old Marathi', + 'omt' => 'Omotik', + 'omu' => 'Omurano', + 'omw' => 'South Tairora', + 'omx' => 'Old Mon', + 'ona' => 'Ona', + 'onb' => 'Lingao', + 'one' => 'Oneida', + 'ong' => 'Olo', + 'oni' => 'Onin', + 'onj' => 'Onjob', + 'onk' => 'Kabore One', + 'onn' => 'Onobasulu', + 'ono' => 'Onondaga', + 'onp' => 'Sartang', + 'onr' => 'Northern One', + 'ons' => 'Ono', + 'ont' => 'Ontenu', + 'onu' => 'Unua', + 'onw' => 'Old Nubian', + 'onx' => 'Onin Based Pidgin', + 'ood' => 'Tohono O\'odham', + 'oog' => 'Ong', + 'oon' => 'Önge', + 'oor' => 'Oorlams', + 'oos' => 'Old Ossetic', + 'opa' => 'Okpamheri', + 'opk' => 'Kopkaka', + 'opm' => 'Oksapmin', + 'opo' => 'Opao', + 'opt' => 'Opata', + 'opy' => 'Ofayé', + 'ora' => 'Oroha', + 'orc' => 'Orma', + 'ore' => 'Orejón', + 'org' => 'Oring', + 'orh' => 'Oroqen', + 'or' => 'Oriya (macrolanguage)', + 'ori' => 'Oriya (macrolanguage)', + 'om' => 'Oromo', + 'orm' => 'Oromo', + 'orn' => 'Orang Kanaq', + 'oro' => 'Orokolo', + 'orr' => 'Oruma', + 'ors' => 'Orang Seletar', + 'ort' => 'Adivasi Oriya', + 'oru' => 'Ormuri', + 'orv' => 'Old Russian', + 'orw' => 'Oro Win', + 'orx' => 'Oro', + 'ory' => 'Odia', + 'orz' => 'Ormu', + 'osa' => 'Osage', + 'osc' => 'Oscan', + 'osi' => 'Osing', + 'oso' => 'Ososo', + 'osp' => 'Old Spanish', + 'os' => 'Ossetian', + 'oss' => 'Ossetian', + 'ost' => 'Osatu', + 'osu' => 'Southern One', + 'osx' => 'Old Saxon', + 'ota' => 'Ottoman Turkish (1500-1928)', + 'otb' => 'Old Tibetan', + 'otd' => 'Ot Danum', + 'ote' => 'Mezquital Otomi', + 'oti' => 'Oti', + 'otk' => 'Old Turkish', + 'otl' => 'Tilapa Otomi', + 'otm' => 'Eastern Highland Otomi', + 'otn' => 'Tenango Otomi', + 'otq' => 'Querétaro Otomi', + 'otr' => 'Otoro', + 'ots' => 'Estado de México Otomi', + 'ott' => 'Temoaya Otomi', + 'otu' => 'Otuke', + 'otw' => 'Ottawa', + 'otx' => 'Texcatepec Otomi', + 'oty' => 'Old Tamil', + 'otz' => 'Ixtenco Otomi', + 'oua' => 'Tagargrent', + 'oub' => 'Glio-Oubi', + 'oue' => 'Oune', + 'oui' => 'Old Uighur', + 'oum' => 'Ouma', + 'ovd' => 'Elfdalian', + 'owi' => 'Owiniga', + 'owl' => 'Old Welsh', + 'oyb' => 'Oy', + 'oyd' => 'Oyda', + 'oym' => 'Wayampi', + 'oyy' => 'Oya\'oya', + 'ozm' => 'Koonzime', + 'pab' => 'Parecís', + 'pac' => 'Pacoh', + 'pad' => 'Paumarí', + 'pae' => 'Pagibete', + 'paf' => 'Paranawát', + 'pag' => 'Pangasinan', + 'pah' => 'Tenharim', + 'pai' => 'Pe', + 'pak' => 'Parakanã', + 'pal' => 'Pahlavi', + 'pam' => 'Pampanga', + 'pa' => 'Panjabi', + 'pan' => 'Panjabi', + 'pao' => 'Northern Paiute', + 'pap' => 'Papiamento', + 'paq' => 'Parya', + 'par' => 'Panamint', + 'pas' => 'Papasena', + 'pat' => 'Papitalai', + 'pau' => 'Palauan', + 'pav' => 'Pakaásnovos', + 'paw' => 'Pawnee', + 'pax' => 'Pankararé', + 'pay' => 'Pech', + 'paz' => 'Pankararú', + 'pbb' => 'Páez', + 'pbc' => 'Patamona', + 'pbe' => 'Mezontla Popoloca', + 'pbf' => 'Coyotepec Popoloca', + 'pbg' => 'Paraujano', + 'pbh' => 'E\'ñapa Woromaipu', + 'pbi' => 'Parkwa', + 'pbl' => 'Mak (Nigeria)', + 'pbm' => 'Puebla Mazatec', + 'pbn' => 'Kpasam', + 'pbo' => 'Papel', + 'pbp' => 'Badyara', + 'pbr' => 'Pangwa', + 'pbs' => 'Central Pame', + 'pbt' => 'Southern Pashto', + 'pbu' => 'Northern Pashto', + 'pbv' => 'Pnar', + 'pby' => 'Pyu (Papua New Guinea)', + 'pca' => 'Santa Inés Ahuatempan Popoloca', + 'pcb' => 'Pear', + 'pcc' => 'Bouyei', + 'pcd' => 'Picard', + 'pce' => 'Ruching Palaung', + 'pcf' => 'Paliyan', + 'pcg' => 'Paniya', + 'pch' => 'Pardhan', + 'pci' => 'Duruwa', + 'pcj' => 'Parenga', + 'pck' => 'Paite Chin', + 'pcl' => 'Pardhi', + 'pcm' => 'Nigerian Pidgin', + 'pcn' => 'Piti', + 'pcp' => 'Pacahuara', + 'pcw' => 'Pyapun', + 'pda' => 'Anam', + 'pdc' => 'Pennsylvania German', + 'pdi' => 'Pa Di', + 'pdn' => 'Podena', + 'pdo' => 'Padoe', + 'pdt' => 'Plautdietsch', + 'pdu' => 'Kayan', + 'pea' => 'Peranakan Indonesian', + 'peb' => 'Eastern Pomo', + 'ped' => 'Mala (Papua New Guinea)', + 'pee' => 'Taje', + 'pef' => 'Northeastern Pomo', + 'peg' => 'Pengo', + 'peh' => 'Bonan', + 'pei' => 'Chichimeca-Jonaz', + 'pej' => 'Northern Pomo', + 'pek' => 'Penchal', + 'pel' => 'Pekal', + 'pem' => 'Phende', + 'peo' => 'Old Persian (ca. 600-400 B.C.)', + 'pep' => 'Kunja', + 'peq' => 'Southern Pomo', + 'pes' => 'Iranian Persian', + 'pev' => 'Pémono', + 'pex' => 'Petats', + 'pey' => 'Petjo', + 'pez' => 'Eastern Penan', + 'pfa' => 'Pááfang', + 'pfe' => 'Peere', + 'pfl' => 'Pfaelzisch', + 'pga' => 'Sudanese Creole Arabic', + 'pgd' => 'Gāndhārī', + 'pgg' => 'Pangwali', + 'pgi' => 'Pagi', + 'pgk' => 'Rerep', + 'pgl' => 'Primitive Irish', + 'pgn' => 'Paelignian', + 'pgs' => 'Pangseng', + 'pgu' => 'Pagu', + 'pgz' => 'Papua New Guinean Sign Language', + 'pha' => 'Pa-Hng', + 'phd' => 'Phudagi', + 'phg' => 'Phuong', + 'phh' => 'Phukha', + 'phk' => 'Phake', + 'phl' => 'Phalura', + 'phm' => 'Phimbi', + 'phn' => 'Phoenician', + 'pho' => 'Phunoi', + 'phq' => 'Phana\'', + 'phr' => 'Pahari-Potwari', + 'pht' => 'Phu Thai', + 'phu' => 'Phuan', + 'phv' => 'Pahlavani', + 'phw' => 'Phangduwali', + 'pia' => 'Pima Bajo', + 'pib' => 'Yine', + 'pic' => 'Pinji', + 'pid' => 'Piaroa', + 'pie' => 'Piro', + 'pif' => 'Pingelapese', + 'pig' => 'Pisabo', + 'pih' => 'Pitcairn-Norfolk', + 'pii' => 'Pini', + 'pij' => 'Pijao', + 'pil' => 'Yom', + 'pim' => 'Powhatan', + 'pin' => 'Piame', + 'pio' => 'Piapoco', + 'pip' => 'Pero', + 'pir' => 'Piratapuyo', + 'pis' => 'Pijin', + 'pit' => 'Pitta Pitta', + 'piu' => 'Pintupi-Luritja', + 'piv' => 'Pileni', + 'piw' => 'Pimbwe', + 'pix' => 'Piu', + 'piy' => 'Piya-Kwonci', + 'piz' => 'Pije', + 'pjt' => 'Pitjantjatjara', + 'pka' => 'Ardhamāgadhī Prākrit', + 'pkb' => 'Pokomo', + 'pkc' => 'Paekche', + 'pkg' => 'Pak-Tong', + 'pkh' => 'Pankhu', + 'pkn' => 'Pakanha', + 'pko' => 'Pökoot', + 'pkp' => 'Pukapuka', + 'pkr' => 'Attapady Kurumba', + 'pks' => 'Pakistan Sign Language', + 'pkt' => 'Maleng', + 'pku' => 'Paku', + 'pla' => 'Miani', + 'plb' => 'Polonombauk', + 'plc' => 'Central Palawano', + 'pld' => 'Polari', + 'ple' => 'Palu\'e', + 'plg' => 'Pilagá', + 'plh' => 'Paulohi', + 'pi' => 'Pali', + 'pli' => 'Pali', + 'plj' => 'Polci', + 'plk' => 'Kohistani Shina', + 'pll' => 'Shwe Palaung', + 'pln' => 'Palenquero', + 'plo' => 'Oluta Popoluca', + 'plp' => 'Palpa', + 'plq' => 'Palaic', + 'plr' => 'Palaka Senoufo', + 'pls' => 'San Marcos Tlacoyalco Popoloca', + 'plt' => 'Plateau Malagasy', + 'plu' => 'Palikúr', + 'plv' => 'Southwest Palawano', + 'plw' => 'Brooke\'s Point Palawano', + 'ply' => 'Bolyu', + 'plz' => 'Paluan', + 'pma' => 'Paama', + 'pmb' => 'Pambia', + 'pmd' => 'Pallanganmiddang', + 'pme' => 'Pwaamei', + 'pmf' => 'Pamona', + 'pmh' => 'Māhārāṣṭri Prākrit', + 'pmi' => 'Northern Pumi', + 'pmj' => 'Southern Pumi', + 'pmk' => 'Pamlico', + 'pml' => 'Lingua Franca', + 'pmm' => 'Pomo', + 'pmn' => 'Pam', + 'pmo' => 'Pom', + 'pmq' => 'Northern Pame', + 'pmr' => 'Paynamar', + 'pms' => 'Piemontese', + 'pmt' => 'Tuamotuan', + 'pmw' => 'Plains Miwok', + 'pmx' => 'Poumei Naga', + 'pmy' => 'Papuan Malay', + 'pmz' => 'Southern Pame', + 'pna' => 'Punan Bah-Biau', + 'pnb' => 'Western Panjabi', + 'pnc' => 'Pannei', + 'pne' => 'Western Penan', + 'png' => 'Pongu', + 'pnh' => 'Penrhyn', + 'pni' => 'Aoheng', + 'pnj' => 'Pinjarup', + 'pnk' => 'Paunaka', + 'pnl' => 'Paleni', + 'pnm' => 'Punan Batu 1', + 'pnn' => 'Pinai-Hagahai', + 'pno' => 'Panobo', + 'pnp' => 'Pancana', + 'pnq' => 'Pana (Burkina Faso)', + 'pnr' => 'Panim', + 'pns' => 'Ponosakan', + 'pnt' => 'Pontic', + 'pnu' => 'Jiongnai Bunu', + 'pnv' => 'Pinigura', + 'pnw' => 'Panytyima', + 'pnx' => 'Phong-Kniang', + 'pny' => 'Pinyin', + 'pnz' => 'Pana (Central African Republic)', + 'poc' => 'Poqomam', + 'poe' => 'San Juan Atzingo Popoloca', + 'pof' => 'Poke', + 'pog' => 'Potiguára', + 'poh' => 'Poqomchi\'', + 'poi' => 'Highland Popoluca', + 'pok' => 'Pokangá', + 'pl' => 'Polish', + 'pol' => 'Polish', + 'pom' => 'Southeastern Pomo', + 'pon' => 'Pohnpeian', + 'poo' => 'Central Pomo', + 'pop' => 'Pwapwâ', + 'poq' => 'Texistepec Popoluca', + 'pt' => 'Portuguese', + 'por' => 'Portuguese', + 'pos' => 'Sayula Popoluca', + 'pot' => 'Potawatomi', + 'pov' => 'Upper Guinea Crioulo', + 'pow' => 'San Felipe Otlaltepec Popoloca', + 'pox' => 'Polabian', + 'poy' => 'Pogolo', + 'ppe' => 'Papi', + 'ppi' => 'Paipai', + 'ppk' => 'Uma', + 'ppl' => 'Pipil', + 'ppm' => 'Papuma', + 'ppn' => 'Papapana', + 'ppo' => 'Folopa', + 'ppp' => 'Pelende', + 'ppq' => 'Pei', + 'pps' => 'San Luís Temalacayuca Popoloca', + 'ppt' => 'Pare', + 'ppu' => 'Papora', + 'pqa' => 'Pa\'a', + 'pqm' => 'Malecite-Passamaquoddy', + 'prc' => 'Parachi', + 'prd' => 'Parsi-Dari', + 'pre' => 'Principense', + 'prf' => 'Paranan', + 'prg' => 'Prussian', + 'prh' => 'Porohanon', + 'pri' => 'Paicî', + 'prk' => 'Parauk', + 'prl' => 'Peruvian Sign Language', + 'prm' => 'Kibiri', + 'prn' => 'Prasuni', + 'pro' => 'Old Provençal (to 1500)', + 'prp' => 'Parsi', + 'prq' => 'Ashéninka Perené', + 'prr' => 'Puri', + 'prs' => 'Dari', + 'prt' => 'Phai', + 'pru' => 'Puragi', + 'prw' => 'Parawen', + 'prx' => 'Purik', + 'prz' => 'Providencia Sign Language', + 'psa' => 'Asue Awyu', + 'psc' => 'Persian Sign Language', + 'psd' => 'Plains Indian Sign Language', + 'pse' => 'Central Malay', + 'psg' => 'Penang Sign Language', + 'psh' => 'Southwest Pashai', + 'psi' => 'Southeast Pashai', + 'psl' => 'Puerto Rican Sign Language', + 'psm' => 'Pauserna', + 'psn' => 'Panasuan', + 'pso' => 'Polish Sign Language', + 'psp' => 'Philippine Sign Language', + 'psq' => 'Pasi', + 'psr' => 'Portuguese Sign Language', + 'pss' => 'Kaulong', + 'pst' => 'Central Pashto', + 'psu' => 'Sauraseni Prākrit', + 'psw' => 'Port Sandwich', + 'psy' => 'Piscataway', + 'pta' => 'Pai Tavytera', + 'pth' => 'Pataxó Hã-Ha-Hãe', + 'pti' => 'Pintiini', + 'ptn' => 'Patani', + 'pto' => 'Zo\'é', + 'ptp' => 'Patep', + 'ptq' => 'Pattapu', + 'ptr' => 'Piamatsina', + 'ptt' => 'Enrekang', + 'ptu' => 'Bambam', + 'ptv' => 'Port Vato', + 'ptw' => 'Pentlatch', + 'pty' => 'Pathiya', + 'pua' => 'Western Highland Purepecha', + 'pub' => 'Purum', + 'puc' => 'Punan Merap', + 'pud' => 'Punan Aput', + 'pue' => 'Puelche', + 'puf' => 'Punan Merah', + 'pug' => 'Phuie', + 'pui' => 'Puinave', + 'puj' => 'Punan Tubu', + 'pum' => 'Puma', + 'puo' => 'Puoc', + 'pup' => 'Pulabu', + 'puq' => 'Puquina', + 'pur' => 'Puruborá', + 'ps' => 'Pushto', + 'pus' => 'Pushto', + 'put' => 'Putoh', + 'puu' => 'Punu', + 'puw' => 'Puluwatese', + 'pux' => 'Puare', + 'puy' => 'Purisimeño', + 'pwa' => 'Pawaia', + 'pwb' => 'Panawa', + 'pwg' => 'Gapapaiwa', + 'pwi' => 'Patwin', + 'pwm' => 'Molbog', + 'pwn' => 'Paiwan', + 'pwo' => 'Pwo Western Karen', + 'pwr' => 'Powari', + 'pww' => 'Pwo Northern Karen', + 'pxm' => 'Quetzaltepec Mixe', + 'pye' => 'Pye Krumen', + 'pym' => 'Fyam', + 'pyn' => 'Poyanáwa', + 'pys' => 'Paraguayan Sign Language', + 'pyu' => 'Puyuma', + 'pyx' => 'Pyu (Myanmar)', + 'pyy' => 'Pyen', + 'pzn' => 'Para Naga', + 'qua' => 'Quapaw', + 'qub' => 'Huallaga Huánuco Quechua', + 'quc' => 'K\'iche\'', + 'qud' => 'Calderón Highland Quichua', + 'qu' => 'Quechua', + 'que' => 'Quechua', + 'quf' => 'Lambayeque Quechua', + 'qug' => 'Chimborazo Highland Quichua', + 'quh' => 'South Bolivian Quechua', + 'qui' => 'Quileute', + 'quk' => 'Chachapoyas Quechua', + 'qul' => 'North Bolivian Quechua', + 'qum' => 'Sipacapense', + 'qun' => 'Quinault', + 'qup' => 'Southern Pastaza Quechua', + 'quq' => 'Quinqui', + 'qur' => 'Yanahuanca Pasco Quechua', + 'qus' => 'Santiago del Estero Quichua', + 'quv' => 'Sacapulteco', + 'quw' => 'Tena Lowland Quichua', + 'qux' => 'Yauyos Quechua', + 'quy' => 'Ayacucho Quechua', + 'quz' => 'Cusco Quechua', + 'qva' => 'Ambo-Pasco Quechua', + 'qvc' => 'Cajamarca Quechua', + 'qve' => 'Eastern Apurímac Quechua', + 'qvh' => 'Huamalíes-Dos de Mayo Huánuco Quechua', + 'qvi' => 'Imbabura Highland Quichua', + 'qvj' => 'Loja Highland Quichua', + 'qvl' => 'Cajatambo North Lima Quechua', + 'qvm' => 'Margos-Yarowilca-Lauricocha Quechua', + 'qvn' => 'North Junín Quechua', + 'qvo' => 'Napo Lowland Quechua', + 'qvp' => 'Pacaraos Quechua', + 'qvs' => 'San Martín Quechua', + 'qvw' => 'Huaylla Wanca Quechua', + 'qvy' => 'Queyu', + 'qvz' => 'Northern Pastaza Quichua', + 'qwa' => 'Corongo Ancash Quechua', + 'qwc' => 'Classical Quechua', + 'qwh' => 'Huaylas Ancash Quechua', + 'qwm' => 'Kuman (Russia)', + 'qws' => 'Sihuas Ancash Quechua', + 'qwt' => 'Kwalhioqua-Tlatskanai', + 'qxa' => 'Chiquián Ancash Quechua', + 'qxc' => 'Chincha Quechua', + 'qxh' => 'Panao Huánuco Quechua', + 'qxl' => 'Salasaca Highland Quichua', + 'qxn' => 'Northern Conchucos Ancash Quechua', + 'qxo' => 'Southern Conchucos Ancash Quechua', + 'qxp' => 'Puno Quechua', + 'qxq' => 'Qashqa\'i', + 'qxr' => 'Cañar Highland Quichua', + 'qxs' => 'Southern Qiang', + 'qxt' => 'Santa Ana de Tusi Pasco Quechua', + 'qxu' => 'Arequipa-La Unión Quechua', + 'qxw' => 'Jauja Wanca Quechua', + 'qya' => 'Quenya', + 'qyp' => 'Quiripi', + 'raa' => 'Dungmali', + 'rab' => 'Camling', + 'rac' => 'Rasawa', + 'rad' => 'Rade', + 'raf' => 'Western Meohang', + 'rag' => 'Logooli', + 'rah' => 'Rabha', + 'rai' => 'Ramoaaina', + 'raj' => 'Rajasthani', + 'rak' => 'Tulu-Bohuai', + 'ral' => 'Ralte', + 'ram' => 'Canela', + 'ran' => 'Riantana', + 'rao' => 'Rao', + 'rap' => 'Rapanui', + 'raq' => 'Saam', + 'rar' => 'Rarotongan', + 'ras' => 'Tegali', + 'rat' => 'Razajerdi', + 'rau' => 'Raute', + 'rav' => 'Sampang', + 'raw' => 'Rawang', + 'rax' => 'Rang', + 'ray' => 'Rapa', + 'raz' => 'Rahambuu', + 'rbb' => 'Rumai Palaung', + 'rbk' => 'Northern Bontok', + 'rbl' => 'Miraya Bikol', + 'rbp' => 'Barababaraba', + 'rcf' => 'Réunion Creole French', + 'rdb' => 'Rudbari', + 'rea' => 'Rerau', + 'reb' => 'Rembong', + 'ree' => 'Rejang Kayan', + 'reg' => 'Kara (Tanzania)', + 'rei' => 'Reli', + 'rej' => 'Rejang', + 'rel' => 'Rendille', + 'rem' => 'Remo', + 'ren' => 'Rengao', + 'rer' => 'Rer Bare', + 'res' => 'Reshe', + 'ret' => 'Retta', + 'rey' => 'Reyesano', + 'rga' => 'Roria', + 'rge' => 'Romano-Greek', + 'rgk' => 'Rangkas', + 'rgn' => 'Romagnol', + 'rgr' => 'Resígaro', + 'rgs' => 'Southern Roglai', + 'rgu' => 'Ringgou', + 'rhg' => 'Rohingya', + 'rhp' => 'Yahang', + 'ria' => 'Riang (India)', + 'rif' => 'Tarifit', + 'ril' => 'Riang (Myanmar)', + 'rim' => 'Nyaturu', + 'rin' => 'Nungu', + 'rir' => 'Ribun', + 'rit' => 'Ritarungo', + 'riu' => 'Riung', + 'rjg' => 'Rajong', + 'rji' => 'Raji', + 'rjs' => 'Rajbanshi', + 'rka' => 'Kraol', + 'rkb' => 'Rikbaktsa', + 'rkh' => 'Rakahanga-Manihiki', + 'rki' => 'Rakhine', + 'rkm' => 'Marka', + 'rkt' => 'Rangpuri', + 'rkw' => 'Arakwal', + 'rma' => 'Rama', + 'rmb' => 'Rembarunga', + 'rmc' => 'Carpathian Romani', + 'rmd' => 'Traveller Danish', + 'rme' => 'Angloromani', + 'rmf' => 'Kalo Finnish Romani', + 'rmg' => 'Traveller Norwegian', + 'rmh' => 'Murkim', + 'rmi' => 'Lomavren', + 'rmk' => 'Romkun', + 'rml' => 'Baltic Romani', + 'rmm' => 'Roma', + 'rmn' => 'Balkan Romani', + 'rmo' => 'Sinte Romani', + 'rmp' => 'Rempi', + 'rmq' => 'Caló', + 'rms' => 'Romanian Sign Language', + 'rmt' => 'Domari', + 'rmu' => 'Tavringer Romani', + 'rmv' => 'Romanova', + 'rmw' => 'Welsh Romani', + 'rmx' => 'Romam', + 'rmy' => 'Vlax Romani', + 'rmz' => 'Marma', + 'rnd' => 'Ruund', + 'rng' => 'Ronga', + 'rnl' => 'Ranglong', + 'rnn' => 'Roon', + 'rnp' => 'Rongpo', + 'rnr' => 'Nari Nari', + 'rnw' => 'Rungwa', + 'rob' => 'Tae\'', + 'roc' => 'Cacgia Roglai', + 'rod' => 'Rogo', + 'roe' => 'Ronji', + 'rof' => 'Rombo', + 'rog' => 'Northern Roglai', + 'rm' => 'Romansh', + 'roh' => 'Romansh', + 'rol' => 'Romblomanon', + 'rom' => 'Romany', + 'ro' => 'Romanian', + 'ron' => 'Romanian', + 'roo' => 'Rotokas', + 'rop' => 'Kriol', + 'ror' => 'Rongga', + 'rou' => 'Runga', + 'row' => 'Dela-Oenale', + 'rpn' => 'Repanbitip', + 'rpt' => 'Rapting', + 'rri' => 'Ririo', + 'rro' => 'Waima', + 'rrt' => 'Arritinngithigh', + 'rsb' => 'Romano-Serbian', + 'rsl' => 'Russian Sign Language', + 'rsm' => 'Miriwoong Sign Language', + 'rtc' => 'Rungtu Chin', + 'rth' => 'Ratahan', + 'rtm' => 'Rotuman', + 'rts' => 'Yurats', + 'rtw' => 'Rathawi', + 'rub' => 'Gungu', + 'ruc' => 'Ruuli', + 'rue' => 'Rusyn', + 'ruf' => 'Luguru', + 'rug' => 'Roviana', + 'ruh' => 'Ruga', + 'rui' => 'Rufiji', + 'ruk' => 'Che', + 'rn' => 'Rundi', + 'run' => 'Rundi', + 'ruo' => 'Istro Romanian', + 'rup' => 'Macedo-Romanian', + 'ruq' => 'Megleno Romanian', + 'ru' => 'Russian', + 'rus' => 'Russian', + 'rut' => 'Rutul', + 'ruu' => 'Lanas Lobu', + 'ruy' => 'Mala (Nigeria)', + 'ruz' => 'Ruma', + 'rwa' => 'Rawo', + 'rwk' => 'Rwa', + 'rwm' => 'Amba (Uganda)', + 'rwo' => 'Rawa', + 'rwr' => 'Marwari (India)', + 'rxd' => 'Ngardi', + 'rxw' => 'Karuwali', + 'ryn' => 'Northern Amami-Oshima', + 'rys' => 'Yaeyama', + 'ryu' => 'Central Okinawan', + 'rzh' => 'Rāziḥī', + 'saa' => 'Saba', + 'sab' => 'Buglere', + 'sac' => 'Meskwaki', + 'sad' => 'Sandawe', + 'sae' => 'Sabanê', + 'saf' => 'Safaliba', + 'sg' => 'Sango', + 'sag' => 'Sango', + 'sah' => 'Yakut', + 'saj' => 'Sahu', + 'sak' => 'Sake', + 'sam' => 'Samaritan Aramaic', + 'sa' => 'Sanskrit', + 'san' => 'Sanskrit', + 'sao' => 'Sause', + 'saq' => 'Samburu', + 'sar' => 'Saraveca', + 'sas' => 'Sasak', + 'sat' => 'Santali', + 'sau' => 'Saleman', + 'sav' => 'Saafi-Saafi', + 'saw' => 'Sawi', + 'sax' => 'Sa', + 'say' => 'Saya', + 'saz' => 'Saurashtra', + 'sba' => 'Ngambay', + 'sbb' => 'Simbo', + 'sbc' => 'Kele (Papua New Guinea)', + 'sbd' => 'Southern Samo', + 'sbe' => 'Saliba', + 'sbf' => 'Chabu', + 'sbg' => 'Seget', + 'sbh' => 'Sori-Harengan', + 'sbi' => 'Seti', + 'sbj' => 'Surbakhal', + 'sbk' => 'Safwa', + 'sbl' => 'Botolan Sambal', + 'sbm' => 'Sagala', + 'sbn' => 'Sindhi Bhil', + 'sbo' => 'Sabüm', + 'sbp' => 'Sangu (Tanzania)', + 'sbq' => 'Sileibi', + 'sbr' => 'Sembakung Murut', + 'sbs' => 'Subiya', + 'sbt' => 'Kimki', + 'sbu' => 'Stod Bhoti', + 'sbv' => 'Sabine', + 'sbw' => 'Simba', + 'sbx' => 'Seberuang', + 'sby' => 'Soli', + 'sbz' => 'Sara Kaba', + 'scb' => 'Chut', + 'sce' => 'Dongxiang', + 'scf' => 'San Miguel Creole French', + 'scg' => 'Sanggau', + 'sch' => 'Sakachep', + 'sci' => 'Sri Lankan Creole Malay', + 'sck' => 'Sadri', + 'scl' => 'Shina', + 'scn' => 'Sicilian', + 'sco' => 'Scots', + 'scp' => 'Hyolmo', + 'scq' => 'Sa\'och', + 'scs' => 'North Slavey', + 'sct' => 'Southern Katang', + 'scu' => 'Shumcho', + 'scv' => 'Sheni', + 'scw' => 'Sha', + 'scx' => 'Sicel', + 'sda' => 'Toraja-Sa\'dan', + 'sdb' => 'Shabak', + 'sdc' => 'Sassarese Sardinian', + 'sde' => 'Surubu', + 'sdf' => 'Sarli', + 'sdg' => 'Savi', + 'sdh' => 'Southern Kurdish', + 'sdj' => 'Suundi', + 'sdk' => 'Sos Kundi', + 'sdl' => 'Saudi Arabian Sign Language', + 'sdm' => 'Semandang', + 'sdn' => 'Gallurese Sardinian', + 'sdo' => 'Bukar-Sadung Bidayuh', + 'sdp' => 'Sherdukpen', + 'sdr' => 'Oraon Sadri', + 'sds' => 'Sened', + 'sdt' => 'Shuadit', + 'sdu' => 'Sarudu', + 'sdx' => 'Sibu Melanau', + 'sdz' => 'Sallands', + 'sea' => 'Semai', + 'seb' => 'Shempire Senoufo', + 'sec' => 'Sechelt', + 'sed' => 'Sedang', + 'see' => 'Seneca', + 'sef' => 'Cebaara Senoufo', + 'seg' => 'Segeju', + 'seh' => 'Sena', + 'sei' => 'Seri', + 'sej' => 'Sene', + 'sek' => 'Sekani', + 'sel' => 'Selkup', + 'sen' => 'Nanerigé Sénoufo', + 'seo' => 'Suarmin', + 'sep' => 'Sìcìté Sénoufo', + 'seq' => 'Senara Sénoufo', + 'ser' => 'Serrano', + 'ses' => 'Koyraboro Senni Songhai', + 'set' => 'Sentani', + 'seu' => 'Serui-Laut', + 'sev' => 'Nyarafolo Senoufo', + 'sew' => 'Sewa Bay', + 'sey' => 'Secoya', + 'sez' => 'Senthang Chin', + 'sfb' => 'Langue des signes de Belgique Francophone', + 'sfe' => 'Eastern Subanen', + 'sfm' => 'Small Flowery Miao', + 'sfs' => 'South African Sign Language', + 'sfw' => 'Sehwi', + 'sga' => 'Old Irish (to 900)', + 'sgb' => 'Mag-antsi Ayta', + 'sgc' => 'Kipsigis', + 'sgd' => 'Surigaonon', + 'sge' => 'Segai', + 'sgg' => 'Swiss-German Sign Language', + 'sgh' => 'Shughni', + 'sgi' => 'Suga', + 'sgj' => 'Surgujia', + 'sgk' => 'Sangkong', + 'sgm' => 'Singa', + 'sgp' => 'Singpho', + 'sgr' => 'Sangisari', + 'sgs' => 'Samogitian', + 'sgt' => 'Brokpake', + 'sgu' => 'Salas', + 'sgw' => 'Sebat Bet Gurage', + 'sgx' => 'Sierra Leone Sign Language', + 'sgy' => 'Sanglechi', + 'sgz' => 'Sursurunga', + 'sha' => 'Shall-Zwall', + 'shb' => 'Ninam', + 'shc' => 'Sonde', + 'shd' => 'Kundal Shahi', + 'she' => 'Sheko', + 'shg' => 'Shua', + 'shh' => 'Shoshoni', + 'shi' => 'Tachelhit', + 'shj' => 'Shatt', + 'shk' => 'Shilluk', + 'shl' => 'Shendu', + 'shm' => 'Shahrudi', + 'shn' => 'Shan', + 'sho' => 'Shanga', + 'shp' => 'Shipibo-Conibo', + 'shq' => 'Sala', + 'shr' => 'Shi', + 'shs' => 'Shuswap', + 'sht' => 'Shasta', + 'shu' => 'Chadian Arabic', + 'shv' => 'Shehri', + 'shw' => 'Shwai', + 'shx' => 'She', + 'shy' => 'Tachawit', + 'shz' => 'Syenara Senoufo', + 'sia' => 'Akkala Sami', + 'sib' => 'Sebop', + 'sid' => 'Sidamo', + 'sie' => 'Simaa', + 'sif' => 'Siamou', + 'sig' => 'Paasaal', + 'sih' => 'Zire', + 'sii' => 'Shom Peng', + 'sij' => 'Numbami', + 'sik' => 'Sikiana', + 'sil' => 'Tumulung Sisaala', + 'sim' => 'Mende (Papua New Guinea)', + 'si' => 'Sinhala', + 'sin' => 'Sinhala', + 'sip' => 'Sikkimese', + 'siq' => 'Sonia', + 'sir' => 'Siri', + 'sis' => 'Siuslaw', + 'siu' => 'Sinagen', + 'siv' => 'Sumariup', + 'siw' => 'Siwai', + 'six' => 'Sumau', + 'siy' => 'Sivandi', + 'siz' => 'Siwi', + 'sja' => 'Epena', + 'sjb' => 'Sajau Basap', + 'sjd' => 'Kildin Sami', + 'sje' => 'Pite Sami', + 'sjg' => 'Assangori', + 'sjk' => 'Kemi Sami', + 'sjl' => 'Sajalong', + 'sjm' => 'Mapun', + 'sjn' => 'Sindarin', + 'sjo' => 'Xibe', + 'sjp' => 'Surjapuri', + 'sjr' => 'Siar-Lak', + 'sjs' => 'Senhaja De Srair', + 'sjt' => 'Ter Sami', + 'sju' => 'Ume Sami', + 'sjw' => 'Shawnee', + 'ska' => 'Skagit', + 'skb' => 'Saek', + 'skc' => 'Ma Manda', + 'skd' => 'Southern Sierra Miwok', + 'ske' => 'Seke (Vanuatu)', + 'skf' => 'Sakirabiá', + 'skg' => 'Sakalava Malagasy', + 'skh' => 'Sikule', + 'ski' => 'Sika', + 'skj' => 'Seke (Nepal)', + 'skm' => 'Kutong', + 'skn' => 'Kolibugan Subanon', + 'sko' => 'Seko Tengah', + 'skp' => 'Sekapan', + 'skq' => 'Sininkere', + 'skr' => 'Saraiki', + 'sks' => 'Maia', + 'skt' => 'Sakata', + 'sku' => 'Sakao', + 'skv' => 'Skou', + 'skw' => 'Skepi Creole Dutch', + 'skx' => 'Seko Padang', + 'sky' => 'Sikaiana', + 'skz' => 'Sekar', + 'slc' => 'Sáliba', + 'sld' => 'Sissala', + 'sle' => 'Sholaga', + 'slf' => 'Swiss-Italian Sign Language', + 'slg' => 'Selungai Murut', + 'slh' => 'Southern Puget Sound Salish', + 'sli' => 'Lower Silesian', + 'slj' => 'Salumá', + 'sk' => 'Slovak', + 'slk' => 'Slovak', + 'sll' => 'Salt-Yui', + 'slm' => 'Pangutaran Sama', + 'sln' => 'Salinan', + 'slp' => 'Lamaholot', + 'slq' => 'Salchuq', + 'slr' => 'Salar', + 'sls' => 'Singapore Sign Language', + 'slt' => 'Sila', + 'slu' => 'Selaru', + 'sl' => 'Slovenian', + 'slv' => 'Slovenian', + 'slw' => 'Sialum', + 'slx' => 'Salampasu', + 'sly' => 'Selayar', + 'slz' => 'Ma\'ya', + 'sma' => 'Southern Sami', + 'smb' => 'Simbari', + 'smc' => 'Som', + 'smd' => 'Sama', + 'se' => 'Northern Sami', + 'sme' => 'Northern Sami', + 'smf' => 'Auwe', + 'smg' => 'Simbali', + 'smh' => 'Samei', + 'smj' => 'Lule Sami', + 'smk' => 'Bolinao', + 'sml' => 'Central Sama', + 'smm' => 'Musasa', + 'smn' => 'Inari Sami', + 'sm' => 'Samoan', + 'smo' => 'Samoan', + 'smp' => 'Samaritan', + 'smq' => 'Samo', + 'smr' => 'Simeulue', + 'sms' => 'Skolt Sami', + 'smt' => 'Simte', + 'smu' => 'Somray', + 'smv' => 'Samvedi', + 'smw' => 'Sumbawa', + 'smx' => 'Samba', + 'smy' => 'Semnani', + 'smz' => 'Simeku', + 'sn' => 'Shona', + 'sna' => 'Shona', + 'snb' => 'Sebuyau', + 'snc' => 'Sinaugoro', + 'sd' => 'Sindhi', + 'snd' => 'Sindhi', + 'sne' => 'Bau Bidayuh', + 'snf' => 'Noon', + 'sng' => 'Sanga (Democratic Republic of Congo)', + 'sni' => 'Sensi', + 'snj' => 'Riverain Sango', + 'snk' => 'Soninke', + 'snl' => 'Sangil', + 'snm' => 'Southern Ma\'di', + 'snn' => 'Siona', + 'sno' => 'Snohomish', + 'snp' => 'Siane', + 'snq' => 'Sangu (Gabon)', + 'snr' => 'Sihan', + 'sns' => 'South West Bay', + 'snu' => 'Senggi', + 'snv' => 'Sa\'ban', + 'snw' => 'Selee', + 'snx' => 'Sam', + 'sny' => 'Saniyo-Hiyewe', + 'snz' => 'Sinsauru', + 'soa' => 'Thai Song', + 'sob' => 'Sobei', + 'soc' => 'So (Democratic Republic of Congo)', + 'sod' => 'Songoora', + 'soe' => 'Songomeno', + 'sog' => 'Sogdian', + 'soh' => 'Aka', + 'soi' => 'Sonha', + 'soj' => 'Soi', + 'sok' => 'Sokoro', + 'sol' => 'Solos', + 'so' => 'Somali', + 'som' => 'Somali', + 'soo' => 'Songo', + 'sop' => 'Songe', + 'soq' => 'Kanasi', + 'sor' => 'Somrai', + 'sos' => 'Seeku', + 'st' => 'Southern Sotho', + 'sot' => 'Southern Sotho', + 'sou' => 'Southern Thai', + 'sov' => 'Sonsorol', + 'sow' => 'Sowanda', + 'sox' => 'Swo', + 'soy' => 'Miyobe', + 'soz' => 'Temi', + 'es' => 'Spanish', + 'spa' => 'Spanish', + 'spb' => 'Sepa (Indonesia)', + 'spc' => 'Sapé', + 'spd' => 'Saep', + 'spe' => 'Sepa (Papua New Guinea)', + 'spg' => 'Sian', + 'spi' => 'Saponi', + 'spk' => 'Sengo', + 'spl' => 'Selepet', + 'spm' => 'Akukem', + 'spn' => 'Sanapaná', + 'spo' => 'Spokane', + 'spp' => 'Supyire Senoufo', + 'spq' => 'Loreto-Ucayali Spanish', + 'spr' => 'Saparua', + 'sps' => 'Saposa', + 'spt' => 'Spiti Bhoti', + 'spu' => 'Sapuan', + 'spv' => 'Sambalpuri', + 'spx' => 'South Picene', + 'spy' => 'Sabaot', + 'sqa' => 'Shama-Sambuga', + 'sqh' => 'Shau', + 'sq' => 'Albanian', + 'sqi' => 'Albanian', + 'sqk' => 'Albanian Sign Language', + 'sqm' => 'Suma', + 'sqn' => 'Susquehannock', + 'sqo' => 'Sorkhei', + 'sqq' => 'Sou', + 'sqr' => 'Siculo Arabic', + 'sqs' => 'Sri Lankan Sign Language', + 'sqt' => 'Soqotri', + 'squ' => 'Squamish', + 'sra' => 'Saruga', + 'srb' => 'Sora', + 'src' => 'Logudorese Sardinian', + 'sc' => 'Sardinian', + 'srd' => 'Sardinian', + 'sre' => 'Sara', + 'srf' => 'Nafi', + 'srg' => 'Sulod', + 'srh' => 'Sarikoli', + 'sri' => 'Siriano', + 'srk' => 'Serudung Murut', + 'srl' => 'Isirawa', + 'srm' => 'Saramaccan', + 'srn' => 'Sranan Tongo', + 'sro' => 'Campidanese Sardinian', + 'sr' => 'Serbian', + 'srp' => 'Serbian', + 'srq' => 'Sirionó', + 'srr' => 'Serer', + 'srs' => 'Sarsi', + 'srt' => 'Sauri', + 'sru' => 'Suruí', + 'srv' => 'Southern Sorsoganon', + 'srw' => 'Serua', + 'srx' => 'Sirmauri', + 'sry' => 'Sera', + 'srz' => 'Shahmirzadi', + 'ssb' => 'Southern Sama', + 'ssc' => 'Suba-Simbiti', + 'ssd' => 'Siroi', + 'sse' => 'Balangingi', + 'ssf' => 'Thao', + 'ssg' => 'Seimat', + 'ssh' => 'Shihhi Arabic', + 'ssi' => 'Sansi', + 'ssj' => 'Sausi', + 'ssk' => 'Sunam', + 'ssl' => 'Western Sisaala', + 'ssm' => 'Semnam', + 'ssn' => 'Waata', + 'sso' => 'Sissano', + 'ssp' => 'Spanish Sign Language', + 'ssq' => 'So\'a', + 'ssr' => 'Swiss-French Sign Language', + 'sss' => 'Sô', + 'sst' => 'Sinasina', + 'ssu' => 'Susuami', + 'ssv' => 'Shark Bay', + 'ss' => 'Swati', + 'ssw' => 'Swati', + 'ssx' => 'Samberigi', + 'ssy' => 'Saho', + 'ssz' => 'Sengseng', + 'sta' => 'Settla', + 'stb' => 'Northern Subanen', + 'std' => 'Sentinel', + 'ste' => 'Liana-Seti', + 'stf' => 'Seta', + 'stg' => 'Trieng', + 'sth' => 'Shelta', + 'sti' => 'Bulo Stieng', + 'stj' => 'Matya Samo', + 'stk' => 'Arammba', + 'stl' => 'Stellingwerfs', + 'stm' => 'Setaman', + 'stn' => 'Owa', + 'sto' => 'Stoney', + 'stp' => 'Southeastern Tepehuan', + 'stq' => 'Saterfriesisch', + 'str' => 'Straits Salish', + 'sts' => 'Shumashti', + 'stt' => 'Budeh Stieng', + 'stu' => 'Samtao', + 'stv' => 'Silt\'e', + 'stw' => 'Satawalese', + 'sty' => 'Siberian Tatar', + 'sua' => 'Sulka', + 'sub' => 'Suku', + 'suc' => 'Western Subanon', + 'sue' => 'Suena', + 'sug' => 'Suganga', + 'sui' => 'Suki', + 'suj' => 'Shubi', + 'suk' => 'Sukuma', + 'su' => 'Sundanese', + 'sun' => 'Sundanese', + 'suq' => 'Suri', + 'sur' => 'Mwaghavul', + 'sus' => 'Susu', + 'sut' => 'Subtiaba', + 'suv' => 'Puroik', + 'suw' => 'Sumbwa', + 'sux' => 'Sumerian', + 'suy' => 'Suyá', + 'suz' => 'Sunwar', + 'sva' => 'Svan', + 'svb' => 'Ulau-Suain', + 'svc' => 'Vincentian Creole English', + 'sve' => 'Serili', + 'svk' => 'Slovakian Sign Language', + 'svm' => 'Slavomolisano', + 'svs' => 'Savosavo', + 'svx' => 'Skalvian', + 'sw' => 'Swahili (macrolanguage)', + 'swa' => 'Swahili (macrolanguage)', + 'swb' => 'Maore Comorian', + 'swc' => 'Congo Swahili', + 'sv' => 'Swedish', + 'swe' => 'Swedish', + 'swf' => 'Sere', + 'swg' => 'Swabian', + 'swh' => 'Swahili (individual language)', + 'swi' => 'Sui', + 'swj' => 'Sira', + 'swk' => 'Malawi Sena', + 'swl' => 'Swedish Sign Language', + 'swm' => 'Samosa', + 'swn' => 'Sawknah', + 'swo' => 'Shanenawa', + 'swp' => 'Suau', + 'swq' => 'Sharwa', + 'swr' => 'Saweru', + 'sws' => 'Seluwasan', + 'swt' => 'Sawila', + 'swu' => 'Suwawa', + 'swv' => 'Shekhawati', + 'sww' => 'Sowa', + 'swx' => 'Suruahá', + 'swy' => 'Sarua', + 'sxb' => 'Suba', + 'sxc' => 'Sicanian', + 'sxe' => 'Sighu', + 'sxg' => 'Shuhi', + 'sxk' => 'Southern Kalapuya', + 'sxl' => 'Selian', + 'sxm' => 'Samre', + 'sxn' => 'Sangir', + 'sxo' => 'Sorothaptic', + 'sxr' => 'Saaroa', + 'sxs' => 'Sasaru', + 'sxu' => 'Upper Saxon', + 'sxw' => 'Saxwe Gbe', + 'sya' => 'Siang', + 'syb' => 'Central Subanen', + 'syc' => 'Classical Syriac', + 'syi' => 'Seki', + 'syk' => 'Sukur', + 'syl' => 'Sylheti', + 'sym' => 'Maya Samo', + 'syn' => 'Senaya', + 'syo' => 'Suoy', + 'syr' => 'Syriac', + 'sys' => 'Sinyar', + 'syw' => 'Kagate', + 'syx' => 'Samay', + 'syy' => 'Al-Sayyid Bedouin Sign Language', + 'sza' => 'Semelai', + 'szb' => 'Ngalum', + 'szc' => 'Semaq Beri', + 'szd' => 'Seru', + 'sze' => 'Seze', + 'szg' => 'Sengele', + 'szl' => 'Silesian', + 'szn' => 'Sula', + 'szp' => 'Suabo', + 'szs' => 'Solomon Islands Sign Language', + 'szv' => 'Isu (Fako Division)', + 'szw' => 'Sawai', + 'taa' => 'Lower Tanana', + 'tab' => 'Tabassaran', + 'tac' => 'Lowland Tarahumara', + 'tad' => 'Tause', + 'tae' => 'Tariana', + 'taf' => 'Tapirapé', + 'tag' => 'Tagoi', + 'ty' => 'Tahitian', + 'tah' => 'Tahitian', + 'taj' => 'Eastern Tamang', + 'tak' => 'Tala', + 'tal' => 'Tal', + 'ta' => 'Tamil', + 'tam' => 'Tamil', + 'tan' => 'Tangale', + 'tao' => 'Yami', + 'tap' => 'Taabwa', + 'taq' => 'Tamasheq', + 'tar' => 'Central Tarahumara', + 'tas' => 'Tay Boi', + 'tt' => 'Tatar', + 'tat' => 'Tatar', + 'tau' => 'Upper Tanana', + 'tav' => 'Tatuyo', + 'taw' => 'Tai', + 'tax' => 'Tamki', + 'tay' => 'Atayal', + 'taz' => 'Tocho', + 'tba' => 'Aikanã', + 'tbb' => 'Tapeba', + 'tbc' => 'Takia', + 'tbd' => 'Kaki Ae', + 'tbe' => 'Tanimbili', + 'tbf' => 'Mandara', + 'tbg' => 'North Tairora', + 'tbh' => 'Thurawal', + 'tbi' => 'Gaam', + 'tbj' => 'Tiang', + 'tbk' => 'Calamian Tagbanwa', + 'tbl' => 'Tboli', + 'tbm' => 'Tagbu', + 'tbn' => 'Barro Negro Tunebo', + 'tbo' => 'Tawala', + 'tbp' => 'Taworta', + 'tbr' => 'Tumtum', + 'tbs' => 'Tanguat', + 'tbt' => 'Tembo (Kitembo)', + 'tbu' => 'Tubar', + 'tbv' => 'Tobo', + 'tbw' => 'Tagbanwa', + 'tbx' => 'Kapin', + 'tby' => 'Tabaru', + 'tbz' => 'Ditammari', + 'tca' => 'Ticuna', + 'tcb' => 'Tanacross', + 'tcc' => 'Datooga', + 'tcd' => 'Tafi', + 'tce' => 'Southern Tutchone', + 'tcf' => 'Malinaltepec Me\'phaa', + 'tcg' => 'Tamagario', + 'tch' => 'Turks And Caicos Creole English', + 'tci' => 'Wára', + 'tck' => 'Tchitchege', + 'tcl' => 'Taman (Myanmar)', + 'tcm' => 'Tanahmerah', + 'tcn' => 'Tichurong', + 'tco' => 'Taungyo', + 'tcp' => 'Tawr Chin', + 'tcq' => 'Kaiy', + 'tcs' => 'Torres Strait Creole', + 'tct' => 'T\'en', + 'tcu' => 'Southeastern Tarahumara', + 'tcw' => 'Tecpatlán Totonac', + 'tcx' => 'Toda', + 'tcy' => 'Tulu', + 'tcz' => 'Thado Chin', + 'tda' => 'Tagdal', + 'tdb' => 'Panchpargania', + 'tdc' => 'Emberá-Tadó', + 'tdd' => 'Tai Nüa', + 'tde' => 'Tiranige Diga Dogon', + 'tdf' => 'Talieng', + 'tdg' => 'Western Tamang', + 'tdh' => 'Thulung', + 'tdi' => 'Tomadino', + 'tdj' => 'Tajio', + 'tdk' => 'Tambas', + 'tdl' => 'Sur', + 'tdm' => 'Taruma', + 'tdn' => 'Tondano', + 'tdo' => 'Teme', + 'tdq' => 'Tita', + 'tdr' => 'Todrah', + 'tds' => 'Doutai', + 'tdt' => 'Tetun Dili', + 'tdv' => 'Toro', + 'tdx' => 'Tandroy-Mahafaly Malagasy', + 'tdy' => 'Tadyawan', + 'tea' => 'Temiar', + 'teb' => 'Tetete', + 'tec' => 'Terik', + 'ted' => 'Tepo Krumen', + 'tee' => 'Huehuetla Tepehua', + 'tef' => 'Teressa', + 'teg' => 'Teke-Tege', + 'teh' => 'Tehuelche', + 'tei' => 'Torricelli', + 'tek' => 'Ibali Teke', + 'te' => 'Telugu', + 'tel' => 'Telugu', + 'tem' => 'Timne', + 'ten' => 'Tama (Colombia)', + 'teo' => 'Teso', + 'tep' => 'Tepecano', + 'teq' => 'Temein', + 'ter' => 'Tereno', + 'tes' => 'Tengger', + 'tet' => 'Tetum', + 'teu' => 'Soo', + 'tev' => 'Teor', + 'tew' => 'Tewa (USA)', + 'tex' => 'Tennet', + 'tey' => 'Tulishi', + 'tez' => 'Tetserret', + 'tfi' => 'Tofin Gbe', + 'tfn' => 'Tanaina', + 'tfo' => 'Tefaro', + 'tfr' => 'Teribe', + 'tft' => 'Ternate', + 'tga' => 'Sagalla', + 'tgb' => 'Tobilung', + 'tgc' => 'Tigak', + 'tgd' => 'Ciwogai', + 'tge' => 'Eastern Gorkha Tamang', + 'tgf' => 'Chalikha', + 'tgh' => 'Tobagonian Creole English', + 'tgi' => 'Lawunuia', + 'tgj' => 'Tagin', + 'tg' => 'Tajik', + 'tgk' => 'Tajik', + 'tl' => 'Tagalog', + 'tgl' => 'Tagalog', + 'tgn' => 'Tandaganon', + 'tgo' => 'Sudest', + 'tgp' => 'Tangoa', + 'tgq' => 'Tring', + 'tgr' => 'Tareng', + 'tgs' => 'Nume', + 'tgt' => 'Central Tagbanwa', + 'tgu' => 'Tanggu', + 'tgv' => 'Tingui-Boto', + 'tgw' => 'Tagwana Senoufo', + 'tgx' => 'Tagish', + 'tgy' => 'Togoyo', + 'tgz' => 'Tagalaka', + 'th' => 'Thai', + 'tha' => 'Thai', + 'thd' => 'Thayore', + 'the' => 'Chitwania Tharu', + 'thf' => 'Thangmi', + 'thh' => 'Northern Tarahumara', + 'thi' => 'Tai Long', + 'thk' => 'Tharaka', + 'thl' => 'Dangaura Tharu', + 'thm' => 'Aheu', + 'thn' => 'Thachanadan', + 'thp' => 'Thompson', + 'thq' => 'Kochila Tharu', + 'thr' => 'Rana Tharu', + 'ths' => 'Thakali', + 'tht' => 'Tahltan', + 'thu' => 'Thuri', + 'thv' => 'Tahaggart Tamahaq', + 'thw' => 'Thudam', + 'thy' => 'Tha', + 'thz' => 'Tayart Tamajeq', + 'tia' => 'Tidikelt Tamazight', + 'tic' => 'Tira', + 'tif' => 'Tifal', + 'tig' => 'Tigre', + 'tih' => 'Timugon Murut', + 'tii' => 'Tiene', + 'tij' => 'Tilung', + 'tik' => 'Tikar', + 'til' => 'Tillamook', + 'tim' => 'Timbe', + 'tin' => 'Tindi', + 'tio' => 'Teop', + 'tip' => 'Trimuris', + 'tiq' => 'Tiéfo', + 'ti' => 'Tigrinya', + 'tir' => 'Tigrinya', + 'tis' => 'Masadiit Itneg', + 'tit' => 'Tinigua', + 'tiu' => 'Adasen', + 'tiv' => 'Tiv', + 'tiw' => 'Tiwi', + 'tix' => 'Southern Tiwa', + 'tiy' => 'Tiruray', + 'tiz' => 'Tai Hongjin', + 'tja' => 'Tajuasohn', + 'tjg' => 'Tunjung', + 'tji' => 'Northern Tujia', + 'tjl' => 'Tai Laing', + 'tjm' => 'Timucua', + 'tjn' => 'Tonjon', + 'tjo' => 'Temacine Tamazight', + 'tjs' => 'Southern Tujia', + 'tju' => 'Tjurruru', + 'tjw' => 'Djabwurrung', + 'tka' => 'Truká', + 'tkb' => 'Buksa', + 'tkd' => 'Tukudede', + 'tke' => 'Takwane', + 'tkf' => 'Tukumanféd', + 'tkg' => 'Tesaka Malagasy', + 'tkl' => 'Tokelau', + 'tkm' => 'Takelma', + 'tkn' => 'Toku-No-Shima', + 'tkp' => 'Tikopia', + 'tkq' => 'Tee', + 'tkr' => 'Tsakhur', + 'tks' => 'Takestani', + 'tkt' => 'Kathoriya Tharu', + 'tku' => 'Upper Necaxa Totonac', + 'tkv' => 'Mur Pano', + 'tkw' => 'Teanu', + 'tkx' => 'Tangko', + 'tkz' => 'Takua', + 'tla' => 'Southwestern Tepehuan', + 'tlb' => 'Tobelo', + 'tlc' => 'Yecuatla Totonac', + 'tld' => 'Talaud', + 'tlf' => 'Telefol', + 'tlg' => 'Tofanma', + 'tlh' => 'Klingon', + 'tli' => 'Tlingit', + 'tlj' => 'Talinga-Bwisi', + 'tlk' => 'Taloki', + 'tll' => 'Tetela', + 'tlm' => 'Tolomako', + 'tln' => 'Talondo\'', + 'tlo' => 'Talodi', + 'tlp' => 'Filomena Mata-Coahuitlán Totonac', + 'tlq' => 'Tai Loi', + 'tlr' => 'Talise', + 'tls' => 'Tambotalo', + 'tlt' => 'Sou Nama', + 'tlu' => 'Tulehu', + 'tlv' => 'Taliabu', + 'tlx' => 'Khehek', + 'tly' => 'Talysh', + 'tma' => 'Tama (Chad)', + 'tmb' => 'Katbol', + 'tmc' => 'Tumak', + 'tmd' => 'Haruai', + 'tme' => 'Tremembé', + 'tmf' => 'Toba-Maskoy', + 'tmg' => 'Ternateño', + 'tmh' => 'Tamashek', + 'tmi' => 'Tutuba', + 'tmj' => 'Samarokena', + 'tmk' => 'Northwestern Tamang', + 'tml' => 'Tamnim Citak', + 'tmm' => 'Tai Thanh', + 'tmn' => 'Taman (Indonesia)', + 'tmo' => 'Temoq', + 'tmq' => 'Tumleo', + 'tmr' => 'Jewish Babylonian Aramaic (ca. 200-1200 CE)', + 'tms' => 'Tima', + 'tmt' => 'Tasmate', + 'tmu' => 'Iau', + 'tmv' => 'Tembo (Motembo)', + 'tmw' => 'Temuan', + 'tmy' => 'Tami', + 'tmz' => 'Tamanaku', + 'tna' => 'Tacana', + 'tnb' => 'Western Tunebo', + 'tnc' => 'Tanimuca-Retuarã', + 'tnd' => 'Angosturas Tunebo', + 'tng' => 'Tobanga', + 'tnh' => 'Maiani', + 'tni' => 'Tandia', + 'tnk' => 'Kwamera', + 'tnl' => 'Lenakel', + 'tnm' => 'Tabla', + 'tnn' => 'North Tanna', + 'tno' => 'Toromono', + 'tnp' => 'Whitesands', + 'tnq' => 'Taino', + 'tnr' => 'Ménik', + 'tns' => 'Tenis', + 'tnt' => 'Tontemboan', + 'tnu' => 'Tay Khang', + 'tnv' => 'Tangchangya', + 'tnw' => 'Tonsawang', + 'tnx' => 'Tanema', + 'tny' => 'Tongwe', + 'tnz' => 'Ten\'edn', + 'tob' => 'Toba', + 'toc' => 'Coyutla Totonac', + 'tod' => 'Toma', + 'tof' => 'Gizrra', + 'tog' => 'Tonga (Nyasa)', + 'toh' => 'Gitonga', + 'toi' => 'Tonga (Zambia)', + 'toj' => 'Tojolabal', + 'tol' => 'Tolowa', + 'tom' => 'Tombulu', + 'to' => 'Tonga (Tonga Islands)', + 'ton' => 'Tonga (Tonga Islands)', + 'too' => 'Xicotepec De Juárez Totonac', + 'top' => 'Papantla Totonac', + 'toq' => 'Toposa', + 'tor' => 'Togbo-Vara Banda', + 'tos' => 'Highland Totonac', + 'tou' => 'Tho', + 'tov' => 'Upper Taromi', + 'tow' => 'Jemez', + 'tox' => 'Tobian', + 'toy' => 'Topoiyo', + 'toz' => 'To', + 'tpa' => 'Taupota', + 'tpc' => 'Azoyú Me\'phaa', + 'tpe' => 'Tippera', + 'tpf' => 'Tarpia', + 'tpg' => 'Kula', + 'tpi' => 'Tok Pisin', + 'tpj' => 'Tapieté', + 'tpk' => 'Tupinikin', + 'tpl' => 'Tlacoapa Me\'phaa', + 'tpm' => 'Tampulma', + 'tpn' => 'Tupinambá', + 'tpo' => 'Tai Pao', + 'tpp' => 'Pisaflores Tepehua', + 'tpq' => 'Tukpa', + 'tpr' => 'Tuparí', + 'tpt' => 'Tlachichilco Tepehua', + 'tpu' => 'Tampuan', + 'tpv' => 'Tanapag', + 'tpw' => 'Tupí', + 'tpx' => 'Acatepec Me\'phaa', + 'tpy' => 'Trumai', + 'tpz' => 'Tinputz', + 'tqb' => 'Tembé', + 'tql' => 'Lehali', + 'tqm' => 'Turumsa', + 'tqn' => 'Tenino', + 'tqo' => 'Toaripi', + 'tqp' => 'Tomoip', + 'tqq' => 'Tunni', + 'tqr' => 'Torona', + 'tqt' => 'Western Totonac', + 'tqu' => 'Touo', + 'tqw' => 'Tonkawa', + 'tra' => 'Tirahi', + 'trb' => 'Terebu', + 'trc' => 'Copala Triqui', + 'trd' => 'Turi', + 'tre' => 'East Tarangan', + 'trf' => 'Trinidadian Creole English', + 'trg' => 'Lishán Didán', + 'trh' => 'Turaka', + 'tri' => 'Trió', + 'trj' => 'Toram', + 'trl' => 'Traveller Scottish', + 'trm' => 'Tregami', + 'trn' => 'Trinitario', + 'tro' => 'Tarao Naga', + 'trp' => 'Kok Borok', + 'trq' => 'San Martín Itunyoso Triqui', + 'trr' => 'Taushiro', + 'trs' => 'Chicahuaxtla Triqui', + 'trt' => 'Tunggare', + 'tru' => 'Turoyo', + 'trv' => 'Taroko', + 'trw' => 'Torwali', + 'trx' => 'Tringgus-Sembaan Bidayuh', + 'try' => 'Turung', + 'trz' => 'Torá', + 'tsa' => 'Tsaangi', + 'tsb' => 'Tsamai', + 'tsc' => 'Tswa', + 'tsd' => 'Tsakonian', + 'tse' => 'Tunisian Sign Language', + 'tsg' => 'Tausug', + 'tsh' => 'Tsuvan', + 'tsi' => 'Tsimshian', + 'tsj' => 'Tshangla', + 'tsk' => 'Tseku', + 'tsl' => 'Ts\'ün-Lao', + 'tsm' => 'Turkish Sign Language', + 'tn' => 'Tswana', + 'tsn' => 'Tswana', + 'ts' => 'Tsonga', + 'tso' => 'Tsonga', + 'tsp' => 'Northern Toussian', + 'tsq' => 'Thai Sign Language', + 'tsr' => 'Akei', + 'tss' => 'Taiwan Sign Language', + 'tst' => 'Tondi Songway Kiini', + 'tsu' => 'Tsou', + 'tsv' => 'Tsogo', + 'tsw' => 'Tsishingini', + 'tsx' => 'Mubami', + 'tsy' => 'Tebul Sign Language', + 'tsz' => 'Purepecha', + 'tta' => 'Tutelo', + 'ttb' => 'Gaa', + 'ttc' => 'Tektiteko', + 'ttd' => 'Tauade', + 'tte' => 'Bwanabwana', + 'ttf' => 'Tuotomb', + 'ttg' => 'Tutong', + 'tth' => 'Upper Ta\'oih', + 'tti' => 'Tobati', + 'ttj' => 'Tooro', + 'ttk' => 'Totoro', + 'ttl' => 'Totela', + 'ttm' => 'Northern Tutchone', + 'ttn' => 'Towei', + 'tto' => 'Lower Ta\'oih', + 'ttp' => 'Tombelala', + 'ttq' => 'Tawallammat Tamajaq', + 'ttr' => 'Tera', + 'tts' => 'Northeastern Thai', + 'ttt' => 'Muslim Tat', + 'ttu' => 'Torau', + 'ttv' => 'Titan', + 'ttw' => 'Long Wat', + 'tty' => 'Sikaritai', + 'ttz' => 'Tsum', + 'tua' => 'Wiarumus', + 'tub' => 'Tübatulabal', + 'tuc' => 'Mutu', + 'tud' => 'Tuxá', + 'tue' => 'Tuyuca', + 'tuf' => 'Central Tunebo', + 'tug' => 'Tunia', + 'tuh' => 'Taulil', + 'tui' => 'Tupuri', + 'tuj' => 'Tugutil', + 'tk' => 'Turkmen', + 'tuk' => 'Turkmen', + 'tul' => 'Tula', + 'tum' => 'Tumbuka', + 'tun' => 'Tunica', + 'tuo' => 'Tucano', + 'tuq' => 'Tedaga', + 'tr' => 'Turkish', + 'tur' => 'Turkish', + 'tus' => 'Tuscarora', + 'tuu' => 'Tututni', + 'tuv' => 'Turkana', + 'tux' => 'Tuxináwa', + 'tuy' => 'Tugen', + 'tuz' => 'Turka', + 'tva' => 'Vaghua', + 'tvd' => 'Tsuvadi', + 'tve' => 'Te\'un', + 'tvk' => 'Southeast Ambrym', + 'tvl' => 'Tuvalu', + 'tvm' => 'Tela-Masbuar', + 'tvn' => 'Tavoyan', + 'tvo' => 'Tidore', + 'tvs' => 'Taveta', + 'tvt' => 'Tutsa Naga', + 'tvu' => 'Tunen', + 'tvw' => 'Sedoa', + 'tvy' => 'Timor Pidgin', + 'twa' => 'Twana', + 'twb' => 'Western Tawbuid', + 'twc' => 'Teshenawa', + 'twd' => 'Twents', + 'twe' => 'Tewa (Indonesia)', + 'twf' => 'Northern Tiwa', + 'twg' => 'Tereweng', + 'twh' => 'Tai Dón', + 'tw' => 'Twi', + 'twi' => 'Twi', + 'twl' => 'Tawara', + 'twm' => 'Tawang Monpa', + 'twn' => 'Twendi', + 'two' => 'Tswapong', + 'twp' => 'Ere', + 'twq' => 'Tasawaq', + 'twr' => 'Southwestern Tarahumara', + 'twt' => 'Turiwára', + 'twu' => 'Termanu', + 'tww' => 'Tuwari', + 'twx' => 'Tewe', + 'twy' => 'Tawoyan', + 'txa' => 'Tombonuo', + 'txb' => 'Tokharian B', + 'txc' => 'Tsetsaut', + 'txe' => 'Totoli', + 'txg' => 'Tangut', + 'txh' => 'Thracian', + 'txi' => 'Ikpeng', + 'txj' => 'Tarjumo', + 'txm' => 'Tomini', + 'txn' => 'West Tarangan', + 'txo' => 'Toto', + 'txq' => 'Tii', + 'txr' => 'Tartessian', + 'txs' => 'Tonsea', + 'txt' => 'Citak', + 'txu' => 'Kayapó', + 'txx' => 'Tatana', + 'txy' => 'Tanosy Malagasy', + 'tya' => 'Tauya', + 'tye' => 'Kyanga', + 'tyh' => 'O\'du', + 'tyi' => 'Teke-Tsaayi', + 'tyj' => 'Tai Do', + 'tyl' => 'Thu Lao', + 'tyn' => 'Kombai', + 'typ' => 'Thaypan', + 'tyr' => 'Tai Daeng', + 'tys' => 'Tày Sa Pa', + 'tyt' => 'Tày Tac', + 'tyu' => 'Kua', + 'tyv' => 'Tuvinian', + 'tyx' => 'Teke-Tyee', + 'tyz' => 'Tày', + 'tza' => 'Tanzanian Sign Language', + 'tzh' => 'Tzeltal', + 'tzj' => 'Tz\'utujil', + 'tzl' => 'Talossan', + 'tzm' => 'Central Atlas Tamazight', + 'tzn' => 'Tugun', + 'tzo' => 'Tzotzil', + 'tzx' => 'Tabriak', + 'uam' => 'Uamué', + 'uan' => 'Kuan', + 'uar' => 'Tairuma', + 'uba' => 'Ubang', + 'ubi' => 'Ubi', + 'ubl' => 'Buhi\'non Bikol', + 'ubr' => 'Ubir', + 'ubu' => 'Umbu-Ungu', + 'uby' => 'Ubykh', + 'uda' => 'Uda', + 'ude' => 'Udihe', + 'udg' => 'Muduga', + 'udi' => 'Udi', + 'udj' => 'Ujir', + 'udl' => 'Wuzlam', + 'udm' => 'Udmurt', + 'udu' => 'Uduk', + 'ues' => 'Kioko', + 'ufi' => 'Ufim', + 'uga' => 'Ugaritic', + 'ugb' => 'Kuku-Ugbanh', + 'uge' => 'Ughele', + 'ugn' => 'Ugandan Sign Language', + 'ugo' => 'Ugong', + 'ugy' => 'Uruguayan Sign Language', + 'uha' => 'Uhami', + 'uhn' => 'Damal', + 'ug' => 'Uighur', + 'uig' => 'Uighur', + 'uis' => 'Uisai', + 'uiv' => 'Iyive', + 'uji' => 'Tanjijili', + 'uka' => 'Kaburi', + 'ukg' => 'Ukuriguma', + 'ukh' => 'Ukhwejo', + 'ukk' => 'Muak Sa-aak', + 'ukl' => 'Ukrainian Sign Language', + 'ukp' => 'Ukpe-Bayobiri', + 'ukq' => 'Ukwa', + 'uk' => 'Ukrainian', + 'ukr' => 'Ukrainian', + 'uks' => 'Urubú-Kaapor Sign Language', + 'uku' => 'Ukue', + 'ukw' => 'Ukwuani-Aboh-Ndoni', + 'uky' => 'Kuuk-Yak', + 'ula' => 'Fungwa', + 'ulb' => 'Ulukwumi', + 'ulc' => 'Ulch', + 'ule' => 'Lule', + 'ulf' => 'Usku', + 'uli' => 'Ulithian', + 'ulk' => 'Meriam', + 'ull' => 'Ullatan', + 'ulm' => 'Ulumanda\'', + 'uln' => 'Unserdeutsch', + 'ulu' => 'Uma\' Lung', + 'ulw' => 'Ulwa', + 'uma' => 'Umatilla', + 'umb' => 'Umbundu', + 'umc' => 'Marrucinian', + 'umd' => 'Umbindhamu', + 'umg' => 'Umbuygamu', + 'umi' => 'Ukit', + 'umm' => 'Umon', + 'umn' => 'Makyan Naga', + 'umo' => 'Umotína', + 'ump' => 'Umpila', + 'umr' => 'Umbugarla', + 'ums' => 'Pendau', + 'umu' => 'Munsee', + 'una' => 'North Watut', + 'und' => 'Undetermined', + 'une' => 'Uneme', + 'ung' => 'Ngarinyin', + 'unk' => 'Enawené-Nawé', + 'unm' => 'Unami', + 'unn' => 'Kurnai', + 'unr' => 'Mundari', + 'unu' => 'Unubahe', + 'unx' => 'Munda', + 'unz' => 'Unde Kaili', + 'upi' => 'Umeda', + 'upv' => 'Uripiv-Wala-Rano-Atchin', + 'ura' => 'Urarina', + 'urb' => 'Urubú-Kaapor', + 'urc' => 'Urningangg', + 'ur' => 'Urdu', + 'urd' => 'Urdu', + 'ure' => 'Uru', + 'urf' => 'Uradhi', + 'urg' => 'Urigina', + 'urh' => 'Urhobo', + 'uri' => 'Urim', + 'urk' => 'Urak Lawoi\'', + 'url' => 'Urali', + 'urm' => 'Urapmin', + 'urn' => 'Uruangnirin', + 'uro' => 'Ura (Papua New Guinea)', + 'urp' => 'Uru-Pa-In', + 'urr' => 'Lehalurup', + 'urt' => 'Urat', + 'uru' => 'Urumi', + 'urv' => 'Uruava', + 'urw' => 'Sop', + 'urx' => 'Urimo', + 'ury' => 'Orya', + 'urz' => 'Uru-Eu-Wau-Wau', + 'usa' => 'Usarufa', + 'ush' => 'Ushojo', + 'usi' => 'Usui', + 'usk' => 'Usaghade', + 'usp' => 'Uspanteco', + 'usu' => 'Uya', + 'uta' => 'Otank', + 'ute' => 'Ute-Southern Paiute', + 'utp' => 'Amba (Solomon Islands)', + 'utr' => 'Etulo', + 'utu' => 'Utu', + 'uum' => 'Urum', + 'uun' => 'Kulon-Pazeh', + 'uur' => 'Ura (Vanuatu)', + 'uuu' => 'U', + 'uve' => 'West Uvean', + 'uvh' => 'Uri', + 'uvl' => 'Lote', + 'uwa' => 'Kuku-Uwanh', + 'uya' => 'Doko-Uyanga', + 'uz' => 'Uzbek', + 'uzb' => 'Uzbek', + 'uzn' => 'Northern Uzbek', + 'uzs' => 'Southern Uzbek', + 'vaa' => 'Vaagri Booli', + 'vae' => 'Vale', + 'vaf' => 'Vafsi', + 'vag' => 'Vagla', + 'vah' => 'Varhadi-Nagpuri', + 'vai' => 'Vai', + 'vaj' => 'Sekele', + 'val' => 'Vehes', + 'vam' => 'Vanimo', + 'van' => 'Valman', + 'vao' => 'Vao', + 'vap' => 'Vaiphei', + 'var' => 'Huarijio', + 'vas' => 'Vasavi', + 'vau' => 'Vanuma', + 'vav' => 'Varli', + 'vay' => 'Wayu', + 'vbb' => 'Southeast Babar', + 'vbk' => 'Southwestern Bontok', + 'vec' => 'Venetian', + 'ved' => 'Veddah', + 'vel' => 'Veluws', + 'vem' => 'Vemgo-Mabas', + 've' => 'Venda', + 'ven' => 'Venda', + 'veo' => 'Ventureño', + 'vep' => 'Veps', + 'ver' => 'Mom Jango', + 'vgr' => 'Vaghri', + 'vgt' => 'Vlaamse Gebarentaal', + 'vic' => 'Virgin Islands Creole English', + 'vid' => 'Vidunda', + 'vi' => 'Vietnamese', + 'vie' => 'Vietnamese', + 'vif' => 'Vili', + 'vig' => 'Viemo', + 'vil' => 'Vilela', + 'vin' => 'Vinza', + 'vis' => 'Vishavan', + 'vit' => 'Viti', + 'viv' => 'Iduna', + 'vka' => 'Kariyarra', + 'vki' => 'Ija-Zuba', + 'vkj' => 'Kujarge', + 'vkk' => 'Kaur', + 'vkl' => 'Kulisusu', + 'vkm' => 'Kamakan', + 'vko' => 'Kodeoha', + 'vkp' => 'Korlai Creole Portuguese', + 'vkt' => 'Tenggarong Kutai Malay', + 'vku' => 'Kurrama', + 'vlp' => 'Valpei', + 'vls' => 'Vlaams', + 'vma' => 'Martuyhunira', + 'vmb' => 'Barbaram', + 'vmc' => 'Juxtlahuaca Mixtec', + 'vmd' => 'Mudu Koraga', + 'vme' => 'East Masela', + 'vmf' => 'Mainfränkisch', + 'vmg' => 'Lungalunga', + 'vmh' => 'Maraghei', + 'vmi' => 'Miwa', + 'vmj' => 'Ixtayutla Mixtec', + 'vmk' => 'Makhuwa-Shirima', + 'vml' => 'Malgana', + 'vmm' => 'Mitlatongo Mixtec', + 'vmp' => 'Soyaltepec Mazatec', + 'vmq' => 'Soyaltepec Mixtec', + 'vmr' => 'Marenje', + 'vms' => 'Moksela', + 'vmu' => 'Muluridyi', + 'vmv' => 'Valley Maidu', + 'vmw' => 'Makhuwa', + 'vmx' => 'Tamazola Mixtec', + 'vmy' => 'Ayautla Mazatec', + 'vmz' => 'Mazatlán Mazatec', + 'vnk' => 'Vano', + 'vnm' => 'Vinmavis', + 'vnp' => 'Vunapu', + 'vo' => 'Volapük', + 'vol' => 'Volapük', + 'vor' => 'Voro', + 'vot' => 'Votic', + 'vra' => 'Vera\'a', + 'vro' => 'Võro', + 'vrs' => 'Varisi', + 'vrt' => 'Burmbar', + 'vsi' => 'Moldova Sign Language', + 'vsl' => 'Venezuelan Sign Language', + 'vsv' => 'Valencian Sign Language', + 'vto' => 'Vitou', + 'vum' => 'Vumbu', + 'vun' => 'Vunjo', + 'vut' => 'Vute', + 'vwa' => 'Awa (China)', + 'waa' => 'Walla Walla', + 'wab' => 'Wab', + 'wac' => 'Wasco-Wishram', + 'wad' => 'Wandamen', + 'wae' => 'Walser', + 'waf' => 'Wakoná', + 'wag' => 'Wa\'ema', + 'wah' => 'Watubela', + 'wai' => 'Wares', + 'waj' => 'Waffa', + 'wal' => 'Wolaytta', + 'wam' => 'Wampanoag', + 'wan' => 'Wan', + 'wao' => 'Wappo', + 'wap' => 'Wapishana', + 'waq' => 'Wageman', + 'war' => 'Waray (Philippines)', + 'was' => 'Washo', + 'wat' => 'Kaninuwa', + 'wau' => 'Waurá', + 'wav' => 'Waka', + 'waw' => 'Waiwai', + 'wax' => 'Watam', + 'way' => 'Wayana', + 'waz' => 'Wampur', + 'wba' => 'Warao', + 'wbb' => 'Wabo', + 'wbe' => 'Waritai', + 'wbf' => 'Wara', + 'wbh' => 'Wanda', + 'wbi' => 'Vwanji', + 'wbj' => 'Alagwa', + 'wbk' => 'Waigali', + 'wbl' => 'Wakhi', + 'wbm' => 'Wa', + 'wbp' => 'Warlpiri', + 'wbq' => 'Waddar', + 'wbr' => 'Wagdi', + 'wbs' => 'West Bengal Sign Language', + 'wbt' => 'Wanman', + 'wbv' => 'Wajarri', + 'wbw' => 'Woi', + 'wca' => 'Yanomámi', + 'wci' => 'Waci Gbe', + 'wdd' => 'Wandji', + 'wdg' => 'Wadaginam', + 'wdj' => 'Wadjiginy', + 'wdk' => 'Wadikali', + 'wdu' => 'Wadjigu', + 'wdy' => 'Wadjabangayi', + 'wea' => 'Wewaw', + 'wec' => 'Wè Western', + 'wed' => 'Wedau', + 'weg' => 'Wergaia', + 'weh' => 'Weh', + 'wei' => 'Kiunum', + 'wem' => 'Weme Gbe', + 'weo' => 'Wemale', + 'wep' => 'Westphalien', + 'wer' => 'Weri', + 'wes' => 'Cameroon Pidgin', + 'wet' => 'Perai', + 'weu' => 'Rawngtu Chin', + 'wew' => 'Wejewa', + 'wfg' => 'Yafi', + 'wga' => 'Wagaya', + 'wgb' => 'Wagawaga', + 'wgg' => 'Wangganguru', + 'wgi' => 'Wahgi', + 'wgo' => 'Waigeo', + 'wgu' => 'Wirangu', + 'wgy' => 'Warrgamay', + 'wha' => 'Sou Upaa', + 'whg' => 'North Wahgi', + 'whk' => 'Wahau Kenyah', + 'whu' => 'Wahau Kayan', + 'wib' => 'Southern Toussian', + 'wic' => 'Wichita', + 'wie' => 'Wik-Epa', + 'wif' => 'Wik-Keyangan', + 'wig' => 'Wik-Ngathana', + 'wih' => 'Wik-Me\'anha', + 'wii' => 'Minidien', + 'wij' => 'Wik-Iiyanh', + 'wik' => 'Wikalkan', + 'wil' => 'Wilawila', + 'wim' => 'Wik-Mungkan', + 'win' => 'Ho-Chunk', + 'wir' => 'Wiraféd', + 'wiu' => 'Wiru', + 'wiv' => 'Vitu', + 'wiy' => 'Wiyot', + 'wja' => 'Waja', + 'wji' => 'Warji', + 'wka' => 'Kw\'adza', + 'wkb' => 'Kumbaran', + 'wkd' => 'Wakde', + 'wkl' => 'Kalanadi', + 'wku' => 'Kunduvadi', + 'wkw' => 'Wakawaka', + 'wky' => 'Wangkayutyuru', + 'wla' => 'Walio', + 'wlc' => 'Mwali Comorian', + 'wle' => 'Wolane', + 'wlg' => 'Kunbarlang', + 'wli' => 'Waioli', + 'wlk' => 'Wailaki', + 'wll' => 'Wali (Sudan)', + 'wlm' => 'Middle Welsh', + 'wa' => 'Walloon', + 'wln' => 'Walloon', + 'wlo' => 'Wolio', + 'wlr' => 'Wailapa', + 'wls' => 'Wallisian', + 'wlu' => 'Wuliwuli', + 'wlv' => 'Wichí Lhamtés Vejoz', + 'wlw' => 'Walak', + 'wlx' => 'Wali (Ghana)', + 'wly' => 'Waling', + 'wma' => 'Mawa (Nigeria)', + 'wmb' => 'Wambaya', + 'wmc' => 'Wamas', + 'wmd' => 'Mamaindé', + 'wme' => 'Wambule', + 'wmh' => 'Waima\'a', + 'wmi' => 'Wamin', + 'wmm' => 'Maiwa (Indonesia)', + 'wmn' => 'Waamwang', + 'wmo' => 'Wom (Papua New Guinea)', + 'wms' => 'Wambon', + 'wmt' => 'Walmajarri', + 'wmw' => 'Mwani', + 'wmx' => 'Womo', + 'wnb' => 'Wanambre', + 'wnc' => 'Wantoat', + 'wnd' => 'Wandarang', + 'wne' => 'Waneci', + 'wng' => 'Wanggom', + 'wni' => 'Ndzwani Comorian', + 'wnk' => 'Wanukaka', + 'wnm' => 'Wanggamala', + 'wnn' => 'Wunumara', + 'wno' => 'Wano', + 'wnp' => 'Wanap', + 'wnu' => 'Usan', + 'wnw' => 'Wintu', + 'wny' => 'Wanyi', + 'woa' => 'Tyaraity', + 'wob' => 'Wè Northern', + 'woc' => 'Wogeo', + 'wod' => 'Wolani', + 'woe' => 'Woleaian', + 'wof' => 'Gambian Wolof', + 'wog' => 'Wogamusin', + 'woi' => 'Kamang', + 'wok' => 'Longto', + 'wo' => 'Wolof', + 'wol' => 'Wolof', + 'wom' => 'Wom (Nigeria)', + 'won' => 'Wongo', + 'woo' => 'Manombai', + 'wor' => 'Woria', + 'wos' => 'Hanga Hundi', + 'wow' => 'Wawonii', + 'woy' => 'Weyto', + 'wpc' => 'Maco', + 'wra' => 'Warapu', + 'wrb' => 'Warluwara', + 'wrd' => 'Warduji', + 'wrg' => 'Warungu', + 'wrh' => 'Wiradhuri', + 'wri' => 'Wariyangga', + 'wrk' => 'Garrwa', + 'wrl' => 'Warlmanpa', + 'wrm' => 'Warumungu', + 'wrn' => 'Warnang', + 'wro' => 'Worrorra', + 'wrp' => 'Waropen', + 'wrr' => 'Wardaman', + 'wrs' => 'Waris', + 'wru' => 'Waru', + 'wrv' => 'Waruna', + 'wrw' => 'Gugu Warra', + 'wrx' => 'Wae Rana', + 'wry' => 'Merwari', + 'wrz' => 'Waray (Australia)', + 'wsa' => 'Warembori', + 'wsg' => 'Adilabad Gondi', + 'wsi' => 'Wusi', + 'wsk' => 'Waskia', + 'wsr' => 'Owenia', + 'wss' => 'Wasa', + 'wsu' => 'Wasu', + 'wsv' => 'Wotapuri-Katarqalai', + 'wtf' => 'Watiwa', + 'wth' => 'Wathawurrung', + 'wti' => 'Berta', + 'wtk' => 'Watakataui', + 'wtm' => 'Mewati', + 'wtw' => 'Wotu', + 'wua' => 'Wikngenchera', + 'wub' => 'Wunambal', + 'wud' => 'Wudu', + 'wuh' => 'Wutunhua', + 'wul' => 'Silimo', + 'wum' => 'Wumbvu', + 'wun' => 'Bungu', + 'wur' => 'Wurrugu', + 'wut' => 'Wutung', + 'wuu' => 'Wu Chinese', + 'wuv' => 'Wuvulu-Aua', + 'wux' => 'Wulna', + 'wuy' => 'Wauyai', + 'wwa' => 'Waama', + 'wwb' => 'Wakabunga', + 'wwo' => 'Wetamut', + 'wwr' => 'Warrwa', + 'www' => 'Wawa', + 'wxa' => 'Waxianghua', + 'wxw' => 'Wardandi', + 'wya' => 'Wyandot', + 'wyb' => 'Wangaaybuwan-Ngiyambaa', + 'wyi' => 'Woiwurrung', + 'wym' => 'Wymysorys', + 'wyr' => 'Wayoró', + 'wyy' => 'Western Fijian', + 'xaa' => 'Andalusian Arabic', + 'xab' => 'Sambe', + 'xac' => 'Kachari', + 'xad' => 'Adai', + 'xae' => 'Aequian', + 'xag' => 'Aghwan', + 'xai' => 'Kaimbé', + 'xaj' => 'Ararandewára', + 'xak' => 'Máku', + 'xal' => 'Kalmyk', + 'xam' => 'ǀXam', + 'xan' => 'Xamtanga', + 'xao' => 'Khao', + 'xap' => 'Apalachee', + 'xaq' => 'Aquitanian', + 'xar' => 'Karami', + 'xas' => 'Kamas', + 'xat' => 'Katawixi', + 'xau' => 'Kauwera', + 'xav' => 'Xavánte', + 'xaw' => 'Kawaiisu', + 'xay' => 'Kayan Mahakam', + 'xbb' => 'Lower Burdekin', + 'xbc' => 'Bactrian', + 'xbd' => 'Bindal', + 'xbe' => 'Bigambal', + 'xbg' => 'Bunganditj', + 'xbi' => 'Kombio', + 'xbj' => 'Birrpayi', + 'xbm' => 'Middle Breton', + 'xbn' => 'Kenaboi', + 'xbo' => 'Bolgarian', + 'xbp' => 'Bibbulman', + 'xbr' => 'Kambera', + 'xbw' => 'Kambiwá', + 'xby' => 'Batyala', + 'xcb' => 'Cumbric', + 'xcc' => 'Camunic', + 'xce' => 'Celtiberian', + 'xcg' => 'Cisalpine Gaulish', + 'xch' => 'Chemakum', + 'xcl' => 'Classical Armenian', + 'xcm' => 'Comecrudo', + 'xcn' => 'Cotoname', + 'xco' => 'Chorasmian', + 'xcr' => 'Carian', + 'xct' => 'Classical Tibetan', + 'xcu' => 'Curonian', + 'xcv' => 'Chuvantsy', + 'xcw' => 'Coahuilteco', + 'xcy' => 'Cayuse', + 'xda' => 'Darkinyung', + 'xdc' => 'Dacian', + 'xdk' => 'Dharuk', + 'xdm' => 'Edomite', + 'xdo' => 'Kwandu', + 'xdy' => 'Malayic Dayak', + 'xeb' => 'Eblan', + 'xed' => 'Hdi', + 'xeg' => 'ǁXegwi', + 'xel' => 'Kelo', + 'xem' => 'Kembayan', + 'xep' => 'Epi-Olmec', + 'xer' => 'Xerénte', + 'xes' => 'Kesawai', + 'xet' => 'Xetá', + 'xeu' => 'Keoru-Ahia', + 'xfa' => 'Faliscan', + 'xga' => 'Galatian', + 'xgb' => 'Gbin', + 'xgd' => 'Gudang', + 'xgf' => 'Gabrielino-Fernandeño', + 'xgg' => 'Goreng', + 'xgi' => 'Garingbal', + 'xgl' => 'Galindan', + 'xgm' => 'Dharumbal', + 'xgr' => 'Garza', + 'xgu' => 'Unggumi', + 'xgw' => 'Guwa', + 'xha' => 'Harami', + 'xhc' => 'Hunnic', + 'xhd' => 'Hadrami', + 'xhe' => 'Khetrani', + 'xh' => 'Xhosa', + 'xho' => 'Xhosa', + 'xhr' => 'Hernican', + 'xht' => 'Hattic', + 'xhu' => 'Hurrian', + 'xhv' => 'Khua', + 'xib' => 'Iberian', + 'xii' => 'Xiri', + 'xil' => 'Illyrian', + 'xin' => 'Xinca', + 'xir' => 'Xiriâna', + 'xis' => 'Kisan', + 'xiv' => 'Indus Valley Language', + 'xiy' => 'Xipaya', + 'xjb' => 'Minjungbal', + 'xjt' => 'Jaitmatang', + 'xka' => 'Kalkoti', + 'xkb' => 'Northern Nago', + 'xkc' => 'Kho\'ini', + 'xkd' => 'Mendalam Kayan', + 'xke' => 'Kereho', + 'xkf' => 'Khengkha', + 'xkg' => 'Kagoro', + 'xki' => 'Kenyan Sign Language', + 'xkj' => 'Kajali', + 'xkk' => 'Kaco\'', + 'xkl' => 'Mainstream Kenyah', + 'xkn' => 'Kayan River Kayan', + 'xko' => 'Kiorr', + 'xkp' => 'Kabatei', + 'xkq' => 'Koroni', + 'xkr' => 'Xakriabá', + 'xks' => 'Kumbewaha', + 'xkt' => 'Kantosi', + 'xku' => 'Kaamba', + 'xkv' => 'Kgalagadi', + 'xkw' => 'Kembra', + 'xkx' => 'Karore', + 'xky' => 'Uma\' Lasan', + 'xkz' => 'Kurtokha', + 'xla' => 'Kamula', + 'xlb' => 'Loup B', + 'xlc' => 'Lycian', + 'xld' => 'Lydian', + 'xle' => 'Lemnian', + 'xlg' => 'Ligurian (Ancient)', + 'xli' => 'Liburnian', + 'xln' => 'Alanic', + 'xlo' => 'Loup A', + 'xlp' => 'Lepontic', + 'xls' => 'Lusitanian', + 'xlu' => 'Cuneiform Luwian', + 'xly' => 'Elymian', + 'xma' => 'Mushungulu', + 'xmb' => 'Mbonga', + 'xmc' => 'Makhuwa-Marrevone', + 'xmd' => 'Mbudum', + 'xme' => 'Median', + 'xmf' => 'Mingrelian', + 'xmg' => 'Mengaka', + 'xmh' => 'Kuku-Muminh', + 'xmj' => 'Majera', + 'xmk' => 'Ancient Macedonian', + 'xml' => 'Malaysian Sign Language', + 'xmm' => 'Manado Malay', + 'xmn' => 'Manichaean Middle Persian', + 'xmo' => 'Morerebi', + 'xmp' => 'Kuku-Mu\'inh', + 'xmq' => 'Kuku-Mangk', + 'xmr' => 'Meroitic', + 'xms' => 'Moroccan Sign Language', + 'xmt' => 'Matbat', + 'xmu' => 'Kamu', + 'xmv' => 'Antankarana Malagasy', + 'xmw' => 'Tsimihety Malagasy', + 'xmx' => 'Maden', + 'xmy' => 'Mayaguduna', + 'xmz' => 'Mori Bawah', + 'xna' => 'Ancient North Arabian', + 'xnb' => 'Kanakanabu', + 'xng' => 'Middle Mongolian', + 'xnh' => 'Kuanhua', + 'xni' => 'Ngarigu', + 'xnk' => 'Nganakarti', + 'xnn' => 'Northern Kankanay', + 'xno' => 'Anglo-Norman', + 'xnr' => 'Kangri', + 'xns' => 'Kanashi', + 'xnt' => 'Narragansett', + 'xnu' => 'Nukunul', + 'xny' => 'Nyiyaparli', + 'xnz' => 'Kenzi', + 'xoc' => 'O\'chi\'chi\'', + 'xod' => 'Kokoda', + 'xog' => 'Soga', + 'xoi' => 'Kominimung', + 'xok' => 'Xokleng', + 'xom' => 'Komo (Sudan)', + 'xon' => 'Konkomba', + 'xoo' => 'Xukurú', + 'xop' => 'Kopar', + 'xor' => 'Korubo', + 'xow' => 'Kowaki', + 'xpa' => 'Pirriya', + 'xpc' => 'Pecheneg', + 'xpe' => 'Liberia Kpelle', + 'xpg' => 'Phrygian', + 'xpi' => 'Pictish', + 'xpj' => 'Mpalitjanh', + 'xpk' => 'Kulina Pano', + 'xpm' => 'Pumpokol', + 'xpn' => 'Kapinawá', + 'xpo' => 'Pochutec', + 'xpp' => 'Puyo-Paekche', + 'xpq' => 'Mohegan-Pequot', + 'xpr' => 'Parthian', + 'xps' => 'Pisidian', + 'xpt' => 'Punthamara', + 'xpu' => 'Punic', + 'xpy' => 'Puyo', + 'xqa' => 'Karakhanid', + 'xqt' => 'Qatabanian', + 'xra' => 'Krahô', + 'xrb' => 'Eastern Karaboro', + 'xrd' => 'Gundungurra', + 'xre' => 'Kreye', + 'xrg' => 'Minang', + 'xri' => 'Krikati-Timbira', + 'xrm' => 'Armazic', + 'xrn' => 'Arin', + 'xrq' => 'Karranga', + 'xrr' => 'Raetic', + 'xrt' => 'Aranama-Tamique', + 'xru' => 'Marriammu', + 'xrw' => 'Karawa', + 'xsa' => 'Sabaean', + 'xsb' => 'Sambal', + 'xsc' => 'Scythian', + 'xsd' => 'Sidetic', + 'xse' => 'Sempan', + 'xsh' => 'Shamang', + 'xsi' => 'Sio', + 'xsl' => 'South Slavey', + 'xsm' => 'Kasem', + 'xsn' => 'Sanga (Nigeria)', + 'xso' => 'Solano', + 'xsp' => 'Silopi', + 'xsq' => 'Makhuwa-Saka', + 'xsr' => 'Sherpa', + 'xss' => 'Assan', + 'xsu' => 'Sanumá', + 'xsv' => 'Sudovian', + 'xsy' => 'Saisiyat', + 'xta' => 'Alcozauca Mixtec', + 'xtb' => 'Chazumba Mixtec', + 'xtc' => 'Katcha-Kadugli-Miri', + 'xtd' => 'Diuxi-Tilantongo Mixtec', + 'xte' => 'Ketengban', + 'xtg' => 'Transalpine Gaulish', + 'xth' => 'Yitha Yitha', + 'xti' => 'Sinicahua Mixtec', + 'xtj' => 'San Juan Teita Mixtec', + 'xtl' => 'Tijaltepec Mixtec', + 'xtm' => 'Magdalena Peñasco Mixtec', + 'xtn' => 'Northern Tlaxiaco Mixtec', + 'xto' => 'Tokharian A', + 'xtp' => 'San Miguel Piedras Mixtec', + 'xtq' => 'Tumshuqese', + 'xtr' => 'Early Tripuri', + 'xts' => 'Sindihui Mixtec', + 'xtt' => 'Tacahua Mixtec', + 'xtu' => 'Cuyamecalco Mixtec', + 'xtv' => 'Thawa', + 'xtw' => 'Tawandê', + 'xty' => 'Yoloxochitl Mixtec', + 'xtz' => 'Tasmanian', + 'xua' => 'Alu Kurumba', + 'xub' => 'Betta Kurumba', + 'xud' => 'Umiida', + 'xug' => 'Kunigami', + 'xuj' => 'Jennu Kurumba', + 'xul' => 'Ngunawal', + 'xum' => 'Umbrian', + 'xun' => 'Unggaranggu', + 'xuo' => 'Kuo', + 'xup' => 'Upper Umpqua', + 'xur' => 'Urartian', + 'xut' => 'Kuthant', + 'xuu' => 'Kxoe', + 'xve' => 'Venetic', + 'xvi' => 'Kamviri', + 'xvn' => 'Vandalic', + 'xvo' => 'Volscian', + 'xvs' => 'Vestinian', + 'xwa' => 'Kwaza', + 'xwc' => 'Woccon', + 'xwd' => 'Wadi Wadi', + 'xwe' => 'Xwela Gbe', + 'xwg' => 'Kwegu', + 'xwj' => 'Wajuk', + 'xwk' => 'Wangkumara', + 'xwl' => 'Western Xwla Gbe', + 'xwo' => 'Written Oirat', + 'xwr' => 'Kwerba Mamberamo', + 'xwt' => 'Wotjobaluk', + 'xww' => 'Wemba Wemba', + 'xxb' => 'Boro (Ghana)', + 'xxk' => 'Ke\'o', + 'xxm' => 'Minkin', + 'xxr' => 'Koropó', + 'xxt' => 'Tambora', + 'xya' => 'Yaygir', + 'xyb' => 'Yandjibara', + 'xyj' => 'Mayi-Yapi', + 'xyk' => 'Mayi-Kulan', + 'xyl' => 'Yalakalore', + 'xyt' => 'Mayi-Thakurti', + 'xyy' => 'Yorta Yorta', + 'xzh' => 'Zhang-Zhung', + 'xzm' => 'Zemgalian', + 'xzp' => 'Ancient Zapotec', + 'yaa' => 'Yaminahua', + 'yab' => 'Yuhup', + 'yac' => 'Pass Valley Yali', + 'yad' => 'Yagua', + 'yae' => 'Pumé', + 'yaf' => 'Yaka (Democratic Republic of Congo)', + 'yag' => 'Yámana', + 'yah' => 'Yazgulyam', + 'yai' => 'Yagnobi', + 'yaj' => 'Banda-Yangere', + 'yak' => 'Yakama', + 'yal' => 'Yalunka', + 'yam' => 'Yamba', + 'yan' => 'Mayangna', + 'yao' => 'Yao', + 'yap' => 'Yapese', + 'yaq' => 'Yaqui', + 'yar' => 'Yabarana', + 'yas' => 'Nugunu (Cameroon)', + 'yat' => 'Yambeta', + 'yau' => 'Yuwana', + 'yav' => 'Yangben', + 'yaw' => 'Yawalapití', + 'yax' => 'Yauma', + 'yay' => 'Agwagwune', + 'yaz' => 'Lokaa', + 'yba' => 'Yala', + 'ybb' => 'Yemba', + 'ybe' => 'West Yugur', + 'ybh' => 'Yakha', + 'ybi' => 'Yamphu', + 'ybj' => 'Hasha', + 'ybk' => 'Bokha', + 'ybl' => 'Yukuben', + 'ybm' => 'Yaben', + 'ybn' => 'Yabaâna', + 'ybo' => 'Yabong', + 'ybx' => 'Yawiyo', + 'yby' => 'Yaweyuha', + 'ych' => 'Chesu', + 'ycl' => 'Lolopo', + 'ycn' => 'Yucuna', + 'ycp' => 'Chepya', + 'yda' => 'Yanda', + 'ydd' => 'Eastern Yiddish', + 'yde' => 'Yangum Dey', + 'ydg' => 'Yidgha', + 'ydk' => 'Yoidik', + 'yea' => 'Ravula', + 'yec' => 'Yeniche', + 'yee' => 'Yimas', + 'yei' => 'Yeni', + 'yej' => 'Yevanic', + 'yel' => 'Yela', + 'yer' => 'Tarok', + 'yes' => 'Nyankpa', + 'yet' => 'Yetfa', + 'yeu' => 'Yerukula', + 'yev' => 'Yapunda', + 'yey' => 'Yeyi', + 'yga' => 'Malyangapa', + 'ygi' => 'Yiningayi', + 'ygl' => 'Yangum Gel', + 'ygm' => 'Yagomi', + 'ygp' => 'Gepo', + 'ygr' => 'Yagaria', + 'ygs' => 'Yolŋu Sign Language', + 'ygu' => 'Yugul', + 'ygw' => 'Yagwoia', + 'yha' => 'Baha Buyang', + 'yhd' => 'Judeo-Iraqi Arabic', + 'yhl' => 'Hlepho Phowa', + 'yhs' => 'Yan-nhaŋu Sign Language', + 'yia' => 'Yinggarda', + 'yi' => 'Yiddish', + 'yid' => 'Yiddish', + 'yif' => 'Ache', + 'yig' => 'Wusa Nasu', + 'yih' => 'Western Yiddish', + 'yii' => 'Yidiny', + 'yij' => 'Yindjibarndi', + 'yik' => 'Dongshanba Lalo', + 'yil' => 'Yindjilandji', + 'yim' => 'Yimchungru Naga', + 'yin' => 'Yinchia', + 'yip' => 'Pholo', + 'yiq' => 'Miqie', + 'yir' => 'North Awyu', + 'yis' => 'Yis', + 'yit' => 'Eastern Lalu', + 'yiu' => 'Awu', + 'yiv' => 'Northern Nisu', + 'yix' => 'Axi Yi', + 'yiz' => 'Azhe', + 'yka' => 'Yakan', + 'ykg' => 'Northern Yukaghir', + 'yki' => 'Yoke', + 'ykk' => 'Yakaikeke', + 'ykl' => 'Khlula', + 'ykm' => 'Kap', + 'ykn' => 'Kua-nsi', + 'yko' => 'Yasa', + 'ykr' => 'Yekora', + 'ykt' => 'Kathu', + 'yku' => 'Kuamasi', + 'yky' => 'Yakoma', + 'yla' => 'Yaul', + 'ylb' => 'Yaleba', + 'yle' => 'Yele', + 'ylg' => 'Yelogu', + 'yli' => 'Angguruk Yali', + 'yll' => 'Yil', + 'ylm' => 'Limi', + 'yln' => 'Langnian Buyang', + 'ylo' => 'Naluo Yi', + 'ylr' => 'Yalarnnga', + 'ylu' => 'Aribwaung', + 'yly' => 'Nyâlayu', + 'ymb' => 'Yambes', + 'ymc' => 'Southern Muji', + 'ymd' => 'Muda', + 'yme' => 'Yameo', + 'ymg' => 'Yamongeri', + 'ymh' => 'Mili', + 'ymi' => 'Moji', + 'ymk' => 'Makwe', + 'yml' => 'Iamalele', + 'ymm' => 'Maay', + 'ymn' => 'Yamna', + 'ymo' => 'Yangum Mon', + 'ymp' => 'Yamap', + 'ymq' => 'Qila Muji', + 'ymr' => 'Malasar', + 'yms' => 'Mysian', + 'ymx' => 'Northern Muji', + 'ymz' => 'Muzi', + 'yna' => 'Aluo', + 'ynd' => 'Yandruwandha', + 'yne' => 'Lang\'e', + 'yng' => 'Yango', + 'ynk' => 'Naukan Yupik', + 'ynl' => 'Yangulam', + 'ynn' => 'Yana', + 'yno' => 'Yong', + 'ynq' => 'Yendang', + 'yns' => 'Yansi', + 'ynu' => 'Yahuna', + 'yob' => 'Yoba', + 'yog' => 'Yogad', + 'yoi' => 'Yonaguni', + 'yok' => 'Yokuts', + 'yol' => 'Yola', + 'yom' => 'Yombe', + 'yon' => 'Yongkom', + 'yo' => 'Yoruba', + 'yor' => 'Yoruba', + 'yot' => 'Yotti', + 'yox' => 'Yoron', + 'yoy' => 'Yoy', + 'ypa' => 'Phala', + 'ypb' => 'Labo Phowa', + 'ypg' => 'Phola', + 'yph' => 'Phupha', + 'ypm' => 'Phuma', + 'ypn' => 'Ani Phowa', + 'ypo' => 'Alo Phola', + 'ypp' => 'Phupa', + 'ypz' => 'Phuza', + 'yra' => 'Yerakai', + 'yrb' => 'Yareba', + 'yre' => 'Yaouré', + 'yrk' => 'Nenets', + 'yrl' => 'Nhengatu', + 'yrm' => 'Yirrk-Mel', + 'yrn' => 'Yerong', + 'yro' => 'Yaroamë', + 'yrs' => 'Yarsun', + 'yrw' => 'Yarawata', + 'yry' => 'Yarluyandi', + 'ysc' => 'Yassic', + 'ysd' => 'Samatao', + 'ysg' => 'Sonaga', + 'ysl' => 'Yugoslavian Sign Language', + 'ysn' => 'Sani', + 'yso' => 'Nisi (China)', + 'ysp' => 'Southern Lolopo', + 'ysr' => 'Sirenik Yupik', + 'yss' => 'Yessan-Mayo', + 'ysy' => 'Sanie', + 'yta' => 'Talu', + 'ytl' => 'Tanglang', + 'ytp' => 'Thopho', + 'ytw' => 'Yout Wam', + 'yty' => 'Yatay', + 'yua' => 'Yucateco', + 'yub' => 'Yugambal', + 'yuc' => 'Yuchi', + 'yud' => 'Judeo-Tripolitanian Arabic', + 'yue' => 'Yue Chinese', + 'yuf' => 'Havasupai-Walapai-Yavapai', + 'yug' => 'Yug', + 'yui' => 'Yurutí', + 'yuj' => 'Karkar-Yuri', + 'yuk' => 'Yuki', + 'yul' => 'Yulu', + 'yum' => 'Quechan', + 'yun' => 'Bena (Nigeria)', + 'yup' => 'Yukpa', + 'yuq' => 'Yuqui', + 'yur' => 'Yurok', + 'yut' => 'Yopno', + 'yuw' => 'Yau (Morobe Province)', + 'yux' => 'Southern Yukaghir', + 'yuy' => 'East Yugur', + 'yuz' => 'Yuracare', + 'yva' => 'Yawa', + 'yvt' => 'Yavitero', + 'ywa' => 'Kalou', + 'ywg' => 'Yinhawangka', + 'ywl' => 'Western Lalu', + 'ywn' => 'Yawanawa', + 'ywq' => 'Wuding-Luquan Yi', + 'ywr' => 'Yawuru', + 'ywt' => 'Xishanba Lalo', + 'ywu' => 'Wumeng Nasu', + 'yww' => 'Yawarawarga', + 'yxa' => 'Mayawali', + 'yxg' => 'Yagara', + 'yxl' => 'Yardliyawarra', + 'yxm' => 'Yinwum', + 'yxu' => 'Yuyu', + 'yxy' => 'Yabula Yabula', + 'yyr' => 'Yir Yoront', + 'yyu' => 'Yau (Sandaun Province)', + 'yyz' => 'Ayizi', + 'yzg' => 'E\'ma Buyang', + 'yzk' => 'Zokhuo', + 'zaa' => 'Sierra de Juárez Zapotec', + 'zab' => 'Western Tlacolula Valley Zapotec', + 'zac' => 'Ocotlán Zapotec', + 'zad' => 'Cajonos Zapotec', + 'zae' => 'Yareni Zapotec', + 'zaf' => 'Ayoquesco Zapotec', + 'zag' => 'Zaghawa', + 'zah' => 'Zangwal', + 'zai' => 'Isthmus Zapotec', + 'zaj' => 'Zaramo', + 'zak' => 'Zanaki', + 'zal' => 'Zauzou', + 'zam' => 'Miahuatlán Zapotec', + 'zao' => 'Ozolotepec Zapotec', + 'zap' => 'Zapotec', + 'zaq' => 'Aloápam Zapotec', + 'zar' => 'Rincón Zapotec', + 'zas' => 'Santo Domingo Albarradas Zapotec', + 'zat' => 'Tabaa Zapotec', + 'zau' => 'Zangskari', + 'zav' => 'Yatzachi Zapotec', + 'zaw' => 'Mitla Zapotec', + 'zax' => 'Xadani Zapotec', + 'zay' => 'Zayse-Zergulla', + 'zaz' => 'Zari', + 'zbc' => 'Central Berawan', + 'zbe' => 'East Berawan', + 'zbl' => 'Blissymbols', + 'zbt' => 'Batui', + 'zbw' => 'West Berawan', + 'zca' => 'Coatecas Altas Zapotec', + 'zch' => 'Central Hongshuihe Zhuang', + 'zdj' => 'Ngazidja Comorian', + 'zea' => 'Zeeuws', + 'zeg' => 'Zenag', + 'zeh' => 'Eastern Hongshuihe Zhuang', + 'zen' => 'Zenaga', + 'zga' => 'Kinga', + 'zgb' => 'Guibei Zhuang', + 'zgh' => 'Standard Moroccan Tamazight', + 'zgm' => 'Minz Zhuang', + 'zgn' => 'Guibian Zhuang', + 'zgr' => 'Magori', + 'za' => 'Zhuang', + 'zha' => 'Zhuang', + 'zhb' => 'Zhaba', + 'zhd' => 'Dai Zhuang', + 'zhi' => 'Zhire', + 'zhn' => 'Nong Zhuang', + 'zh' => 'Chinese', + 'zho' => 'Chinese', + 'zhw' => 'Zhoa', + 'zia' => 'Zia', + 'zib' => 'Zimbabwe Sign Language', + 'zik' => 'Zimakani', + 'zil' => 'Zialo', + 'zim' => 'Mesme', + 'zin' => 'Zinza', + 'zir' => 'Ziriya', + 'ziw' => 'Zigula', + 'ziz' => 'Zizilivakan', + 'zka' => 'Kaimbulawa', + 'zkb' => 'Koibal', + 'zkd' => 'Kadu', + 'zkg' => 'Koguryo', + 'zkh' => 'Khorezmian', + 'zkk' => 'Karankawa', + 'zkn' => 'Kanan', + 'zko' => 'Kott', + 'zkp' => 'São Paulo Kaingáng', + 'zkr' => 'Zakhring', + 'zkt' => 'Kitan', + 'zku' => 'Kaurna', + 'zkv' => 'Krevinian', + 'zkz' => 'Khazar', + 'zlj' => 'Liujiang Zhuang', + 'zlm' => 'Malay (individual language)', + 'zln' => 'Lianshan Zhuang', + 'zlq' => 'Liuqian Zhuang', + 'zma' => 'Manda (Australia)', + 'zmb' => 'Zimba', + 'zmc' => 'Margany', + 'zmd' => 'Maridan', + 'zme' => 'Mangerr', + 'zmf' => 'Mfinu', + 'zmg' => 'Marti Ke', + 'zmh' => 'Makolkol', + 'zmi' => 'Negeri Sembilan Malay', + 'zmj' => 'Maridjabin', + 'zmk' => 'Mandandanyi', + 'zml' => 'Madngele', + 'zmm' => 'Marimanindji', + 'zmn' => 'Mbangwe', + 'zmo' => 'Molo', + 'zmp' => 'Mpuono', + 'zmq' => 'Mituku', + 'zmr' => 'Maranunggu', + 'zms' => 'Mbesa', + 'zmt' => 'Maringarr', + 'zmu' => 'Muruwari', + 'zmv' => 'Mbariman-Gudhinma', + 'zmw' => 'Mbo (Democratic Republic of Congo)', + 'zmx' => 'Bomitaba', + 'zmy' => 'Mariyedi', + 'zmz' => 'Mbandja', + 'zna' => 'Zan Gula', + 'zne' => 'Zande (individual language)', + 'zng' => 'Mang', + 'znk' => 'Manangkari', + 'zns' => 'Mangas', + 'zoc' => 'Copainalá Zoque', + 'zoh' => 'Chimalapa Zoque', + 'zom' => 'Zou', + 'zoo' => 'Asunción Mixtepec Zapotec', + 'zoq' => 'Tabasco Zoque', + 'zor' => 'Rayón Zoque', + 'zos' => 'Francisco León Zoque', + 'zpa' => 'Lachiguiri Zapotec', + 'zpb' => 'Yautepec Zapotec', + 'zpc' => 'Choapan Zapotec', + 'zpd' => 'Southeastern Ixtlán Zapotec', + 'zpe' => 'Petapa Zapotec', + 'zpf' => 'San Pedro Quiatoni Zapotec', + 'zpg' => 'Guevea De Humboldt Zapotec', + 'zph' => 'Totomachapan Zapotec', + 'zpi' => 'Santa María Quiegolani Zapotec', + 'zpj' => 'Quiavicuzas Zapotec', + 'zpk' => 'Tlacolulita Zapotec', + 'zpl' => 'Lachixío Zapotec', + 'zpm' => 'Mixtepec Zapotec', + 'zpn' => 'Santa Inés Yatzechi Zapotec', + 'zpo' => 'Amatlán Zapotec', + 'zpp' => 'El Alto Zapotec', + 'zpq' => 'Zoogocho Zapotec', + 'zpr' => 'Santiago Xanica Zapotec', + 'zps' => 'Coatlán Zapotec', + 'zpt' => 'San Vicente Coatlán Zapotec', + 'zpu' => 'Yalálag Zapotec', + 'zpv' => 'Chichicapan Zapotec', + 'zpw' => 'Zaniza Zapotec', + 'zpx' => 'San Baltazar Loxicha Zapotec', + 'zpy' => 'Mazaltepec Zapotec', + 'zpz' => 'Texmelucan Zapotec', + 'zqe' => 'Qiubei Zhuang', + 'zra' => 'Kara (Korea)', + 'zrg' => 'Mirgan', + 'zrn' => 'Zerenkel', + 'zro' => 'Záparo', + 'zrp' => 'Zarphatic', + 'zrs' => 'Mairasi', + 'zsa' => 'Sarasira', + 'zsk' => 'Kaskean', + 'zsl' => 'Zambian Sign Language', + 'zsm' => 'Standard Malay', + 'zsr' => 'Southern Rincon Zapotec', + 'zsu' => 'Sukurum', + 'zte' => 'Elotepec Zapotec', + 'ztg' => 'Xanaguía Zapotec', + 'ztl' => 'Lapaguía-Guivini Zapotec', + 'ztm' => 'San Agustín Mixtepec Zapotec', + 'ztn' => 'Santa Catarina Albarradas Zapotec', + 'ztp' => 'Loxicha Zapotec', + 'ztq' => 'Quioquitani-Quierí Zapotec', + 'zts' => 'Tilquiapan Zapotec', + 'ztt' => 'Tejalapan Zapotec', + 'ztu' => 'Güilá Zapotec', + 'ztx' => 'Zaachila Zapotec', + 'zty' => 'Yatee Zapotec', + 'zua' => 'Zeem', + 'zuh' => 'Tokano', + 'zu' => 'Zulu', + 'zul' => 'Zulu', + 'zum' => 'Kumzari', + 'zun' => 'Zuni', + 'zuy' => 'Zumaya', + 'zwa' => 'Zay', + 'zxx' => 'No linguistic content', + 'zyb' => 'Yongbei Zhuang', + 'zyg' => 'Yang Zhuang', + 'zyj' => 'Youjiang Zhuang', + 'zyn' => 'Yongnan Zhuang', + 'zyp' => 'Zyphe Chin', + 'zza' => 'Zaza', + 'zzj' => 'Zuojiang Zhuang', +]; diff --git a/MLEB/Babel/package-lock.json b/MLEB/Babel/package-lock.json new file mode 100644 index 00000000..ba35f248 --- /dev/null +++ b/MLEB/Babel/package-lock.json @@ -0,0 +1,4904 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + } + } + }, + "@babel/generator": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.9.5", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "@babel/helpers": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true + }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + } + } + }, + "@babel/traverse": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@stylelint/postcss-css-in-js": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.1.tgz", + "integrity": "sha512-UMf2Rni3JGKi3ZwYRGMYJ5ipOA5ENJSKMtYA/pE1ZLURwdh7B5+z2r73RmWvub+N0UuH1Lo+TGfCgYwPvqpXNw==", + "dev": true, + "requires": { + "@babel/core": ">=7.9.0" + } + }, + "@stylelint/postcss-markdown": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz", + "integrity": "sha512-iDxMBWk9nB2BPi1VFQ+Dc5+XpvODBHw2n3tYpaBZuEAFQlbtF9If0Qh5LTTwSi/XwdbJ2jt+0dis3i8omyggpw==", + "dev": true, + "requires": { + "remark": "^12.0.0", + "unist-util-find-all-after": "^3.0.1" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.7.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.6.tgz", + "integrity": "sha512-F7cYpbN7uVVhACZTeeIeealwdGM6wMtfWARVLTy5xmKtgVdBNJvbDRoCK3YO1orcs7gv/KwYlb3iXwu9Ug9BkQ==", + "dev": true, + "requires": { + "browserslist": "^4.11.1", + "caniuse-lite": "^1.0.30001039", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.27", + "postcss-value-parser": "^4.0.3" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001045", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001045.tgz", + "integrity": "sha512-Y8o2Iz1KPcD6FjySbk1sPpvJqchgxk/iow0DABpGyzA1UeQAuxh63Xh0Enj5/BrsYbXtCN32JmR4ZxQTCQ6E6A==", + "dev": true + }, + "ccount": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz", + "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "requires": { + "is-regexp": "^2.0.0" + } + }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "comment-parser": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.5.tgz", + "integrity": "sha512-iH9YA35ccw94nx5244GVkpyC9eVTsL71jZz6iz5w6RIf79JLF2AsXHXq9p6Oaohyl3sx5qSMnGsWUDFIAfWL4w==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "dependencies": { + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "electron-to-chromium": { + "version": "1.3.414", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.414.tgz", + "integrity": "sha512-UfxhIvED++qLwWrAq9uYVcqF8FdeV9sU2S7qhiHYFODxzXRrd1GZRl/PjITHsTEejgibcWDraD8TQqoHb1aCBQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.4.0.tgz", + "integrity": "sha512-gU+lxhlPHu45H3JkEGgYhWhkR9wLHHEXC9FbWFnTlEkbKyZKWgWRLgf61E8zWmBuI6g5xKBph9ltg3NtZMVF8g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.0", + "eslint-utils": "^2.0.0", + "eslint-visitor-keys": "^1.2.0", + "espree": "^7.1.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-config-wikimedia": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.16.2.tgz", + "integrity": "sha512-tQikCZT2k3z9UzvRDFAUOpVSwE/MEmKIUQQraFh9tgyPOmRY6fVkMONcFqdEuz8eyg2syW9MNvT2d1SGSMLfBg==", + "dev": true, + "requires": { + "eslint": "^7.2.0", + "eslint-plugin-es": "^3.0.1", + "eslint-plugin-jsdoc": "^27.1.2", + "eslint-plugin-json": "^2.1.1", + "eslint-plugin-mediawiki": "^0.2.5", + "eslint-plugin-mocha": "^7.0.1", + "eslint-plugin-no-jquery": "^2.4.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-qunit": "^4.2.0", + "eslint-plugin-vue": "^6.2.2", + "eslint-plugin-wdio": "^6.0.12" + } + }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + } + }, + "eslint-plugin-jsdoc": { + "version": "27.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-27.1.2.tgz", + "integrity": "sha512-iWrG2ZK4xrxamoMkoyzgkukdmfqWc5Ncd6K+CnwRgxrbwjQQpzmt5Kl8GB0l12R0oUK2AF+9tGFJKNGzuyz79Q==", + "dev": true, + "requires": { + "comment-parser": "^0.7.5", + "debug": "^4.1.1", + "jsdoctypeparser": "^6.1.0", + "lodash": "^4.17.15", + "regextras": "^0.7.1", + "semver": "^6.3.0", + "spdx-expression-parse": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + } + } + }, + "eslint-plugin-json": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-2.1.1.tgz", + "integrity": "sha512-Ktsab8ij33V2KFLhh4alC1FYztdmbV32DeMZYYUCZm4kKLW1s4DrleKKgtbAHSJsmshCK5QGOZtfyc2r3jCRsg==", + "dev": true, + "requires": { + "lodash": "^4.17.15", + "vscode-json-languageservice": "^3.5.1" + } + }, + "eslint-plugin-mediawiki": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.2.5.tgz", + "integrity": "sha512-Xs5G4f1EnS6+9gFWkk28nWA9xcOEPx7YZEGsMYGLelZRAF+2DmV/PigF5N5VqoOkNBpwcbXqLD8wLfkg29aF8w==", + "dev": true, + "requires": { + "eslint-plugin-vue": "^6.2.2", + "upath": "^1.2.0" + } + }, + "eslint-plugin-mocha": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-7.0.1.tgz", + "integrity": "sha512-zkQRW9UigRaayGm/pK9TD5RjccKXSgQksNtpsXbG9b6L5I+jNx7m98VUbZ4w1H1ArlNA+K7IOH+z8TscN6sOYg==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "ramda": "^0.27.0" + } + }, + "eslint-plugin-no-jquery": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.5.0.tgz", + "integrity": "sha512-RrQ380mUJJKdjgpQ/tZAJ3B3W1n3LbVmULooS2Pv5pUDcc5uVHVSJMTdUlsbvQyfo6hWP2LJ4FbOoDzENWcF7A==", + "dev": true + }, + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-qunit": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-4.2.0.tgz", + "integrity": "sha512-UibPK0fSshPTJauyitsHjACixpf+I5BEKqXi6WJ/WGhW31WwP7flSdBW8+Y9B46v05KYH6MJg/uZVIaiaHO5Cg==", + "dev": true + }, + "eslint-plugin-vue": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz", + "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==", + "dev": true, + "requires": { + "natural-compare": "^1.4.0", + "semver": "^5.6.0", + "vue-eslint-parser": "^7.0.0" + } + }, + "eslint-plugin-wdio": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-6.0.12.tgz", + "integrity": "sha512-qZqcU1Z0bqrqhYM1MbwIvKQxcQEGIOEclOjcveavvLZAN4ezpXb1Ogw3xu+UK13iArregJOMI6uUt+JkFmER1A==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.1.0.tgz", + "integrity": "sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==", + "dev": true, + "requires": { + "acorn": "^7.2.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.2.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "requires": { + "clone-regexp": "^2.1.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-glob": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", + "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.7.0.tgz", + "integrity": "sha512-YOadQRnHd5q6PogvAR/x62BGituF2ufiEA6s8aavQANw5YKHERI4AREboX6KotzP8oX2klxYF2wcV/7bn1clfQ==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "requires": { + "glob": "~5.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "globby": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", + "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + } + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "grunt": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.2.1.tgz", + "integrity": "sha512-zgJjn9N56tScvRt/y0+1QA+zDBnKTrkpyeSBqQPLcZvbqTD/oyGMrdZQXmm6I3828s+FmPvxc3Xv+lgKFtudOw==", + "dev": true, + "requires": { + "dateformat": "~3.0.3", + "eventemitter2": "~0.4.13", + "exit": "~0.1.2", + "findup-sync": "~0.3.0", + "glob": "~7.1.6", + "grunt-cli": "~1.3.2", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~2.0.0", + "grunt-legacy-util": "~1.1.1", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "mkdirp": "~1.0.4", + "nopt": "~3.0.6", + "rimraf": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "grunt-cli": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", + "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==", + "dev": true, + "requires": { + "grunt-known-options": "~1.1.0", + "interpret": "~1.1.0", + "liftoff": "~2.5.0", + "nopt": "~4.0.1", + "v8flags": "~3.1.1" + }, + "dependencies": { + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + } + } + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "grunt-banana-checker": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/grunt-banana-checker/-/grunt-banana-checker-0.9.0.tgz", + "integrity": "sha512-SqPiB6OazWqR8USL0NymtuT5Br3mD9WBBsM1rHC/3wIi2SrZNM6/+j9CIeuEM5oCn+AtO2Y0+rzzFyOdC9afAg==", + "dev": true + }, + "grunt-eslint": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-23.0.0.tgz", + "integrity": "sha512-QqHSAiGF08EVD7YlD4OSRWuLRaDvpsRdTptwy9WaxUXE+03mCLVA/lEaR6SHWehF7oUwIqCEjaNONeeeWlB4LQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "eslint": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "grunt-known-options": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", + "dev": true + }, + "grunt-legacy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", + "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", + "dev": true, + "requires": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.5" + } + }, + "grunt-legacy-log-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", + "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", + "dev": true, + "requires": { + "chalk": "~2.4.1", + "lodash": "~4.17.10" + } + }, + "grunt-legacy-util": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", + "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", + "dev": true, + "requires": { + "async": "~1.5.2", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.10", + "underscore.string": "~3.3.4", + "which": "~1.3.0" + } + }, + "grunt-stylelint": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/grunt-stylelint/-/grunt-stylelint-0.15.0.tgz", + "integrity": "sha512-1G5kbT3Y6OtAqgIv/XErtI6ai1t1UdtQWXxUV5Gd900PQoEzu/WrBYhGNAXdb/9nAsNWNjFHQjtdXQtZcDmobA==", + "dev": true, + "requires": { + "chalk": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsdoctypeparser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-6.1.0.tgz", + "integrity": "sha512-UCQBZ3xCUBv/PLfwKAJhp6jmGOSLFNKzrotXGNgbKhWvz27wPsCsVeP7gIcHPElQw2agBmynAitXqhxR58XAmA==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonc-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.0.tgz", + "integrity": "sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "known-css-properties": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.18.0.tgz", + "integrity": "sha512-69AgJ1rQa7VvUsd2kpvVq+VeObDuo3zrj0CzM5Slmf6yduQFAI2kXPDQJR2IE/u6MSAUOJrwSzjg5vlz8qcMiw==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "dev": true + }, + "markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "requires": { + "repeat-string": "^1.0.0" + } + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true + }, + "mdast-util-compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "min-indent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", + "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minimist-options": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.0.2.tgz", + "integrity": "sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node-releases": { + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "postcss-reporter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", + "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "postcss": "^7.0.7" + }, + "dependencies": { + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + } + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-sass": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "dev": true, + "requires": { + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" + } + }, + "postcss-scss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.0.0.tgz", + "integrity": "sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "ramda": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.0.tgz", + "integrity": "sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true + }, + "remark": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.0.tgz", + "integrity": "sha512-oX4lMIS0csgk8AEbzY0h2jdR0ngiCHOpwwpxjmRa5TqAkeknY+tkhjRJGZqnCmvyuWh55/0SW5WY3R3nn3PH9A==", + "dev": true, + "requires": { + "remark-parse": "^8.0.0", + "remark-stringify": "^8.0.0", + "unified": "^9.0.0" + } + }, + "remark-parse": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.1.tgz", + "integrity": "sha512-Ye/5W57tdQZWsfkuVyRq9SUWRgECHnDsMuyUMzdSKpTbNPkZeGtoYfsrkeSi4+Xyl0mhcPPddHITXPcCPHrl3w==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "remark-stringify": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.0.0.tgz", + "integrity": "sha512-cABVYVloFH+2ZI5bdqzoOmemcz/ZuhQSH6W6ZNYnLojAUUn3xtX7u+6BpnYp35qHoGr2NFBsERV14t4vCIeW8w==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^3.0.0", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "dev": true + }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + } + } + }, + "stringify-entities": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.0.0.tgz", + "integrity": "sha512-h7NJJIssprqlyjHT2eQt2W1F+MCcNmwPGlKb0bWEdET/3N44QN3QbUF/ueKCgAssyKRZ3Br9rQ7FcXjHr0qLHw==", + "dev": true, + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.2", + "is-hexadecimal": "^1.0.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "stylelint": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.3.2.tgz", + "integrity": "sha512-kpO3/Gz2ZY40EWUwFYYkgpzhf8ZDUyKpcui5+pS0XKJBj/EMYmZpOJoL8IFAz2yApYeg91NVy5yAjE39hDzWvQ==", + "dev": true, + "requires": { + "@stylelint/postcss-css-in-js": "^0.37.1", + "@stylelint/postcss-markdown": "^0.36.1", + "autoprefixer": "^9.7.6", + "balanced-match": "^1.0.0", + "chalk": "^4.0.0", + "cosmiconfig": "^6.0.0", + "debug": "^4.1.1", + "execall": "^2.0.0", + "file-entry-cache": "^5.0.1", + "get-stdin": "^7.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.0", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.1.4", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.18.0", + "leven": "^3.1.0", + "lodash": "^4.17.15", + "log-symbols": "^3.0.0", + "mathml-tag-names": "^2.1.3", + "meow": "^6.1.0", + "micromatch": "^4.0.2", + "normalize-selector": "^0.2.0", + "postcss": "^7.0.27", + "postcss-html": "^0.36.0", + "postcss-less": "^3.1.4", + "postcss-media-query-parser": "^0.2.3", + "postcss-reporter": "^6.0.1", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^5.4.6", + "v8-compile-cache": "^2.1.0", + "write-file-atomic": "^3.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "get-stdin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "dev": true + }, + "meow": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.0.tgz", + "integrity": "sha512-iIAoeI01v6pmSfObAAWFoITAA4GgiT45m4SmJgoxtZfvI0fyZwhV4d0lTwiUXvAKIPlma05Feb2Xngl52Mj5Cg==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.1.1", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.0.0", + "minimist-options": "^4.0.1", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.0", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.8.1", + "yargs-parser": "^18.1.1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true + } + } + }, + "stylelint-config-wikimedia": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/stylelint-config-wikimedia/-/stylelint-config-wikimedia-0.10.1.tgz", + "integrity": "sha512-R/E7xVKwDyneKmVwkNi+TqJlXZjnL5IH+bQPmfHrgwwyAekNx5GdYZ+tVjx7VBXdv/pjOr0HevVpXSQe86ZfVQ==", + "dev": true, + "requires": { + "stylelint": "13.3.2" + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-trailing-lines": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz", + "integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==", + "dev": true + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "dev": true, + "requires": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } + }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dev": true, + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "unified": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.0.0.tgz", + "integrity": "sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "unist-util-find-all-after": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz", + "integrity": "sha512-0GICgc++sRJesLwEYDjFVJPJttBpVQaTNgc6Jw0Jhzvfs+jtKePEMu+uD+PqkRUrAvGQqwhpDwLGWo1PK8PDEw==", + "dev": true, + "requires": { + "unist-util-is": "^4.0.0" + } + }, + "unist-util-is": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", + "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==", + "dev": true + }, + "unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz", + "integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz", + "integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vfile": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.0.tgz", + "integrity": "sha512-BaTPalregj++64xbGK6uIlsurN3BCRNM/P2Pg8HezlGzKd1O9PrwIac6bd9Pdx2uTb0QHoioZ+rXKolbVXEgJg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-location": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.0.1.tgz", + "integrity": "sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ==", + "dev": true + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vscode-json-languageservice": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.7.0.tgz", + "integrity": "sha512-nGLqcBhTjdfkl8Dz9sYGK/ZCTjscYFoIjYw+qqkWB+vyNfM0k/AyIoT73DQvB/PArteCKjEVfQUF72GRZEDSbQ==", + "dev": true, + "requires": { + "jsonc-parser": "^2.2.1", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.15.1", + "vscode-nls": "^4.1.2", + "vscode-uri": "^2.1.2" + } + }, + "vscode-languageserver-textdocument": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", + "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==", + "dev": true + }, + "vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", + "dev": true + }, + "vscode-nls": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz", + "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==", + "dev": true + }, + "vscode-uri": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", + "dev": true + }, + "vue-eslint-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz", + "integrity": "sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.0.1", + "lodash": "^4.17.15" + }, + "dependencies": { + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "yaml": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.9.2.tgz", + "integrity": "sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.9.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + } + } +} diff --git a/MLEB/Babel/package.json b/MLEB/Babel/package.json index ff4bbe3b..75b51d24 100644 --- a/MLEB/Babel/package.json +++ b/MLEB/Babel/package.json @@ -1,19 +1,14 @@ { - "name": "babel", - "version": "0.0.0", "private": true, - "description": "Build tools for the Babel extension.", "scripts": { "test": "grunt test" }, "devDependencies": { - "eslint-config-wikimedia": "0.7.2", - "eslint-plugin-qunit": "3.3.1", - "grunt": "1.0.3", - "grunt-banana-checker": "0.6.0", - "grunt-eslint": "21.0.0", - "grunt-jsonlint": "1.1.0", - "grunt-stylelint": "0.10.1", - "stylelint-config-wikimedia": "0.5.0" + "eslint-config-wikimedia": "0.16.2", + "grunt": "1.2.1", + "grunt-banana-checker": "0.9.0", + "grunt-eslint": "23.0.0", + "grunt-stylelint": "0.15.0", + "stylelint-config-wikimedia": "0.10.1" } } diff --git a/MLEB/Babel/sql/babel-babel_lang-length-type.sql b/MLEB/Babel/sql/babel-babel_lang-length-type.sql new file mode 100644 index 00000000..f65b1623 --- /dev/null +++ b/MLEB/Babel/sql/babel-babel_lang-length-type.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/babel MODIFY babel_lang varbinary(35) not null; diff --git a/MLEB/Babel/sql/babel-babel_lang-length.sqlite.sql b/MLEB/Babel/sql/babel-babel_lang-length.sqlite.sql new file mode 100644 index 00000000..b10377d6 --- /dev/null +++ b/MLEB/Babel/sql/babel-babel_lang-length.sqlite.sql @@ -0,0 +1,20 @@ +CREATE TABLE /*_*/babel ( + -- user id + babel_user int UNSIGNED NOT NULL, + -- language code + babel_lang varbinary(35) NOT NULL, + -- level (1-5, N) + babel_level varbinary(2) NOT NULL, + + PRIMARY KEY ( babel_user, babel_lang ) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/babel_tmp(babel_user, babel_lang, babel_level) + SELECT babel_user, babel_lang, babel_level FROM /*_*/babel; + +DROP TABLE /*_*/babel; + +ALTER TABLE /*_*/babel_tmp RENAME TO /*_*/babel; + +-- Query all users who know a language at a specific level +CREATE INDEX /*i*/babel_lang_level ON /*_*/babel (babel_lang, babel_level); diff --git a/MLEB/Babel/sql/babel-babel_level-type.sql b/MLEB/Babel/sql/babel-babel_level-type.sql new file mode 100644 index 00000000..a8c56ae0 --- /dev/null +++ b/MLEB/Babel/sql/babel-babel_level-type.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/babel MODIFY babel_level varbinary(2) not null; diff --git a/MLEB/Babel/tests/phan/config.php b/MLEB/Babel/tests/phan/config.php deleted file mode 100644 index 914b8f51..00000000 --- a/MLEB/Babel/tests/phan/config.php +++ /dev/null @@ -1,2 +0,0 @@ -setContentLang( 'qqx' ); @@ -39,7 +39,7 @@ class BabelAutoCreateTest extends MediaWikiTestCase { BabelAutoCreate::create( $category, $code, $level ); $page = WikiPage::factory( Title::newFromText( 'Category:' . $category ) ); $this->assertTrue( $page->exists() ); - $this->assertSame( $expected, $page->getContent()->getNativeData() ); + $this->assertSame( $expected, $page->getContent()->getText() ); } public function createProvider() { diff --git a/MLEB/Babel/tests/phpunit/BabelLanguageCodesTest.php b/MLEB/Babel/tests/phpunit/BabelLanguageCodesTest.php index 92f90149..1789e292 100644 --- a/MLEB/Babel/tests/phpunit/BabelLanguageCodesTest.php +++ b/MLEB/Babel/tests/phpunit/BabelLanguageCodesTest.php @@ -3,6 +3,7 @@ namespace Babel\Tests; use BabelLanguageCodes; +use LanguageCode; /** * @covers BabelLanguageCodes @@ -31,13 +32,12 @@ class BabelLanguageCodesTest extends \PHPUnit\Framework\TestCase { [ 'be-x-old', 'be-tarask' ], ]; // True BCP 47 normalization was added in MW 1.32 - if ( BabelLanguageCodes::bcp47( 'simple' ) === 'en-simple' ) { + if ( LanguageCode::bcp47( 'simple' ) === 'en-simple' ) { // ensure BCP 47-compliant codes are mapped to MediaWiki's // nonstandard internal codes $testData = array_merge( $testData, [ [ 'en-simple', 'simple' ], [ 'cbk', 'cbk-zam' ], - [ 'nrf', 'nrm' ], ] ); } return $testData; @@ -58,6 +58,7 @@ class BabelLanguageCodesTest extends \PHPUnit\Framework\TestCase { [ 'eng', null, 'English' ], [ 'en-gb', null, 'British English' ], [ 'de', null, 'Deutsch' ], + [ 'aaq', null, 'Eastern Abnaki' ], ]; } diff --git a/MLEB/Babel/tests/phpunit/BabelTest.php b/MLEB/Babel/tests/phpunit/BabelTest.php index f1e49a39..e8262ac9 100644 --- a/MLEB/Babel/tests/phpunit/BabelTest.php +++ b/MLEB/Babel/tests/phpunit/BabelTest.php @@ -3,13 +3,13 @@ namespace Babel\Tests; use Babel; +use MediaWiki\MediaWikiServices; use MediaWikiTestCase; use Parser; use ParserOptions; use ParserOutput; use Title; use User; -use WikiPage; /** * @covers Babel @@ -22,61 +22,52 @@ use WikiPage; */ class BabelTest extends MediaWikiTestCase { - protected function setUp() { + public function addDBDataOnce() { + // The '#babel' parser function normally auto-creates category pages via + // a DeferredUpdate. In PHPUnit context, because of wgCommandLineMode + // being true, DeferredUpdates are not actually "deferred". They run + // immediately. This is a problem because this would mean when we parse + // wikitext, BabelAutoCreate would parse and save another wiki page, + // whilst still inside a parser function. This is not allowed in MediaWiki + // and Parser::parse protects against this with an exception. + // + // FIXME: Make BabelAutoCreate less dependent on global state so we can simply + // disable this feature while testing, we don't need these pages for the test. + // + // We cannot simply make DeferredUpdates "deferred" (by disabling wgCommandLineMode), + // because that also means updates from core itself (such as the saving of category + // links) would be deferred, which we do need to observe below. + // + // Workaround this by mocking LinkCache to that BabelAutoCreate/Title::exists() + // perceives these as existing already and will skip auto-creation logic. + $this->setMwGlobals( 'wgCapitalLinks', false ); + MediaWikiServices::getInstance()->resetServiceForTesting( 'NamespaceInfo' ); + $linkCache = new \LinkCache( + MediaWikiServices::getInstance()->getTitleFormatter(), + \WANObjectCache::newEmpty(), + $this->createMock( \NamespaceInfo::class ) + ); + foreach ( [ 'en', 'en-N', 'en-1', 'es', 'es-2', 'de', 'de-N', + 'simple', 'simple-1', 'zh-Hant', 'zh-Hant-3' + ] as $name ) { + $linkCache->addGoodLinkObj( 1, new \TitleValue( NS_CATEGORY, $name ) ); + } + $this->setService( 'LinkCache', $linkCache ); + + $user = User::newFromName( 'User-1' ); + $user->addToDatabase(); + $this->insertPage( 'User:User-1', '{{#babel:en-1|es-2|de|SIMPLE-1|zh-hant-3}}' ); + } + + protected function setUp() : void { parent::setUp(); $this->setContentLang( 'qqx' ); $this->setMwGlobals( [ - // Note that individual tests will change this - 'wgBabelUseDatabase' => true, - 'wgBabelCentralApi' => false, + // Individual tests may change these 'wgBabelCentralDb' => false, 'wgCapitalLinks' => false, ] ); - $user = User::newFromName( 'User-1' ); - $user->addToDatabase(); - - // Avoid auto-creation of categories, since that may cause recursive parser invocation. - $this->createCategoryPage( 'en' ); - $this->createCategoryPage( 'en-1' ); - $this->createCategoryPage( 'es' ); - $this->createCategoryPage( 'es-2' ); - $this->createCategoryPage( 'de' ); - $this->createCategoryPage( 'de-N' ); - $this->createCategoryPage( 'simple' ); - $this->createCategoryPage( 'simple-1' ); - $this->createCategoryPage( 'zh-Hant' ); - $this->createCategoryPage( 'zh-Hant-3' ); - // These are only used if there is a bug in language code normalization, - // but missing categories here would obscure any underlying bug by - // failing with a hard to diagnose recursive parser invocation. - $this->createCategoryPage( 'en-simple' ); - $this->createCategoryPage( 'en-simple-1' ); - - $title = $user->getUserPage(); - $this->insertPage( - $title->getPrefixedText(), '{{#babel:en-1|es-2|de|SIMPLE-1|zh-hant-3}}' - ); - // Test on a category page too ( - $this->insertPage( Title::newFromText( - 'Category:X1', '{{#babel:en-1|es-2|de|simple-1|zh-Hant-3}}' - ) ); - $page = WikiPage::factory( $title ); - // Force a run of LinksUpdate - $updates = $page->getContent()->getSecondaryDataUpdates( $title ); - foreach ( $updates as $update ) { - $update->doUpdate(); - } - } - - /** - * @param string $name - */ - private function createCategoryPage( $name ) { - $category = Title::makeTitle( NS_CATEGORY, $name ); - if ( !$category->exists() ) { - $this->insertPage( $category, 'Test dummy' ); - } } /** @@ -84,29 +75,15 @@ class BabelTest extends MediaWikiTestCase { * @return Parser */ private function getParser( Title $title ) { - $options = new ParserOptions(); + $options = ParserOptions::newFromAnon(); $options->setIsPreview( true ); + $output = new ParserOutput(); - $parser = $this->getMockBuilder( Parser::class ) - ->disableOriginalConstructor() - ->getMock(); - - $parser->expects( $this->any() ) - ->method( 'getOptions' ) - ->will( $this->returnValue( $options ) ); - - $parser->expects( $this->any() ) - ->method( 'getTitle' ) - ->will( $this->returnValue( $title ) ); - - $parser->expects( $this->any() ) - ->method( 'getOutput' ) - ->will( $this->returnValue( new ParserOutput() ) ); - - $parser->expects( $this->any() ) - ->method( 'getDefaultSort' ) - ->will( $this->returnValue( '' ) ); - + $parser = $this->createMock( Parser::class ); + $parser->method( 'getOptions' )->willReturn( $options ); + $parser->method( 'getTitle' )->willReturn( $title ); + $parser->method( 'getOutput' )->willReturn( $output ); + $parser->method( 'getDefaultSort' )->willReturn( '' ); return $parser; } @@ -170,7 +147,7 @@ class BabelTest extends MediaWikiTestCase { $parser = $this->getParser( Title::newFromText( $pageName ) ); $wikiText = Babel::Render( $parser, 'en' ); $this->assertBabelBoxCount( 1, $wikiText ); - $this->assertContains( + $this->assertStringContainsString( '
' . "\n" . '{|' @@ -197,7 +174,7 @@ class BabelTest extends MediaWikiTestCase { $parser = $this->getParser( Title::newFromText( $pageName ) ); $wikiText = Babel::Render( $parser, 'en' ); $this->assertBabelBoxCount( 1, $wikiText ); - $this->assertContains( + $this->assertStringContainsString( '
' . "\n" . '{|' @@ -219,7 +196,7 @@ class BabelTest extends MediaWikiTestCase { $parser = $this->getParser( Title::newFromText( 'User:User-1' ) ); $wikiText = Babel::Render( $parser, 'EN-1', 'zh-Hant' ); $this->assertBabelBoxCount( 2, $wikiText ); - $this->assertContains( + $this->assertStringContainsString( '
' . "\n" . '{|' @@ -236,7 +213,7 @@ class BabelTest extends MediaWikiTestCase { $this->assertHasCategory( $parser, 'en', '1' ); $this->assertHasCategory( $parser, 'en-1', '' ); - $this->assertContains( + $this->assertStringContainsString( '
' . "\n" . '{|' @@ -280,7 +257,7 @@ class BabelTest extends MediaWikiTestCase { $parser = $this->getParser( Title::newFromText( 'User:User-1' ) ); $wikiText = Babel::Render( $parser, 'redLink' ); $this->assertBabelBoxCount( 0, $wikiText ); - $this->assertContains( + $this->assertStringContainsString( '
[[(babel-template: redLink)]]
', $wikiText ); @@ -290,7 +267,7 @@ class BabelTest extends MediaWikiTestCase { $parser = $this->getParser( Title::newFromText( 'User:User-1' ) ); $wikiText = Babel::Render( $parser, '' ); $this->assertBabelBoxCount( 0, $wikiText ); - $this->assertContains( + $this->assertStringContainsString( '
(babel-template: )
', $wikiText ); @@ -307,8 +284,8 @@ class BabelTest extends MediaWikiTestCase { */ public static function provideSettings() { return [ - [ [ 'wgBabelUseDatabase' => true ] ], - [ [ 'wgBabelUseDatabase' => false ] ], + 'lang info from db' => [ [ 'wgBabelUseDatabase' => true ] ], + 'lang info from categories' => [ [ 'wgBabelUseDatabase' => false ] ], ]; } diff --git a/MLEB/Babel/txt2cdb.php b/MLEB/Babel/txt2cdb.php deleted file mode 100644 index a15b13d8..00000000 --- a/MLEB/Babel/txt2cdb.php +++ /dev/null @@ -1,50 +0,0 @@ -set( $iso1, $iso1 ); - if ( $iso3 !== '-' ) { - $codes->set( $iso3, $iso1 ); - } - $names->set( $iso1, $name ); - $names->set( $iso3, $name ); - } elseif ( $iso3 !== '-' ) { - $codes->set( $iso3, $iso3 ); - $names->set( $iso3, $name ); - } - } -} catch ( Cdb\Exception $e ) { - throw new Exception( $e->getMessage() ); -} - -fclose( $fr ); diff --git a/MLEB/Babel/txt2php.php b/MLEB/Babel/txt2php.php new file mode 100644 index 00000000..71a8cb01 --- /dev/null +++ b/MLEB/Babel/txt2php.php @@ -0,0 +1,54 @@ +create( $names, $header ); +file_put_contents( "$dir/names.php", $code ); + +$code = $writer->create( $codes, $header ); +file_put_contents( "$dir/codes.php", $code ); diff --git a/MLEB/CleanChanges/.eslintrc.json b/MLEB/CleanChanges/.eslintrc.json index 5c46a3c2..007c6cb5 100644 --- a/MLEB/CleanChanges/.eslintrc.json +++ b/MLEB/CleanChanges/.eslintrc.json @@ -7,5 +7,9 @@ "globals": { "mw": false, "OO": false + }, + "rules": { + "no-jquery/no-global-selector": "warn", + "no-jquery/no-sizzle": "warn" } -} \ No newline at end of file +} diff --git a/MLEB/CleanChanges/.phan/config.php b/MLEB/CleanChanges/.phan/config.php new file mode 100644 index 00000000..5e697c2e --- /dev/null +++ b/MLEB/CleanChanges/.phan/config.php @@ -0,0 +1,22 @@ + - diff --git a/MLEB/CleanChanges/CleanChanges.php b/MLEB/CleanChanges/CleanChanges.php deleted file mode 100644 index fe520cd8..00000000 --- a/MLEB/CleanChanges/CleanChanges.php +++ /dev/null @@ -1,14 +0,0 @@ -getOutput()->addModules( 'ext.cleanchanges.uls' ); - } - - if ( $wgCCFiltersOnly ) { - return; - } - - /* allow override */ - $request = $skin->getRequest(); - if ( $request->getBool( 'cleanrc' ) ) { - $list = new NCL( $skin ); - } - if ( $request->getBool( 'newrc' ) ) { - $list = new EnhancedChangesList( $skin ); - } - if ( $request->getBool( 'oldrc' ) ) { - $list = new OldChangesList( $skin ); - } - - if ( !$list && $user->getOption( 'usenewrc' ) ) { - $list = new NCL( $skin ); - } - - if ( $list instanceof NCL ) { - $skin->getOutput()->addModules( 'ext.cleanchanges' ); - } - - /* If some list was specified, stop processing */ - return $list === null; - } - - protected static $userinfo = []; - - /** - * @param array &$vars - * @return bool - */ - public static function addScriptVariables( &$vars ) { - $vars += self::$userinfo; - return true; - } - - /** - * String that comes between page details and the user details. By default - * only larger space. - */ - protected $userSeparator = "\xc2\xa0 \xc2\xa0"; - - /** - * Text direction, true for ltr and false for rtl - */ - protected $direction = true; - - /** - * @param IContextSource|Skin $skin - */ - public function __construct( $skin ) { - $lang = $this->getLanguage(); - parent::__construct( $skin ); - $this->direction = !$lang->isRTL(); - $this->dir = $lang->getDirMark(); - } - - /** - * @return String - */ - public function beginRecentChangesList() { - parent::beginRecentChangesList(); - $dir = $this->direction ? 'ltr' : 'rtl'; - return Xml::openElement( - 'div', - [ 'style' => "direction: $dir" ] - ); - } - - /** - * @return string - */ - public function endRecentChangesList() { - return $this->recentChangesBlock() . '
'; - } - - /** - * @param RCCacheEntry|null $rc - * @return int - */ - protected function isLog( RCCacheEntry $rc = null ) { - if ( $rc && $rc->getAttribute( 'rc_type' ) == RC_LOG ) { - return 2; - } - return 0; - } - - /** - * @param RCCacheEntry $rc - * @return string - */ - protected function getLogTitle( RCCacheEntry $rc ) { - $logtype = $rc->getAttribute( 'rc_log_type' ); - $logpage = new LogPage( $logtype ); - $logname = $logpage->getName()->escaped(); - $titleObj = SpecialPage::getTitleFor( 'Log', $logtype ); - $link = Linker::link( $titleObj, $logname ); - return $this->msg( 'parentheses' )->rawParams( $link )->escaped(); - } - - /** - * Format a line for enhanced recentchange (aka with JavaScript and block of lines). - * @param RecentChange &$baseRC - * @param bool $watched - * @param int|null $linenumber - * @return string - */ - public function recentChangesLine( &$baseRC, $watched = false, $linenumber = null ) { - # Create a specialised object - $rc = RCCacheEntry::newFromParent( $baseRC ); - - // Extract most used variables - $timestamp = $rc->getAttribute( 'rc_timestamp' ); - $titleObj = $rc->getTitle(); - $rc_id = $rc->getAttribute( 'rc_id' ); - - $lang = $this->getLanguage(); - $date = $lang->date( $timestamp, /* adj */ true, /* format */ true ); - $time = $lang->time( $timestamp, /* adj */ true, /* format */ true ); - - # Should patrol-related stuff be shown? - $rc->unpatrolled = $this->showAsUnpatrolled( $rc ); - - $logEntry = $this->isLog( $rc ); - if ( $logEntry ) { - $clink = $this->getLogTitle( $rc ); - } elseif ( $rc->unpatrolled && $rc->getAttribute( 'rc_type' ) == RC_NEW ) { - # Unpatrolled new page, give rc_id in query - $clink = linker::linkKnown( - $titleObj, - null, - [], - [ 'rcid' => $rc_id ] - ); - } else { - $clink = Linker::linkKnown( $titleObj ); - } - - $rc->watched = $watched; - $rc->link = $this->maybeWatchedLink( $clink, $watched ); - $rc->timestamp = $time; - $rc->numberofWatchingusers = $baseRC->numberofWatchingusers; - - $rc->_reqCurId = [ 'curid' => $rc->getAttribute( 'rc_cur_id' ) ]; - $rc->_reqOldId = [ 'oldid' => $rc->getAttribute( 'rc_this_oldid' ) ]; - $this->makeLinks( $rc ); - - // Make user links - if ( self::isDeleted( $rc, Revision::DELETED_USER ) ) { - $rc->_user = ' ' . - $this->msg( 'rev-deleted-user' )->escaped() . - ''; - $rc->_userInfo = ''; - self::$userinfo += []; - } else { - $rc->_user = Linker::userLink( - $rc->getAttribute( 'rc_user' ), - $rc->getAttribute( 'rc_user_text' ) - ); - $stuff = $this->userToolLinks( - $rc->getAttribute( 'rc_user' ), - $rc->getAttribute( 'rc_user_text' ) - ); - // TODO: userToolLinks can return '' - self::$userinfo += $stuff[1]; - $rc->_userInfo = $stuff[0]; - } - - if ( !$this->isLog( $rc ) ) { - $rc->_comment = $this->getComment( $rc ); - } - - $rc->_watching = $this->numberofWatchingusers( $baseRC->numberofWatchingusers ); - - # If it's a new day, add the headline and flush the cache - $ret = ''; - if ( $date !== $this->lastdate ) { - # Process current cache - $ret = $this->recentChangesBlock(); - $this->rc_cache = []; - $ret .= Xml::element( 'h4', null, $date ) . "\n"; - $this->lastdate = $date; - } - - # Put accumulated information into the cache, for later display - # Page moves go on their own line - if ( $logEntry ) { - $secureName = $this->getLogTitle( $rc ); - } else { - $secureName = $titleObj->getPrefixedDBkey(); - } - $this->rc_cache[$secureName][] = $rc; - - return $ret; - } - - /** - * @param RCCacheEntry $rc - */ - protected function makeLinks( RCCacheEntry $rc ) { - /* These will be overriden with actual links below, if applicable */ - $rc->_curLink = $this->message['cur']; - $rc->_diffLink = $this->message['diff']; - $rc->_lastLink = $this->message['last']; - $rc->_histLink = $this->message['hist']; - - if ( !$this->isLog( $rc ) ) { - # Make cur, diff and last links - $querycur = [ 'diff' => 0 ] + $rc->_reqCurId + $rc->_reqOldId; - $querydiff = [ - 'diff' => $rc->getAttribute( 'rc_this_oldid' ), - 'oldid' => $rc->getAttribute( 'rc_last_oldid' ), - 'rcid' => $rc->unpatrolled ? $rc->getAttribute( 'rc_id' ) : '', - ] + $rc->_reqCurId; - - $rc->_curLink = Linker::linkKnown( $rc->getTitle(), - $this->message['cur'], [], $querycur ); - - if ( $rc->getAttribute( 'rc_type' ) != RC_NEW ) { - $rc->_diffLink = Linker::linkKnown( $rc->getTitle(), - $this->message['diff'], [], $querydiff ); - } - - if ( $rc->getAttribute( 'rc_last_oldid' ) != 0 ) { - // This is not the first revision - $rc->_lastLink = Linker::linkKnown( $rc->getTitle(), - $this->message['last'], [], $querydiff ); - } - - $rc->_histLink = Linker::link( $rc->getTitle(), - $this->message['hist'], [], - $rc->_reqCurId + [ 'action' => 'history' ] - ); - } - } - - /** - * Enhanced RC group - * @param RCCacheEntry[] $block - * @return string - */ - protected function recentChangesBlockGroup( $block ) { - # Collate list of users - $isnew = false; - $userlinks = []; - $overrides = [ 'minor' => false, 'bot' => false ]; - $oldid = 0; - foreach ( $block as $rcObj ) { - $oldid = $rcObj->getAttribute( 'rc_last_oldid' ); - if ( $rcObj->getAttribute( 'rc_new' ) ) { - $isnew = $overrides['new'] = true; - } - $u = $rcObj->_user; - if ( !isset( $userlinks[$u] ) ) { - $userlinks[$u] = 0; - } - if ( $rcObj->unpatrolled ) { - $overrides['patrol'] = true; - } - - $userlinks[$u]++; - } - - # Main line, flags and timestamp - - $info = Xml::tags( 'code', null, - $this->getFlags( $block[0], $overrides ) . ' ' . $block[0]->timestamp ); - $rci = 'RCI' . $this->rcCacheIndex; - $rcl = 'RCL' . $this->rcCacheIndex; - $rcm = 'RCM' . $this->rcCacheIndex; - $linkAttribs = [ - 'data-mw-cleanchanges-level' => $rci, - 'data-mw-cleanchanges-other' => $rcm, - 'data-mw-cleanchanges-link' => $rcl, - 'tabindex' => '0', - 'role' => 'button', - 'class' => 'mw-cleanchanges-showblock' - ]; - $tl = - Xml::tags( 'span', [ 'id' => $rcm ], - Xml::tags( 'a', $linkAttribs, - $this->arrow( $this->direction ? 'r' : 'l' ) ) ) . - Xml::tags( 'span', [ 'id' => $rcl, 'style' => 'display: none;' ], - Xml::tags( 'a', $linkAttribs, $this->downArrow() ) ); - - $items[] = $tl . $info; - - # Article link - $items[] = $block[0]->link; - - $log = $this->isLog( $block[0] ); - if ( !$log ) { - # Changes - $n = count( $block ); - static $nchanges = []; - if ( !isset( $nchanges[$n] ) ) { - $nchanges[$n] = $this->msg( 'nchanges' )->numParams( $n )->escaped(); - } - - if ( !$isnew ) { - $changes = Linker::linkKnown( - $block[0]->getTitle(), - $nchanges[$n], - [], - [ - 'curid' => $block[0]->getAttribute( 'rc_cur_id' ), - 'diff' => $block[0]->getAttribute( 'rc_this_oldid' ), - 'oldid' => $oldid - ] - ); - } else { - $changes = $nchanges[$n]; - } - - $size = $this->getCharacterDifference( $block[0], $block[count( $block ) - 1] ); - $items[] = $this->changeInfo( $changes, $block[0]->_histLink, $size ); - } - - $items[] = $this->userSeparator; - - # Sort the list and convert to text - $items[] = $this->makeUserlinks( $userlinks ); - $items[] = $block[0]->_watching; - - $lines = Xml::tags( 'div', null, implode( " {$this->dir}", $items ) ) . "\n"; - - # Sub-entries - $lines .= Xml::tags( 'div', - [ 'id' => $rci, 'style' => 'display: none;' ], - $this->subEntries( $block ) - ) . "\n"; - - $this->rcCacheIndex++; - return $lines . "\n"; - } - - /** - * Generate HTML for an arrow or placeholder graphic - * @param string $dir One of '', 'd', 'l', 'r' - * @param string $alt - * @param string $title - * @return string HTML "" tag - */ - protected function arrow( $dir, $alt = '', $title = '' ) { - global $wgExtensionAssetsPath; - - return Html::element( - 'img', - [ - 'src' => "$wgExtensionAssetsPath/CleanChanges/images/Arr_$dir.png", - 'width' => 12, - 'height' => 12, - 'alt' => $alt, - 'title' => $title, - ] - ); - } - - /** - * Generate HTML for a right- or left-facing arrow, - * depending on language direction. - * @return string HTML "" tag - */ - protected function sideArrow() { - $dir = $this->getLanguage()->isRTL() ? 'l' : 'r'; - - return $this->arrow( $dir, '+', $this->msg( 'rc-enhanced-expand' )->text() ); - } - - /** - * Generate HTML for a down-facing arrow - * depending on language direction. - * @return string HTML "" tag - */ - protected function downArrow() { - return $this->arrow( 'd', '-', $this->msg( 'rc-enhanced-hide' )->text() ); - } - - /** - * Generate HTML for a spacer image - * @return string HTML "" tag - */ - protected function spacerArrow() { - return $this->arrow( '', UtfNormal\Utils::codepointToUtf8( 0xa0 ) ); // non-breaking space - } - - /** - * @param RCCacheEntry[] $block - * @return string - */ - protected function subEntries( array $block ) { - $lines = ''; - foreach ( $block as $rcObj ) { - $items = []; - $log = $this->isLog( $rcObj ); - - $time = $rcObj->timestamp; - if ( !$log ) { - $time = Linker::linkKnown( - $rcObj->getTitle(), - $rcObj->timestamp, - [], - $rcObj->_reqOldId + $rcObj->_reqCurId - ); - } - - $info = $this->getFlags( $rcObj ) . ' ' . $time; - $items[] = $this->spacerArrow() . Xml::tags( 'code', null, $info ); - - if ( !$log ) { - $cur = $rcObj->_curLink; - $last = $rcObj->_lastLink; - - if ( $block[0] === $rcObj ) { - // no point diffing first to first - $cur = $this->message['cur']; - } - - $items[] = $this->changeInfo( $cur, $last, $this->getCharacterDifference( $rcObj ) ); - } - - $items[] = $this->userSeparator; - - if ( $this->isLog( $rcObj ) ) { - $items[] = $this->insertLogEntry( $rcObj ); - } else { - $items[] = $rcObj->_user; - $items[] = $rcObj->_userInfo; - $items[] = $rcObj->_comment; - } - - $lines .= '
' . implode( " {$this->dir}", $items ) . "
\n"; - } - return $lines; - } - - /** - * @param string $diff - * @param string $hist - * @param mixed $size - * @return string - */ - protected function changeInfo( $diff, $hist, $size ) { - if ( is_int( $size ) ) { - $size = $this->wrapCharacterDifference( $size ); - // FIXME: i18n: Hard coded parentheses and spaces. - return $this->msg( 'cleanchanges-rcinfo-3' )->rawParams( $diff, $hist, $size )->escaped(); - } else { - return $this->msg( 'cleanchanges-rcinfo-2' )->rawParams( $diff, $hist )->escaped(); - } - } - - /** - * Enhanced RC ungrouped line. - * @param RCCacheEntry $rcObj - * @return string a HTML formated line - */ - protected function recentChangesBlockLine( $rcObj ) { - # Flag and Timestamp - $info = $this->getFlags( $rcObj ) . ' ' . $rcObj->timestamp; - $items[] = $this->spacerArrow() . Xml::tags( 'code', null, $info ); - - # Article link - $items[] = $rcObj->link; - - if ( !$this->isLog( $rcObj ) ) { - $items[] = $this->changeInfo( $rcObj->_diffLink, $rcObj->_histLink, - $this->getCharacterDifference( $rcObj ) - ); - } - - $items[] = $this->userSeparator; - - if ( $this->isLog( $rcObj ) ) { - $items[] = $this->insertLogEntry( $rcObj ); - } else { - $items[] = $rcObj->_user; - $items[] = $rcObj->_userInfo; - $items[] = $rcObj->_comment; - $items[] = $rcObj->_watching; - } - - return '
' . implode( " {$this->dir}", $items ) . "
\n"; - } - - /** - * @param RCCacheEntry $rc - * @return string - */ - public function getComment( RCCacheEntry $rc ) { - $comment = $rc->getAttribute( 'rc_comment' ); - $action = ''; - if ( $comment === '' ) { - return $action; - } elseif ( self::isDeleted( $rc, LogPage::DELETED_COMMENT ) ) { - $priviledged = $this->getUser()->isAllowed( 'deleterevision' ); - if ( $priviledged ) { - return $action . ' ' . - Linker::formatComment( $comment ) . - ''; - } - return $action . ' ' . - $this->msg( 'rev-deleted-comment' )->escaped() . - ''; - } - return $action . Linker::commentBlock( $comment, $rc->getTitle() ); - } - - /** - * Enhanced user tool links, with javascript functionality. - * @param int $userId user id, 0 for anons - * @param string $userText username - * @return array|string Either an array of html and array of messages, or '' - * [0]: html span and links to user tools - * [1]: array of escaped message strings - */ - public function userToolLinks( $userId, $userText ) { - global $wgDisableAnonTalk; - $talkable = !( $wgDisableAnonTalk && 0 == $userId ); - - /* - * Assign each different user a running id. This is used to show user tool - * links on demand with javascript, to reduce page size when one user has - * multiple changes. - * - * $linkindex is the running id, and $users contain username -> html snippet - * for javascript. - */ - - static $linkindex = 0; - $linkindex++; - - static $users = []; - $userindex = array_search( $userText, $users, true ); - if ( $userindex === false ) { - $users[] = $userText; - $userindex = count( $users ) - 1; - } - - global $wgExtensionAssetsPath; - $image = Xml::element( 'img', [ - 'src' => $wgExtensionAssetsPath . '/CleanChanges/images/showuserlinks.png', - 'alt' => $this->msg( 'cleanchanges-showuserlinks' )->text(), - 'title' => $this->msg( 'cleanchanges-showuserlinks' )->text(), - 'width' => '15', - 'height' => '11', - ] - ); - - $rci = 'RCUI' . $userindex; - $rcl = 'RCUL' . $linkindex; - $rcm = 'RCUM' . $linkindex; - $linkAttribs = [ - 'tabindex' => '0', - 'role' => 'button', - 'class' => 'mw-cleanchanges-showuserinfo', - 'data-mw-userinfo-id' => $rci, - 'data-mw-userinfo-target' => $rcl - ]; - $tl = Xml::tags( 'span', [ 'id' => $rcm ], - Xml::tags( 'a', $linkAttribs, $image ) - ); - $tl .= Xml::element( 'span', [ 'id' => $rcl ], ' ' ); - - $items = []; - if ( $talkable ) { - $items[] = Linker::userTalkLink( $userId, $userText ); - } - if ( $userId ) { - $targetPage = SpecialPage::getTitleFor( 'Contributions', $userText ); - $items[] = Linker::linkKnown( $targetPage, - $this->msg( 'contribslink' )->escaped() ); - } - if ( $this->getUser()->isAllowed( 'block' ) ) { - $items[] = Linker::blockLink( $userId, $userText ); - } - if ( $userId ) { - $userrightsPage = new UserrightsPage(); - if ( $userrightsPage->userCanChangeRights( User::newFromId( $userId ) ) ) { - $targetPage = SpecialPage::getTitleFor( 'Userrights', $userText ); - $items[] = Linker::linkKnown( $targetPage, - $this->msg( 'cleanchanges-changerightslink' )->escaped() ); - } - } - - if ( $items ) { - $msg = $this->msg( 'parentheses' ) - ->rawParams( $this->getLanguage()->pipeList( $items ) ) - ->escaped(); - $data = [ "wgUserInfo$rci" => $msg ]; - - return [ $tl, $data ]; - } else { - return ''; - } - } - - /** - * Makes aggregated list of contributors for a changes group. - * Example: [Usera; AnotherUser; ActiveUser ‎(2×); Userabc ‎(6×)] - * @param array $userlinks - * @return string - */ - protected function makeUserlinks( $userlinks ) { - /* - * User with least changes first, and fallback to alphabetical sorting if - * multiple users have same number of changes. - */ - krsort( $userlinks ); - asort( $userlinks ); - - $users = []; - foreach ( $userlinks as $userlink => $count ) { - $text = $userlink; - if ( $count > 1 ) { - $lang = $this->getLanguage(); - $count = $lang->formatNum( $count ); - $text .= "{$lang->getDirMark()}×$count"; - } - array_push( $users, $text ); - } - $text = implode( '; ', $users ); - return $this->XMLwrapper( 'changedby', "[$text]", 'span', false ); - } - - /** - * @param RCCacheEntry $rc - * @param array|null $overrides - * @return string - */ - protected function getFlags( $rc, array $overrides = null ) { - // @todo We assume all characters are of equal width, which they may be not - $map = [ - # item => field letter-or-something - 'new' => [ 'rc_new', self::flag( 'newpage' ) ], - 'minor' => [ 'rc_minor', self::flag( 'minor' ) ], - 'bot' => [ 'rc_bot', self::flag( 'bot' ) ], - ]; - - static $nothing = "\xc2\xa0"; - - $items = []; - foreach ( $map as $item => $data ) { - list( $field, $flag ) = $data; - $bool = isset( $overrides[$item] ) ? $overrides[$item] : $rc->getAttribute( $field ); - $items[] = $bool ? $flag : $nothing; - } - - if ( $this->getUser()->useRCPatrol() ) { - if ( isset( $overrides['patrol'] ) ) { - $items[] = $overrides['patrol'] ? self::flag( 'unpatrolled' ) : $nothing; - } elseif ( $this->showAsUnpatrolled( $rc ) ) { - $items[] = self::flag( 'unpatrolled' ); - } else { - $items[] = $nothing; - } - } - - return implode( '', $items ); - } - - /** - * @param RCCacheEntry $new - * @param RCCacheEntry|null $old - * @return mixed - */ - protected function getCharacterDifference( $new, $old = null ) { - if ( $old === null ) { - $old = $new; - } - - $newSize = $new->getAttribute( 'rc_new_len' ); - $oldSize = $old->getAttribute( 'rc_old_len' ); - if ( $newSize === null || $oldSize === null ) { - // @todo Return null instead of string here? - return ''; - } - - return $newSize - $oldSize; - } - - /** - * @param mixed $szdiff Character difference. - * @return string - */ - public function wrapCharacterDifference( $szdiff ) { - global $wgRCChangedSizeThreshold; - static $cache = []; - if ( !isset( $cache[$szdiff] ) ) { - // @todo FIXME: Hard coded text (+). - $prefix = $szdiff > 0 ? '+' : ''; - $cache[$szdiff] = $prefix . $this->msg( 'rc-change-size', - $this->getLanguage()->formatNum( $szdiff ) - )->text(); - } - - $tag = 'span'; - if ( abs( $szdiff ) > abs( $wgRCChangedSizeThreshold ) ) { - $tag = 'strong'; - } - - if ( $szdiff === 0 ) { - return $this->XMLwrapper( 'mw-plusminus-null', $cache[$szdiff], $tag ); - } elseif ( $szdiff > 0 ) { - return $this->XMLwrapper( 'mw-plusminus-pos', $cache[$szdiff], $tag ); - } - return $this->XMLwrapper( 'mw-plusminus-neg', $cache[$szdiff], $tag ); - } - - /** - * @param string $class - * @param string $content - * @param string $tag - * @param bool $escape - * @return string - */ - protected function XMLwrapper( $class, $content, $tag = 'span', $escape = true ) { - if ( $escape ) { - return Xml::element( $tag, [ 'class' => $class ], $content ); - } - return Xml::tags( $tag, [ 'class' => $class ], $content ); - } -} diff --git a/MLEB/CleanChanges/Filters.php b/MLEB/CleanChanges/Filters.php deleted file mode 100644 index 477c6d91..00000000 --- a/MLEB/CleanChanges/Filters.php +++ /dev/null @@ -1,157 +0,0 @@ -add( 'users', '' ); - $users = $wgRequest->getVal( 'users' ); - if ( $users === null ) { - return; - } - - $userArr = UserArray::newFromNames( explode( '|', $users ) ); - if ( $userArr->count() ) { - $dbr = wfGetDB( DB_REPLICA ); - if ( class_exists( 'ActorMigration' ) ) { - $conds[] = ActorMigration::newMigration() - ->getWhere( $dbr, 'rc_user', iterator_to_array( $userArr ) )['conds']; - } else { - $ids = []; - foreach ( $userArr as $user ) { - $ids[] = $user->getId(); - } - $conds['rc_user'] = $ids; - } - $opts->setValue( 'users', $users ); - } - } - - /** - * Hook: SpecialRecentChangesPanel - * @param array &$items - * @param FormOptions $opts - */ - public static function userForm( &$items, FormOptions $opts ) { - global $wgRequest, $wgCCUserFilter; - - if ( !$wgCCUserFilter ) { - return; - } - - $opts->consumeValue( 'users' ); - - $default = $wgRequest->getVal( 'users', '' ); - $items['users'] = Xml::inputLabelSep( - wfMessage( 'cleanchanges-users' )->text(), - 'users', - 'mw-users', - 40, - $default - ); - } - - /** - * Hook: ChangesListSpecialPageQuery - * @param string $name - * @param array &$tables - * @param array &$fields - * @param array &$conds - * @param array &$query_options - * @param array &$join_conds - * @param FormOptions $opts - */ - public static function trailer( - $name, - &$tables, - &$fields, - &$conds, - &$query_options, - &$join_conds, - FormOptions $opts - ) { - global $wgRequest, $wgCCTrailerFilter; - - if ( !$wgCCTrailerFilter ) { - return; - } - - $opts->add( 'trailer', '' ); - $trailer = $wgRequest->getVal( 'trailer' ); - if ( $trailer === null ) { - return; - } - - $dbr = wfGetDB( DB_REPLICA ); - $conds[] = 'rc_title ' . $dbr->buildLike( $dbr->anyString(), $trailer ); - $opts->setValue( 'trailer', $trailer ); - } - - /** - * Hook: SpecialRecentChangesPanel - * @param array &$items - * @param FormOptions $opts - */ - public static function trailerForm( &$items, FormOptions $opts ) { - /** - * @var Language $wgLang - */ - global $wgLang, $wgRequest, $wgCCTrailerFilter; - - if ( !$wgCCTrailerFilter ) { - return; - } - - $opts->consumeValue( 'trailer' ); - - $default = $wgRequest->getVal( 'trailer', '' ); - - if ( is_callable( [ 'LanguageNames', 'getNames' ] ) ) { - $languages = LanguageNames::getNames( $wgLang->getCode(), - LanguageNames::FALLBACK_NORMAL, - LanguageNames::LIST_MW - ); - } else { - $languages = Language::fetchLanguageNames( null, 'mw' ); - } - ksort( $languages ); - $options = Xml::option( wfMessage( 'cleanchanges-language-na' )->text(), '', $default === '' ); - foreach ( $languages as $code => $name ) { - $selected = ( "/$code" === $default ); - $options .= Xml::option( "$code - $name", "/$code", $selected ) . "\n"; - } - $str = - Xml::openElement( 'select', [ - 'name' => 'trailer', - 'class' => 'mw-language-selector', - 'id' => 'sp-rc-language', - ] ) . - $options . - Xml::closeElement( 'select' ); - - $items['tailer'] = [ wfMessage( 'cleanchanges-language' )->escaped(), $str ]; - } -} diff --git a/MLEB/CleanChanges/Gruntfile.js b/MLEB/CleanChanges/Gruntfile.js index 0f1f3171..b899c3b8 100644 --- a/MLEB/CleanChanges/Gruntfile.js +++ b/MLEB/CleanChanges/Gruntfile.js @@ -10,6 +10,9 @@ module.exports = function ( grunt ) { grunt.initConfig( { eslint: { + options: { + cache: true + }, all: [ '**/*.js', '!node_modules/**', diff --git a/MLEB/CleanChanges/RELEASE-NOTES b/MLEB/CleanChanges/RELEASE-NOTES index 97e9906b..b989e7fc 100644 --- a/MLEB/CleanChanges/RELEASE-NOTES +++ b/MLEB/CleanChanges/RELEASE-NOTES @@ -1,5 +1,5 @@ -== CleanChanges 2019.01 == -Released at 2019-01-22. +== CleanChanges 2020.07 == +Released at 2020-07-24. -=== Highlights === -* Maintenance and localization updates only. +=== Noteworthy changes === +* Localisation and maintenance updates. diff --git a/MLEB/CleanChanges/composer.json b/MLEB/CleanChanges/composer.json index 927dd254..9474ba4a 100644 --- a/MLEB/CleanChanges/composer.json +++ b/MLEB/CleanChanges/composer.json @@ -5,19 +5,20 @@ "homepage": "https://www.mediawiki.org/wiki/Extension:CleanChanges", "license": "GPL-2.0-or-later", "require": { - "php": ">=5.5.9", + "php": ">=7.1", "composer/installers": ">=1.0.1" }, "require-dev": { - "jakub-onderka/php-parallel-lint": "1.0.0", - "mediawiki/mediawiki-codesniffer": "23.0.0", - "jakub-onderka/php-console-highlighter": "0.3.2", - "mediawiki/minus-x": "0.3.1" + "mediawiki/mediawiki-codesniffer": "31.0.0", + "mediawiki/mediawiki-phan-config": "0.10.2", + "mediawiki/minus-x": "1.1.0", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0" }, "scripts": { "fix": [ - "phpcbf", - "minus-x fix ." + "minus-x fix .", + "phpcbf" ], "test": [ "parallel-lint . --exclude vendor --exclude node_modules", diff --git a/MLEB/CleanChanges/extension.json b/MLEB/CleanChanges/extension.json index 94892b5b..efc973c0 100644 --- a/MLEB/CleanChanges/extension.json +++ b/MLEB/CleanChanges/extension.json @@ -1,14 +1,14 @@ { "name": "Clean Changes", - "version": "2019-01-17 [https://www.mediawiki.org/wiki/MLEB MLEB 2019.01]", + "version": "2020-07-20 [https://www.mediawiki.org/wiki/MLEB MLEB 2020.07]", "author": "Niklas Laxström", "url": "https://www.mediawiki.org/wiki/Extension:CleanChanges", "descriptionmsg": "cleanchanges-desc", "license-name": "GPL-2.0-or-later", "type": "other", "AutoloadClasses": { - "NCL": "CleanChanges_body.php", - "CCFilters": "Filters.php" + "NCL": "includes/NCL.php", + "CCFilters": "includes/CCFilters.php" }, "config": { "CCTrailerFilter": false, @@ -16,12 +16,8 @@ "CCFiltersOnly": true }, "Hooks": { - "FetchChangesList": [ - "NCL::hook" - ], - "MakeGlobalVariablesScript": [ - "NCL::addScriptVariables" - ], + "FetchChangesList": "NCL::hook", + "MakeGlobalVariablesScript": "NCL::addScriptVariables", "ChangesListSpecialPageQuery": [ "CCFilters::user", "CCFilters::trailer" diff --git a/MLEB/CleanChanges/i18n/azb.json b/MLEB/CleanChanges/i18n/azb.json index be51f28e..93af7996 100644 --- a/MLEB/CleanChanges/i18n/azb.json +++ b/MLEB/CleanChanges/i18n/azb.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Ebrahimi-amir", - "පසිඳු කාවින්ද", - "Koroğlu" + "Koroğlu", + "පසිඳු කාවින්ද" ] }, "cleanchanges-language": "دیل:", diff --git a/MLEB/CleanChanges/i18n/diq.json b/MLEB/CleanChanges/i18n/diq.json index 44269051..6f2307a0 100644 --- a/MLEB/CleanChanges/i18n/diq.json +++ b/MLEB/CleanChanges/i18n/diq.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Erdemaslancan", - "Mirzali", - "Kumkumuk" + "Kumkumuk", + "Mirzali" ] }, "cleanchanges-changerightslink": "Gruban bıvurnê", diff --git a/MLEB/CleanChanges/i18n/es.json b/MLEB/CleanChanges/i18n/es.json index 3a194e40..9262e2a5 100644 --- a/MLEB/CleanChanges/i18n/es.json +++ b/MLEB/CleanChanges/i18n/es.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Sanbec", - "Fitoschido" + "Fitoschido", + "Sanbec" ] }, "cleanchanges-changerightslink": "cambiar grupos", diff --git a/MLEB/CleanChanges/i18n/fr.json b/MLEB/CleanChanges/i18n/fr.json index 5de13026..7127f415 100644 --- a/MLEB/CleanChanges/i18n/fr.json +++ b/MLEB/CleanChanges/i18n/fr.json @@ -3,15 +3,16 @@ "authors": [ "Grondin", "IAlex", + "Thibaut120094", "Verdy p" ] }, - "cleanchanges-changerightslink": "changer les groupes", + "cleanchanges-changerightslink": "changer de groupes", "cleanchanges-desc": "Affichage plus compact de la [[Special:RecentChanges|liste des modifications récentes]]", - "cleanchanges-language": "Langue :", + "cleanchanges-language": "Langue :", "cleanchanges-language-na": "Tous", - "cleanchanges-users": "Utilisateurs (sép. par |) :", - "cleanchanges-showuserlinks": "Afficher les liens de cet utilisateur", + "cleanchanges-users": "Utilisateurs (sép. par « | ») :", + "cleanchanges-showuserlinks": "Afficher les liens d’utilisateur", "cleanchanges-rcinfo-2": "($1 ; $2)", "cleanchanges-rcinfo-3": "($1 ; $2 ; $3)" } diff --git a/MLEB/CleanChanges/i18n/fy.json b/MLEB/CleanChanges/i18n/fy.json index 5f356597..0c412e3d 100644 --- a/MLEB/CleanChanges/i18n/fy.json +++ b/MLEB/CleanChanges/i18n/fy.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "PiefPafPier", "SK-luuut", "Snakesteuben" ] @@ -9,6 +10,6 @@ "cleanchanges-desc": "Kompaktere werjefte fan de [[Special:RecentChanges|list mei lêste feroarings]]", "cleanchanges-language": "Taal:", "cleanchanges-language-na": "Alle talen", - "cleanchanges-users": "Meidoggers (Skiedingsteken: |):", + "cleanchanges-users": "Meidoggers (Skaat mei |):", "cleanchanges-showuserlinks": "Meidoggerskeppelingen sjen litte" } diff --git a/MLEB/CleanChanges/i18n/gl.json b/MLEB/CleanChanges/i18n/gl.json index 2b84982c..360450b1 100644 --- a/MLEB/CleanChanges/i18n/gl.json +++ b/MLEB/CleanChanges/i18n/gl.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Alma", - "Toliño", - "Elisardojm" + "Elisardojm", + "Toliño" ] }, "cleanchanges-changerightslink": "mudar grupos", diff --git a/MLEB/CleanChanges/i18n/ha.json b/MLEB/CleanChanges/i18n/ha.json index 44b34d35..1a1da794 100644 --- a/MLEB/CleanChanges/i18n/ha.json +++ b/MLEB/CleanChanges/i18n/ha.json @@ -1,4 +1,6 @@ { - "@metadata": [], + "@metadata": { + "authors": [] + }, "cleanchanges-language-na": "Duka" } diff --git a/MLEB/CleanChanges/i18n/hi.json b/MLEB/CleanChanges/i18n/hi.json index 4228c788..ec66180e 100644 --- a/MLEB/CleanChanges/i18n/hi.json +++ b/MLEB/CleanChanges/i18n/hi.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Ansumang", - "Kaustubh", - "Innocentbunny" + "Innocentbunny", + "Kaustubh" ] }, "cleanchanges-changerightslink": "ग्रुप बदलें", diff --git a/MLEB/CleanChanges/i18n/hr.json b/MLEB/CleanChanges/i18n/hr.json index bd12157a..f1c5267e 100644 --- a/MLEB/CleanChanges/i18n/hr.json +++ b/MLEB/CleanChanges/i18n/hr.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Ex13", - "Bugoslav" + "Bugoslav", + "Ex13" ] }, "cleanchanges-changerightslink": "promijeni skupine", diff --git a/MLEB/CleanChanges/i18n/io.json b/MLEB/CleanChanges/i18n/io.json index 29f1df9c..d3dd7b8e 100644 --- a/MLEB/CleanChanges/i18n/io.json +++ b/MLEB/CleanChanges/i18n/io.json @@ -5,5 +5,6 @@ ] }, "cleanchanges-language": "Linguo:", + "cleanchanges-language-na": "Omni", "cleanchanges-users": "Uzeri (Separita per: |):" } diff --git a/MLEB/CleanChanges/i18n/ja.json b/MLEB/CleanChanges/i18n/ja.json index d5e47024..0ac986dc 100644 --- a/MLEB/CleanChanges/i18n/ja.json +++ b/MLEB/CleanChanges/i18n/ja.json @@ -4,7 +4,8 @@ "Aotake", "Fryed-peach", "JtFuruhata", - "Shirayuki" + "Shirayuki", + "神樂坂秀吉" ] }, "cleanchanges-changerightslink": "権限を変更", diff --git a/MLEB/CleanChanges/i18n/ka.json b/MLEB/CleanChanges/i18n/ka.json index 39e99111..f2c3a557 100644 --- a/MLEB/CleanChanges/i18n/ka.json +++ b/MLEB/CleanChanges/i18n/ka.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "David1010", - "BRUTE" + "BRUTE", + "David1010" ] }, "cleanchanges-changerightslink": "ჯგუფების ცვლილება", diff --git a/MLEB/CleanChanges/i18n/krc.json b/MLEB/CleanChanges/i18n/krc.json index f4e189d3..55dc02cc 100644 --- a/MLEB/CleanChanges/i18n/krc.json +++ b/MLEB/CleanChanges/i18n/krc.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Iltever", - "Ernác" + "Ernác", + "Iltever" ] }, "cleanchanges-language": "Тил:" diff --git a/MLEB/CleanChanges/i18n/lij.json b/MLEB/CleanChanges/i18n/lij.json index 16ef42a9..e6ea1988 100644 --- a/MLEB/CleanChanges/i18n/lij.json +++ b/MLEB/CleanChanges/i18n/lij.json @@ -9,5 +9,5 @@ "cleanchanges-language": "Lengua:", "cleanchanges-language-na": "Tutti", "cleanchanges-users": "Utenti (Sep: |):", - "cleanchanges-showuserlinks": "Mostra collegamenti utente" + "cleanchanges-showuserlinks": "Mostra conlegimenti utente" } diff --git a/MLEB/CleanChanges/i18n/nah.json b/MLEB/CleanChanges/i18n/nah.json index 8780b5aa..9b590cda 100644 --- a/MLEB/CleanChanges/i18n/nah.json +++ b/MLEB/CleanChanges/i18n/nah.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Akapochtli", "Fluence", - "Teòtlalili", - "Akapochtli" + "Teòtlalili" ] }, "cleanchanges-changerightslink": "ticpatlaz tlatlacentlaliliztli", diff --git a/MLEB/CleanChanges/i18n/nb.json b/MLEB/CleanChanges/i18n/nb.json index 21246324..229f18c5 100644 --- a/MLEB/CleanChanges/i18n/nb.json +++ b/MLEB/CleanChanges/i18n/nb.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Nghtwlkr", - "Jon Harald Søby" + "Jon Harald Søby", + "Nghtwlkr" ] }, "cleanchanges-changerightslink": "endre grupper", diff --git a/MLEB/CleanChanges/i18n/pl.json b/MLEB/CleanChanges/i18n/pl.json index 6c13e6b0..142bab34 100644 --- a/MLEB/CleanChanges/i18n/pl.json +++ b/MLEB/CleanChanges/i18n/pl.json @@ -5,9 +5,10 @@ "Leinad", "Masti", "McMonster", + "Rail", + "Railfail536", "Sp5uhe", - "Wpedzich", - "Railfail536" + "Wpedzich" ] }, "cleanchanges-changerightslink": "zmień grupy", diff --git a/MLEB/CleanChanges/i18n/ps.json b/MLEB/CleanChanges/i18n/ps.json index a481dbbf..77f12757 100644 --- a/MLEB/CleanChanges/i18n/ps.json +++ b/MLEB/CleanChanges/i18n/ps.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Ahmed-Najib-Biabani-Ibrahimkhel", - "Baloch Khan", - "Amjad Khan" + "Amjad Khan", + "Baloch Khan" ] }, "cleanchanges-changerightslink": "ډلې بدلول", diff --git a/MLEB/CleanChanges/i18n/rif.json b/MLEB/CleanChanges/i18n/rif.json index 0ce0c51c..1f90d354 100644 --- a/MLEB/CleanChanges/i18n/rif.json +++ b/MLEB/CleanChanges/i18n/rif.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Amara-Amaziɣ", "Aryaz", - "Jose77", - "Amara-Amaziɣ" + "Jose77" ] }, "cleanchanges-language": "ⵜⵓⵜⵍⴰⵢⵜ:", diff --git a/MLEB/CleanChanges/i18n/ru.json b/MLEB/CleanChanges/i18n/ru.json index d62d35c2..dee42d8a 100644 --- a/MLEB/CleanChanges/i18n/ru.json +++ b/MLEB/CleanChanges/i18n/ru.json @@ -3,8 +3,8 @@ "authors": [ "Ferrer", "Innv", - "Александр Сигачёв", - "RDmitriyS" + "RDmitriyS", + "Александр Сигачёв" ] }, "cleanchanges-changerightslink": "изменить группы", diff --git a/MLEB/CleanChanges/i18n/sh.json b/MLEB/CleanChanges/i18n/sh.json new file mode 100644 index 00000000..f72a43eb --- /dev/null +++ b/MLEB/CleanChanges/i18n/sh.json @@ -0,0 +1,13 @@ +{ + "@metadata": { + "authors": [ + "Vlad5250" + ] + }, + "cleanchanges-changerightslink": "promijena grupa", + "cleanchanges-desc": "Kompaktniji prikaz [[Special:RecentChanges|nedavnih promjena]]", + "cleanchanges-language": "Jezik:", + "cleanchanges-language-na": "Svi", + "cleanchanges-users": "Korisnici (razdjeljivač: |):", + "cleanchanges-showuserlinks": "Prikaži korisničke linkove" +} diff --git a/MLEB/CleanChanges/i18n/th.json b/MLEB/CleanChanges/i18n/th.json index 5b6b64b5..2f1ccf85 100644 --- a/MLEB/CleanChanges/i18n/th.json +++ b/MLEB/CleanChanges/i18n/th.json @@ -1,8 +1,14 @@ { "@metadata": { "authors": [ + "Aefgh39622", "Octahedron80" ] }, - "cleanchanges-language-na": "ทั้งหมด" + "cleanchanges-changerightslink": "เปลี่ยนแปลงกลุ่ม", + "cleanchanges-desc": "การแสดงผล[[Special:RecentChanges|รายการเปลี่ยนแปลงล่าสุด]]ที่กะทัดรัดมากขึ้น", + "cleanchanges-language": "ภาษา:", + "cleanchanges-language-na": "ทั้งหมด", + "cleanchanges-users": "ผู้ใช้ (คั่นด้วย: |):", + "cleanchanges-showuserlinks": "แสดงลิงก์ผู้ใช้" } diff --git a/MLEB/CleanChanges/i18n/tt-cyrl.json b/MLEB/CleanChanges/i18n/tt-cyrl.json index 91a659da..62c37a8f 100644 --- a/MLEB/CleanChanges/i18n/tt-cyrl.json +++ b/MLEB/CleanChanges/i18n/tt-cyrl.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Ерней", "Рашат Якупов" ] }, @@ -8,6 +9,6 @@ "cleanchanges-desc": "[[Special:RecentChanges|Баягы төзәтмәләрнең]] тыгызлау", "cleanchanges-language": "Тел:", "cleanchanges-language-na": "Барысы", - "cleanchanges-users": "Катнашучылар (бүлү: |):", - "cleanchanges-showuserlinks": "Катнашучылар сылтамаларын күрсәтү" + "cleanchanges-users": "Кулланучылар (бүлүче: |):", + "cleanchanges-showuserlinks": "Кулланучылар сылтамаларын күрсәтү" } diff --git a/MLEB/CleanChanges/i18n/uk.json b/MLEB/CleanChanges/i18n/uk.json index 0616ab99..50ed3482 100644 --- a/MLEB/CleanChanges/i18n/uk.json +++ b/MLEB/CleanChanges/i18n/uk.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Ahonc", - "Prima klasy4na", - "Piramidion" + "Piramidion", + "Prima klasy4na" ] }, "cleanchanges-changerightslink": "змінити групи", diff --git a/MLEB/CleanChanges/i18n/vi.json b/MLEB/CleanChanges/i18n/vi.json index 0f6c38e1..823a7676 100644 --- a/MLEB/CleanChanges/i18n/vi.json +++ b/MLEB/CleanChanges/i18n/vi.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Minh Nguyen", + "Phjtieudoc", "Vinhtantran" ] }, @@ -9,6 +10,6 @@ "cleanchanges-desc": "Hiển thị [[Special:RecentChanges|danh sách thay đổi gần đây]] ngắn gọn hơn", "cleanchanges-language": "Ngôn ngữ:", "cleanchanges-language-na": "Tất cả", - "cleanchanges-users": "Các thành viên (Phân cách: |):", + "cleanchanges-users": "Thành viên (Phân cách: |):", "cleanchanges-showuserlinks": "Hiện liên kết người dùng" } diff --git a/MLEB/CleanChanges/i18n/zh-hans.json b/MLEB/CleanChanges/i18n/zh-hans.json index a6b1dd6a..384a291e 100644 --- a/MLEB/CleanChanges/i18n/zh-hans.json +++ b/MLEB/CleanChanges/i18n/zh-hans.json @@ -4,8 +4,8 @@ "Chenxiaoqino", "Chenzw", "Liangent", - "Xiaomingyan", - "Liuxinyu970226" + "Liuxinyu970226", + "Xiaomingyan" ] }, "cleanchanges-changerightslink": "更改群组", diff --git a/MLEB/CleanChanges/i18n/zh-hant.json b/MLEB/CleanChanges/i18n/zh-hant.json index 3d55b40b..aa947e68 100644 --- a/MLEB/CleanChanges/i18n/zh-hant.json +++ b/MLEB/CleanChanges/i18n/zh-hant.json @@ -1,17 +1,19 @@ { "@metadata": { "authors": [ + "A2093064", "Alexsh", - "Liangent", - "Mark85296341", "Cwlin0416", + "Kly", "LNDDYL", + "Liangent", + "Mark85296341", "Sanmosa", - "A2093064" + "Xiplus" ] }, "cleanchanges-changerightslink": "變更群組", - "cleanchanges-desc": "更精簡的顯示 [[Special:RecentChanges|最近變更清單]]", + "cleanchanges-desc": "更精簡的顯示[[Special:RecentChanges|最近變更清單]]", "cleanchanges-language": "語言:", "cleanchanges-language-na": "全部", "cleanchanges-users": "使用者 (分隔: |):", diff --git a/MLEB/CleanChanges/includes/CCFilters.php b/MLEB/CleanChanges/includes/CCFilters.php new file mode 100644 index 00000000..477c6d91 --- /dev/null +++ b/MLEB/CleanChanges/includes/CCFilters.php @@ -0,0 +1,157 @@ +add( 'users', '' ); + $users = $wgRequest->getVal( 'users' ); + if ( $users === null ) { + return; + } + + $userArr = UserArray::newFromNames( explode( '|', $users ) ); + if ( $userArr->count() ) { + $dbr = wfGetDB( DB_REPLICA ); + if ( class_exists( 'ActorMigration' ) ) { + $conds[] = ActorMigration::newMigration() + ->getWhere( $dbr, 'rc_user', iterator_to_array( $userArr ) )['conds']; + } else { + $ids = []; + foreach ( $userArr as $user ) { + $ids[] = $user->getId(); + } + $conds['rc_user'] = $ids; + } + $opts->setValue( 'users', $users ); + } + } + + /** + * Hook: SpecialRecentChangesPanel + * @param array &$items + * @param FormOptions $opts + */ + public static function userForm( &$items, FormOptions $opts ) { + global $wgRequest, $wgCCUserFilter; + + if ( !$wgCCUserFilter ) { + return; + } + + $opts->consumeValue( 'users' ); + + $default = $wgRequest->getVal( 'users', '' ); + $items['users'] = Xml::inputLabelSep( + wfMessage( 'cleanchanges-users' )->text(), + 'users', + 'mw-users', + 40, + $default + ); + } + + /** + * Hook: ChangesListSpecialPageQuery + * @param string $name + * @param array &$tables + * @param array &$fields + * @param array &$conds + * @param array &$query_options + * @param array &$join_conds + * @param FormOptions $opts + */ + public static function trailer( + $name, + &$tables, + &$fields, + &$conds, + &$query_options, + &$join_conds, + FormOptions $opts + ) { + global $wgRequest, $wgCCTrailerFilter; + + if ( !$wgCCTrailerFilter ) { + return; + } + + $opts->add( 'trailer', '' ); + $trailer = $wgRequest->getVal( 'trailer' ); + if ( $trailer === null ) { + return; + } + + $dbr = wfGetDB( DB_REPLICA ); + $conds[] = 'rc_title ' . $dbr->buildLike( $dbr->anyString(), $trailer ); + $opts->setValue( 'trailer', $trailer ); + } + + /** + * Hook: SpecialRecentChangesPanel + * @param array &$items + * @param FormOptions $opts + */ + public static function trailerForm( &$items, FormOptions $opts ) { + /** + * @var Language $wgLang + */ + global $wgLang, $wgRequest, $wgCCTrailerFilter; + + if ( !$wgCCTrailerFilter ) { + return; + } + + $opts->consumeValue( 'trailer' ); + + $default = $wgRequest->getVal( 'trailer', '' ); + + if ( is_callable( [ 'LanguageNames', 'getNames' ] ) ) { + $languages = LanguageNames::getNames( $wgLang->getCode(), + LanguageNames::FALLBACK_NORMAL, + LanguageNames::LIST_MW + ); + } else { + $languages = Language::fetchLanguageNames( null, 'mw' ); + } + ksort( $languages ); + $options = Xml::option( wfMessage( 'cleanchanges-language-na' )->text(), '', $default === '' ); + foreach ( $languages as $code => $name ) { + $selected = ( "/$code" === $default ); + $options .= Xml::option( "$code - $name", "/$code", $selected ) . "\n"; + } + $str = + Xml::openElement( 'select', [ + 'name' => 'trailer', + 'class' => 'mw-language-selector', + 'id' => 'sp-rc-language', + ] ) . + $options . + Xml::closeElement( 'select' ); + + $items['tailer'] = [ wfMessage( 'cleanchanges-language' )->escaped(), $str ]; + } +} diff --git a/MLEB/CleanChanges/includes/NCL.php b/MLEB/CleanChanges/includes/NCL.php new file mode 100644 index 00000000..1fa5c014 --- /dev/null +++ b/MLEB/CleanChanges/includes/NCL.php @@ -0,0 +1,756 @@ +getOutput()->addModules( 'ext.cleanchanges.uls' ); + } + + if ( $wgCCFiltersOnly ) { + return true; + } + + /* allow override */ + $request = $skin->getRequest(); + if ( $request->getBool( 'cleanrc' ) ) { + $list = new NCL( $skin ); + } + if ( $request->getBool( 'newrc' ) ) { + $list = new EnhancedChangesList( $skin ); + } + if ( $request->getBool( 'oldrc' ) ) { + $list = new OldChangesList( $skin ); + } + + if ( !$list && $user->getOption( 'usenewrc' ) ) { + $list = new NCL( $skin ); + } + + if ( $list instanceof NCL ) { + $skin->getOutput()->addModules( 'ext.cleanchanges' ); + } + + /* If some list was specified, stop processing */ + return $list === null; + } + + protected static $userinfo = []; + + /** + * @param array &$vars + * @return bool + */ + public static function addScriptVariables( &$vars ) { + $vars += self::$userinfo; + return true; + } + + /** + * String that comes between page details and the user details. By default + * only larger space. + */ + protected $userSeparator = "\xc2\xa0 \xc2\xa0"; + + /** + * Text direction, true for ltr and false for rtl + */ + protected $direction = true; + + /** + * Text direction mark (LRM or RLM) + * @var string + */ + protected $dir; + + /** + * @param IContextSource|Skin $skin + */ + public function __construct( $skin ) { + $lang = $this->getLanguage(); + parent::__construct( $skin ); + $this->direction = !$lang->isRTL(); + $this->dir = $lang->getDirMark(); + } + + /** + * @return String + */ + public function beginRecentChangesList() { + parent::beginRecentChangesList(); + $dir = $this->direction ? 'ltr' : 'rtl'; + return Xml::openElement( + 'div', + [ 'style' => "direction: $dir" ] + ); + } + + /** + * @return string + */ + public function endRecentChangesList() { + return $this->recentChangesBlock() . '
'; + } + + /** + * @param RCCacheEntry|null $rc + * @return int + */ + protected function isLog( RCCacheEntry $rc = null ) { + if ( $rc && $rc->getAttribute( 'rc_type' ) == RC_LOG ) { + return 2; + } + return 0; + } + + /** + * @param RCCacheEntry $rc + * @return string + */ + protected function getLogTitle( RCCacheEntry $rc ) { + $logtype = $rc->getAttribute( 'rc_log_type' ); + $logpage = new LogPage( $logtype ); + $logname = $logpage->getName()->escaped(); + $titleObj = SpecialPage::getTitleFor( 'Log', $logtype ); + $link = Linker::link( $titleObj, $logname ); + return $this->msg( 'parentheses' )->rawParams( $link )->escaped(); + } + + /** + * Format a line for enhanced recentchange (aka with JavaScript and block of lines). + * @param RecentChange &$baseRC + * @param bool $watched + * @param int|null $linenumber + * @return string + */ + public function recentChangesLine( &$baseRC, $watched = false, $linenumber = null ) { + # Create a specialised object + $rc = RCCacheEntry::newFromParent( $baseRC ); + + // Extract most used variables + $timestamp = $rc->getAttribute( 'rc_timestamp' ); + $titleObj = $rc->getTitle(); + $rc_id = $rc->getAttribute( 'rc_id' ); + + $lang = $this->getLanguage(); + $date = $lang->date( $timestamp, /* adj */ true, /* format */ true ); + $time = $lang->time( $timestamp, /* adj */ true, /* format */ true ); + + # Should patrol-related stuff be shown? + $rc->unpatrolled = $this->showAsUnpatrolled( $rc ); + + $logEntry = $this->isLog( $rc ); + if ( $logEntry ) { + $clink = $this->getLogTitle( $rc ); + } elseif ( $rc->unpatrolled && $rc->getAttribute( 'rc_type' ) == RC_NEW ) { + # Unpatrolled new page, give rc_id in query + $clink = linker::linkKnown( + $titleObj, + null, + [], + [ 'rcid' => $rc_id ] + ); + } else { + $clink = Linker::linkKnown( $titleObj ); + } + + $rc->watched = $watched; + $rc->link = $this->maybeWatchedLink( $clink, $watched ); + $rc->timestamp = $time; + $rc->numberofWatchingusers = $baseRC->numberofWatchingusers; + + $rc->_reqCurId = [ 'curid' => $rc->getAttribute( 'rc_cur_id' ) ]; + $rc->_reqOldId = [ 'oldid' => $rc->getAttribute( 'rc_this_oldid' ) ]; + $this->makeLinks( $rc ); + + // Make user links + if ( self::isDeleted( $rc, Revision::DELETED_USER ) ) { + $rc->_user = ' ' . + $this->msg( 'rev-deleted-user' )->escaped() . + ''; + $rc->_userInfo = ''; + self::$userinfo += []; + } else { + // @phan-suppress-next-line SecurityCheck-DoubleEscaped + $rc->_user = Linker::userLink( + $rc->getAttribute( 'rc_user' ), + $rc->getAttribute( 'rc_user_text' ) + ); + $stuff = $this->userToolLinks( + $rc->getAttribute( 'rc_user' ), + $rc->getAttribute( 'rc_user_text' ) + ); + // TODO: userToolLinks can return '' + self::$userinfo += $stuff[1]; + $rc->_userInfo = $stuff[0]; + } + + if ( !$this->isLog( $rc ) ) { + $rc->_comment = $this->getComment( $rc ); + } + + $rc->_watching = $this->numberofWatchingusers( $baseRC->numberofWatchingusers ); + + # If it's a new day, add the headline and flush the cache + $ret = ''; + if ( $date !== $this->lastdate ) { + # Process current cache + $ret = $this->recentChangesBlock(); + $this->rc_cache = []; + $ret .= Xml::element( 'h4', null, $date ) . "\n"; + $this->lastdate = $date; + } + + # Put accumulated information into the cache, for later display + # Page moves go on their own line + if ( $logEntry ) { + $secureName = $this->getLogTitle( $rc ); + } else { + $secureName = $titleObj->getPrefixedDBkey(); + } + $this->rc_cache[$secureName][] = $rc; + + return $ret; + } + + /** + * @param RCCacheEntry $rc + */ + protected function makeLinks( RCCacheEntry $rc ) { + /* These will be overriden with actual links below, if applicable */ + $rc->_curLink = $this->message['cur']; + $rc->_diffLink = $this->message['diff']; + $rc->_lastLink = $this->message['last']; + $rc->_histLink = $this->message['hist']; + + if ( !$this->isLog( $rc ) ) { + # Make cur, diff and last links + $querycur = [ 'diff' => 0 ] + $rc->_reqCurId + $rc->_reqOldId; + $querydiff = [ + 'diff' => $rc->getAttribute( 'rc_this_oldid' ), + 'oldid' => $rc->getAttribute( 'rc_last_oldid' ), + 'rcid' => $rc->unpatrolled ? $rc->getAttribute( 'rc_id' ) : '', + ] + $rc->_reqCurId; + + $rc->_curLink = Linker::linkKnown( $rc->getTitle(), + $this->message['cur'], [], $querycur ); + + if ( $rc->getAttribute( 'rc_type' ) != RC_NEW ) { + $rc->_diffLink = Linker::linkKnown( $rc->getTitle(), + $this->message['diff'], [], $querydiff ); + } + + if ( $rc->getAttribute( 'rc_last_oldid' ) != 0 ) { + // This is not the first revision + $rc->_lastLink = Linker::linkKnown( $rc->getTitle(), + $this->message['last'], [], $querydiff ); + } + + $rc->_histLink = Linker::link( $rc->getTitle(), + $this->message['hist'], [], + $rc->_reqCurId + [ 'action' => 'history' ] + ); + } + } + + /** + * Enhanced RC group + * @param RCCacheEntry[] $block + * @return string + */ + protected function recentChangesBlockGroup( $block ) { + # Collate list of users + $isnew = false; + $userlinks = []; + $overrides = [ 'minor' => false, 'bot' => false ]; + $oldid = 0; + foreach ( $block as $rcObj ) { + $oldid = $rcObj->getAttribute( 'rc_last_oldid' ); + if ( $rcObj->getAttribute( 'rc_new' ) ) { + $isnew = $overrides['new'] = true; + } + $u = $rcObj->_user; + if ( !isset( $userlinks[$u] ) ) { + $userlinks[$u] = 0; + } + if ( $rcObj->unpatrolled ) { + $overrides['patrol'] = true; + } + + $userlinks[$u]++; + } + + # Main line, flags and timestamp + + $info = Xml::tags( 'code', null, + $this->getFlags( $block[0], $overrides ) . ' ' . $block[0]->timestamp ); + $rci = 'RCI' . $this->rcCacheIndex; + $rcl = 'RCL' . $this->rcCacheIndex; + $rcm = 'RCM' . $this->rcCacheIndex; + $linkAttribs = [ + 'data-mw-cleanchanges-level' => $rci, + 'data-mw-cleanchanges-other' => $rcm, + 'data-mw-cleanchanges-link' => $rcl, + 'tabindex' => '0', + 'role' => 'button', + 'class' => 'mw-cleanchanges-showblock' + ]; + $tl = + Xml::tags( 'span', [ 'id' => $rcm ], + Xml::tags( 'a', $linkAttribs, + $this->arrow( $this->direction ? 'r' : 'l' ) ) ) . + Xml::tags( 'span', [ 'id' => $rcl, 'style' => 'display: none;' ], + Xml::tags( 'a', $linkAttribs, $this->downArrow() ) ); + + $items = [ $tl . $info ]; + + # Article link + $items[] = $block[0]->link; + + $log = $this->isLog( $block[0] ); + if ( !$log ) { + # Changes + $n = count( $block ); + static $nchanges = []; + if ( !isset( $nchanges[$n] ) ) { + $nchanges[$n] = $this->msg( 'nchanges' )->numParams( $n )->escaped(); + } + + if ( !$isnew ) { + $changes = Linker::linkKnown( + $block[0]->getTitle(), + $nchanges[$n], + [], + [ + 'curid' => $block[0]->getAttribute( 'rc_cur_id' ), + 'diff' => $block[0]->getAttribute( 'rc_this_oldid' ), + 'oldid' => $oldid + ] + ); + } else { + $changes = $nchanges[$n]; + } + + $size = $this->getCharacterDifference( $block[0], $block[count( $block ) - 1] ); + $items[] = $this->changeInfo( $changes, $block[0]->_histLink, $size ); + } + + $items[] = $this->userSeparator; + + # Sort the list and convert to text + $items[] = $this->makeUserlinks( $userlinks ); + $items[] = $block[0]->_watching; + + $lines = Xml::tags( 'div', null, implode( " {$this->dir}", $items ) ) . "\n"; + + # Sub-entries + $lines .= Xml::tags( 'div', + [ 'id' => $rci, 'style' => 'display: none;' ], + $this->subEntries( $block ) + ) . "\n"; + + $this->rcCacheIndex++; + return $lines . "\n"; + } + + /** + * Generate HTML for an arrow or placeholder graphic + * @param string $dir One of '', 'd', 'l', 'r' + * @param string $alt + * @param string $title + * @return string HTML "" tag + */ + protected function arrow( $dir, $alt = '', $title = '' ) { + global $wgExtensionAssetsPath; + + return Html::element( + 'img', + [ + 'src' => "$wgExtensionAssetsPath/CleanChanges/images/Arr_$dir.png", + 'width' => 12, + 'height' => 12, + 'alt' => $alt, + 'title' => $title, + ] + ); + } + + /** + * Generate HTML for a right- or left-facing arrow, + * depending on language direction. + * @return string HTML "" tag + */ + protected function sideArrow() { + $dir = $this->getLanguage()->isRTL() ? 'l' : 'r'; + + return $this->arrow( $dir, '+', $this->msg( 'rc-enhanced-expand' )->text() ); + } + + /** + * Generate HTML for a down-facing arrow + * depending on language direction. + * @return string HTML "" tag + */ + protected function downArrow() { + return $this->arrow( 'd', '-', $this->msg( 'rc-enhanced-hide' )->text() ); + } + + /** + * Generate HTML for a spacer image + * @return string HTML "" tag + */ + protected function spacerArrow() { + return $this->arrow( '', UtfNormal\Utils::codepointToUtf8( 0xa0 ) ); // non-breaking space + } + + /** + * @param RCCacheEntry[] $block + * @return string + */ + protected function subEntries( array $block ) { + $lines = ''; + foreach ( $block as $rcObj ) { + $items = []; + $log = $this->isLog( $rcObj ); + + $time = $rcObj->timestamp; + if ( !$log ) { + $time = Linker::linkKnown( + $rcObj->getTitle(), + htmlspecialchars( $rcObj->timestamp ), + [], + /** @phan-suppress-next-line PhanTypeMismatchArgument */ + $rcObj->_reqOldId + $rcObj->_reqCurId + ); + } + + $info = $this->getFlags( $rcObj ) . ' ' . $time; + $items[] = $this->spacerArrow() . Xml::tags( 'code', null, $info ); + + if ( !$log ) { + $cur = $rcObj->_curLink; + $last = $rcObj->_lastLink; + + if ( $block[0] === $rcObj ) { + // no point diffing first to first + $cur = $this->message['cur']; + } + + $items[] = $this->changeInfo( $cur, $last, $this->getCharacterDifference( $rcObj ) ); + } + + $items[] = $this->userSeparator; + + if ( $this->isLog( $rcObj ) ) { + $items[] = $this->insertLogEntry( $rcObj ); + } else { + $items[] = $rcObj->_user; + $items[] = $rcObj->_userInfo; + $items[] = $rcObj->_comment; + } + + $lines .= '
' . implode( " {$this->dir}", $items ) . "
\n"; + } + return $lines; + } + + /** + * @param string $diff + * @param string $hist + * @param mixed $size + * @return string + */ + protected function changeInfo( $diff, $hist, $size ) { + if ( is_int( $size ) ) { + $size = $this->wrapCharacterDifference( $size ); + // FIXME: i18n: Hard coded parentheses and spaces. + return $this->msg( 'cleanchanges-rcinfo-3' )->rawParams( $diff, $hist, $size )->escaped(); + } else { + return $this->msg( 'cleanchanges-rcinfo-2' )->rawParams( $diff, $hist )->escaped(); + } + } + + /** + * Enhanced RC ungrouped line. + * @param RCCacheEntry $rcObj + * @return string a HTML formated line + */ + protected function recentChangesBlockLine( $rcObj ) { + # Flag and Timestamp + $info = $this->getFlags( $rcObj ) . ' ' . $rcObj->timestamp; + $items = [ $this->spacerArrow() . Xml::tags( 'code', null, $info ) ]; + + # Article link + $items[] = $rcObj->link; + + if ( !$this->isLog( $rcObj ) ) { + $items[] = $this->changeInfo( $rcObj->_diffLink, $rcObj->_histLink, + $this->getCharacterDifference( $rcObj ) + ); + } + + $items[] = $this->userSeparator; + + if ( $this->isLog( $rcObj ) ) { + $items[] = $this->insertLogEntry( $rcObj ); + } else { + $items[] = $rcObj->_user; + $items[] = $rcObj->_userInfo; + $items[] = $rcObj->_comment; + $items[] = $rcObj->_watching; + } + + return '
' . implode( " {$this->dir}", $items ) . "
\n"; + } + + /** + * @param RCCacheEntry $rc + * @return string + */ + public function getComment( RCCacheEntry $rc ) { + $comment = $rc->getAttribute( 'rc_comment' ); + $action = ''; + if ( $comment === '' ) { + return $action; + } elseif ( self::isDeleted( $rc, LogPage::DELETED_COMMENT ) ) { + $priviledged = $this->getUser()->isAllowed( 'deleterevision' ); + if ( $priviledged ) { + return $action . ' ' . + Linker::formatComment( $comment ) . + ''; + } + return $action . ' ' . + $this->msg( 'rev-deleted-comment' )->escaped() . + ''; + } + return $action . Linker::commentBlock( $comment, $rc->getTitle() ); + } + + /** + * Enhanced user tool links, with javascript functionality. + * @param int $userId user id, 0 for anons + * @param string $userText username + * @return array|string Either an array of html and array of messages, or '' + * [0]: html span and links to user tools + * [1]: array of escaped message strings + */ + public function userToolLinks( $userId, $userText ) { + global $wgDisableAnonTalk; + $talkable = !( $wgDisableAnonTalk && 0 == $userId ); + + /* + * Assign each different user a running id. This is used to show user tool + * links on demand with javascript, to reduce page size when one user has + * multiple changes. + * + * $linkindex is the running id, and $users contain username -> html snippet + * for javascript. + */ + + static $linkindex = 0; + $linkindex++; + + static $users = []; + $userindex = array_search( $userText, $users, true ); + if ( $userindex === false ) { + $users[] = $userText; + $userindex = count( $users ) - 1; + } + + global $wgExtensionAssetsPath; + $image = Xml::element( 'img', [ + 'src' => $wgExtensionAssetsPath . '/CleanChanges/images/showuserlinks.png', + 'alt' => $this->msg( 'cleanchanges-showuserlinks' )->text(), + 'title' => $this->msg( 'cleanchanges-showuserlinks' )->text(), + 'width' => '15', + 'height' => '11', + ] + ); + + $rci = 'RCUI' . $userindex; + $rcl = 'RCUL' . $linkindex; + $rcm = 'RCUM' . $linkindex; + $linkAttribs = [ + 'tabindex' => '0', + 'role' => 'button', + 'class' => 'mw-cleanchanges-showuserinfo', + 'data-mw-userinfo-id' => $rci, + 'data-mw-userinfo-target' => $rcl + ]; + $tl = Xml::tags( 'span', [ 'id' => $rcm ], + Xml::tags( 'a', $linkAttribs, $image ) + ); + $tl .= Xml::element( 'span', [ 'id' => $rcl ], ' ' ); + + $items = []; + if ( $talkable ) { + $items[] = Linker::userTalkLink( $userId, $userText ); + } + if ( $userId ) { + $targetPage = SpecialPage::getTitleFor( 'Contributions', $userText ); + $items[] = Linker::linkKnown( $targetPage, + $this->msg( 'contribslink' )->escaped() ); + } + if ( $this->getUser()->isAllowed( 'block' ) ) { + $items[] = Linker::blockLink( $userId, $userText ); + } + if ( $userId ) { + $userrightsPage = new UserrightsPage(); + if ( $userrightsPage->userCanChangeRights( User::newFromId( $userId ) ) ) { + $targetPage = SpecialPage::getTitleFor( 'Userrights', $userText ); + $items[] = Linker::linkKnown( $targetPage, + $this->msg( 'cleanchanges-changerightslink' )->escaped() ); + } + } + + if ( $items ) { + $msg = $this->msg( 'parentheses' ) + ->rawParams( $this->getLanguage()->pipeList( $items ) ) + ->escaped(); + $data = [ "wgUserInfo$rci" => $msg ]; + + return [ $tl, $data ]; + } else { + return ''; + } + } + + /** + * Makes aggregated list of contributors for a changes group. + * Example: [Usera; AnotherUser; ActiveUser ‎(2×); Userabc ‎(6×)] + * @param array $userlinks + * @return string + */ + protected function makeUserlinks( $userlinks ) { + /* + * User with least changes first, and fallback to alphabetical sorting if + * multiple users have same number of changes. + */ + krsort( $userlinks ); + asort( $userlinks ); + + $users = []; + foreach ( $userlinks as $userlink => $count ) { + $text = $userlink; + if ( $count > 1 ) { + $lang = $this->getLanguage(); + $count = $lang->formatNum( $count ); + $text .= "{$lang->getDirMark()}×$count"; + } + array_push( $users, $text ); + } + $text = implode( '; ', $users ); + return $this->XMLwrapper( 'changedby', "[$text]", 'span', false ); + } + + /** + * @param RCCacheEntry $rc + * @param array|null $overrides + * @return string + */ + protected function getFlags( $rc, array $overrides = null ) { + // @todo We assume all characters are of equal width, which they may be not + $map = [ + # item => field letter-or-something + 'new' => [ 'rc_new', self::flag( 'newpage' ) ], + 'minor' => [ 'rc_minor', self::flag( 'minor' ) ], + 'bot' => [ 'rc_bot', self::flag( 'bot' ) ], + ]; + + static $nothing = "\xc2\xa0"; + + $items = []; + foreach ( $map as $item => $data ) { + list( $field, $flag ) = $data; + $bool = $overrides[$item] ?? $rc->getAttribute( $field ); + $items[] = $bool ? $flag : $nothing; + } + + if ( $this->getUser()->useRCPatrol() ) { + if ( isset( $overrides['patrol'] ) ) { + $items[] = $overrides['patrol'] ? self::flag( 'unpatrolled' ) : $nothing; + } elseif ( $this->showAsUnpatrolled( $rc ) ) { + $items[] = self::flag( 'unpatrolled' ); + } else { + $items[] = $nothing; + } + } + + return implode( '', $items ); + } + + /** + * @param RCCacheEntry $new + * @param RCCacheEntry|null $old + * @return mixed + */ + protected function getCharacterDifference( $new, $old = null ) { + if ( $old === null ) { + $old = $new; + } + + $newSize = $new->getAttribute( 'rc_new_len' ); + $oldSize = $old->getAttribute( 'rc_old_len' ); + if ( $newSize === null || $oldSize === null ) { + // @todo Return null instead of string here? + return ''; + } + + return $newSize - $oldSize; + } + + /** + * @param mixed $szdiff Character difference. + * @return string + */ + public function wrapCharacterDifference( $szdiff ) { + global $wgRCChangedSizeThreshold; + static $cache = []; + if ( !isset( $cache[$szdiff] ) ) { + // @todo FIXME: Hard coded text (+). + $prefix = $szdiff > 0 ? '+' : ''; + $cache[$szdiff] = $prefix . $this->msg( 'rc-change-size', + $this->getLanguage()->formatNum( $szdiff ) + )->text(); + } + + $tag = 'span'; + if ( abs( $szdiff ) > abs( $wgRCChangedSizeThreshold ) ) { + $tag = 'strong'; + } + + if ( $szdiff === 0 ) { + return $this->XMLwrapper( 'mw-plusminus-null', $cache[$szdiff], $tag ); + } elseif ( $szdiff > 0 ) { + return $this->XMLwrapper( 'mw-plusminus-pos', $cache[$szdiff], $tag ); + } + return $this->XMLwrapper( 'mw-plusminus-neg', $cache[$szdiff], $tag ); + } + + /** + * @param string $class + * @param string $content + * @param string $tag + * @param bool $escape + * @return string + */ + protected function XMLwrapper( $class, $content, $tag = 'span', $escape = true ) { + if ( $escape ) { + return Xml::element( $tag, [ 'class' => $class ], $content ); + } + return Xml::tags( $tag, [ 'class' => $class ], $content ); + } +} diff --git a/MLEB/CleanChanges/package-lock.json b/MLEB/CleanChanges/package-lock.json new file mode 100644 index 00000000..1c7e81ab --- /dev/null +++ b/MLEB/CleanChanges/package-lock.json @@ -0,0 +1,4925 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.9.5", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "@babel/helpers": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true + }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@stylelint/postcss-css-in-js": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.1.tgz", + "integrity": "sha512-UMf2Rni3JGKi3ZwYRGMYJ5ipOA5ENJSKMtYA/pE1ZLURwdh7B5+z2r73RmWvub+N0UuH1Lo+TGfCgYwPvqpXNw==", + "dev": true, + "requires": { + "@babel/core": ">=7.9.0" + } + }, + "@stylelint/postcss-markdown": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz", + "integrity": "sha512-iDxMBWk9nB2BPi1VFQ+Dc5+XpvODBHw2n3tYpaBZuEAFQlbtF9If0Qh5LTTwSi/XwdbJ2jt+0dis3i8omyggpw==", + "dev": true, + "requires": { + "remark": "^12.0.0", + "unist-util-find-all-after": "^3.0.1" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", + "dev": true + }, + "JSV": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz", + "integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.7.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.6.tgz", + "integrity": "sha512-F7cYpbN7uVVhACZTeeIeealwdGM6wMtfWARVLTy5xmKtgVdBNJvbDRoCK3YO1orcs7gv/KwYlb3iXwu9Ug9BkQ==", + "dev": true, + "requires": { + "browserslist": "^4.11.1", + "caniuse-lite": "^1.0.30001039", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.27", + "postcss-value-parser": "^4.0.3" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001045", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001045.tgz", + "integrity": "sha512-Y8o2Iz1KPcD6FjySbk1sPpvJqchgxk/iow0DABpGyzA1UeQAuxh63Xh0Enj5/BrsYbXtCN32JmR4ZxQTCQ6E6A==", + "dev": true + }, + "ccount": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz", + "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "requires": { + "is-regexp": "^2.0.0" + } + }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "comment-parser": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.5.tgz", + "integrity": "sha512-iH9YA35ccw94nx5244GVkpyC9eVTsL71jZz6iz5w6RIf79JLF2AsXHXq9p6Oaohyl3sx5qSMnGsWUDFIAfWL4w==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "dependencies": { + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "electron-to-chromium": { + "version": "1.3.414", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.414.tgz", + "integrity": "sha512-UfxhIvED++qLwWrAq9uYVcqF8FdeV9sU2S7qhiHYFODxzXRrd1GZRl/PjITHsTEejgibcWDraD8TQqoHb1aCBQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.4.0.tgz", + "integrity": "sha512-gU+lxhlPHu45H3JkEGgYhWhkR9wLHHEXC9FbWFnTlEkbKyZKWgWRLgf61E8zWmBuI6g5xKBph9ltg3NtZMVF8g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.0", + "eslint-utils": "^2.0.0", + "eslint-visitor-keys": "^1.2.0", + "espree": "^7.1.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-config-wikimedia": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.16.2.tgz", + "integrity": "sha512-tQikCZT2k3z9UzvRDFAUOpVSwE/MEmKIUQQraFh9tgyPOmRY6fVkMONcFqdEuz8eyg2syW9MNvT2d1SGSMLfBg==", + "dev": true, + "requires": { + "eslint": "^7.2.0", + "eslint-plugin-es": "^3.0.1", + "eslint-plugin-jsdoc": "^27.1.2", + "eslint-plugin-json": "^2.1.1", + "eslint-plugin-mediawiki": "^0.2.5", + "eslint-plugin-mocha": "^7.0.1", + "eslint-plugin-no-jquery": "^2.4.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-qunit": "^4.2.0", + "eslint-plugin-vue": "^6.2.2", + "eslint-plugin-wdio": "^6.0.12" + } + }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + } + }, + "eslint-plugin-jsdoc": { + "version": "27.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-27.1.2.tgz", + "integrity": "sha512-iWrG2ZK4xrxamoMkoyzgkukdmfqWc5Ncd6K+CnwRgxrbwjQQpzmt5Kl8GB0l12R0oUK2AF+9tGFJKNGzuyz79Q==", + "dev": true, + "requires": { + "comment-parser": "^0.7.5", + "debug": "^4.1.1", + "jsdoctypeparser": "^6.1.0", + "lodash": "^4.17.15", + "regextras": "^0.7.1", + "semver": "^6.3.0", + "spdx-expression-parse": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + } + } + }, + "eslint-plugin-json": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-2.1.1.tgz", + "integrity": "sha512-Ktsab8ij33V2KFLhh4alC1FYztdmbV32DeMZYYUCZm4kKLW1s4DrleKKgtbAHSJsmshCK5QGOZtfyc2r3jCRsg==", + "dev": true, + "requires": { + "lodash": "^4.17.15", + "vscode-json-languageservice": "^3.5.1" + } + }, + "eslint-plugin-mediawiki": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.2.5.tgz", + "integrity": "sha512-Xs5G4f1EnS6+9gFWkk28nWA9xcOEPx7YZEGsMYGLelZRAF+2DmV/PigF5N5VqoOkNBpwcbXqLD8wLfkg29aF8w==", + "dev": true, + "requires": { + "eslint-plugin-vue": "^6.2.2", + "upath": "^1.2.0" + } + }, + "eslint-plugin-mocha": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-7.0.1.tgz", + "integrity": "sha512-zkQRW9UigRaayGm/pK9TD5RjccKXSgQksNtpsXbG9b6L5I+jNx7m98VUbZ4w1H1ArlNA+K7IOH+z8TscN6sOYg==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "ramda": "^0.27.0" + } + }, + "eslint-plugin-no-jquery": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.5.0.tgz", + "integrity": "sha512-RrQ380mUJJKdjgpQ/tZAJ3B3W1n3LbVmULooS2Pv5pUDcc5uVHVSJMTdUlsbvQyfo6hWP2LJ4FbOoDzENWcF7A==", + "dev": true + }, + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-qunit": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-4.2.0.tgz", + "integrity": "sha512-UibPK0fSshPTJauyitsHjACixpf+I5BEKqXi6WJ/WGhW31WwP7flSdBW8+Y9B46v05KYH6MJg/uZVIaiaHO5Cg==", + "dev": true + }, + "eslint-plugin-vue": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz", + "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==", + "dev": true, + "requires": { + "natural-compare": "^1.4.0", + "semver": "^5.6.0", + "vue-eslint-parser": "^7.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "eslint-plugin-wdio": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-6.0.12.tgz", + "integrity": "sha512-qZqcU1Z0bqrqhYM1MbwIvKQxcQEGIOEclOjcveavvLZAN4ezpXb1Ogw3xu+UK13iArregJOMI6uUt+JkFmER1A==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.1.0.tgz", + "integrity": "sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==", + "dev": true, + "requires": { + "acorn": "^7.2.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.2.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "requires": { + "clone-regexp": "^2.1.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-glob": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", + "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.7.0.tgz", + "integrity": "sha512-YOadQRnHd5q6PogvAR/x62BGituF2ufiEA6s8aavQANw5YKHERI4AREboX6KotzP8oX2klxYF2wcV/7bn1clfQ==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "requires": { + "glob": "~5.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "globby": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", + "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + } + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "grunt": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.2.1.tgz", + "integrity": "sha512-zgJjn9N56tScvRt/y0+1QA+zDBnKTrkpyeSBqQPLcZvbqTD/oyGMrdZQXmm6I3828s+FmPvxc3Xv+lgKFtudOw==", + "dev": true, + "requires": { + "dateformat": "~3.0.3", + "eventemitter2": "~0.4.13", + "exit": "~0.1.2", + "findup-sync": "~0.3.0", + "glob": "~7.1.6", + "grunt-cli": "~1.3.2", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~2.0.0", + "grunt-legacy-util": "~1.1.1", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "mkdirp": "~1.0.4", + "nopt": "~3.0.6", + "rimraf": "~3.0.2" + }, + "dependencies": { + "grunt-cli": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", + "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==", + "dev": true, + "requires": { + "grunt-known-options": "~1.1.0", + "interpret": "~1.1.0", + "liftoff": "~2.5.0", + "nopt": "~4.0.1", + "v8flags": "~3.1.1" + }, + "dependencies": { + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + } + } + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "grunt-banana-checker": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/grunt-banana-checker/-/grunt-banana-checker-0.9.0.tgz", + "integrity": "sha512-SqPiB6OazWqR8USL0NymtuT5Br3mD9WBBsM1rHC/3wIi2SrZNM6/+j9CIeuEM5oCn+AtO2Y0+rzzFyOdC9afAg==", + "dev": true + }, + "grunt-eslint": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-23.0.0.tgz", + "integrity": "sha512-QqHSAiGF08EVD7YlD4OSRWuLRaDvpsRdTptwy9WaxUXE+03mCLVA/lEaR6SHWehF7oUwIqCEjaNONeeeWlB4LQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "eslint": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "grunt-jsonlint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-jsonlint/-/grunt-jsonlint-1.1.0.tgz", + "integrity": "sha1-ox7pckCu4/NDyiY8Rb1TIGMSfbI=", + "dev": true, + "requires": { + "jsonlint": "1.6.2", + "strip-json-comments": "^2.0.0" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + } + } + }, + "grunt-known-options": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", + "dev": true + }, + "grunt-legacy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", + "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", + "dev": true, + "requires": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.5" + } + }, + "grunt-legacy-log-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", + "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", + "dev": true, + "requires": { + "chalk": "~2.4.1", + "lodash": "~4.17.10" + } + }, + "grunt-legacy-util": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", + "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", + "dev": true, + "requires": { + "async": "~1.5.2", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.10", + "underscore.string": "~3.3.4", + "which": "~1.3.0" + } + }, + "grunt-stylelint": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/grunt-stylelint/-/grunt-stylelint-0.15.0.tgz", + "integrity": "sha512-1G5kbT3Y6OtAqgIv/XErtI6ai1t1UdtQWXxUV5Gd900PQoEzu/WrBYhGNAXdb/9nAsNWNjFHQjtdXQtZcDmobA==", + "dev": true, + "requires": { + "chalk": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsdoctypeparser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-6.1.0.tgz", + "integrity": "sha512-UCQBZ3xCUBv/PLfwKAJhp6jmGOSLFNKzrotXGNgbKhWvz27wPsCsVeP7gIcHPElQw2agBmynAitXqhxR58XAmA==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonc-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.0.tgz", + "integrity": "sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA==", + "dev": true + }, + "jsonlint": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.2.tgz", + "integrity": "sha1-VzcEUIX1XrRVxosf9OvAG9UOiDA=", + "dev": true, + "requires": { + "JSV": ">= 4.0.x", + "nomnom": ">= 1.5.x" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "known-css-properties": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.18.0.tgz", + "integrity": "sha512-69AgJ1rQa7VvUsd2kpvVq+VeObDuo3zrj0CzM5Slmf6yduQFAI2kXPDQJR2IE/u6MSAUOJrwSzjg5vlz8qcMiw==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "dev": true + }, + "markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "requires": { + "repeat-string": "^1.0.0" + } + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true + }, + "mdast-util-compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "min-indent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", + "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minimist-options": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.0.2.tgz", + "integrity": "sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node-releases": { + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true + }, + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dev": true, + "requires": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "postcss-reporter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", + "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "postcss": "^7.0.7" + }, + "dependencies": { + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + } + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-sass": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "dev": true, + "requires": { + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" + } + }, + "postcss-scss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.0.0.tgz", + "integrity": "sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "ramda": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.0.tgz", + "integrity": "sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true + }, + "remark": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.0.tgz", + "integrity": "sha512-oX4lMIS0csgk8AEbzY0h2jdR0ngiCHOpwwpxjmRa5TqAkeknY+tkhjRJGZqnCmvyuWh55/0SW5WY3R3nn3PH9A==", + "dev": true, + "requires": { + "remark-parse": "^8.0.0", + "remark-stringify": "^8.0.0", + "unified": "^9.0.0" + } + }, + "remark-parse": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.1.tgz", + "integrity": "sha512-Ye/5W57tdQZWsfkuVyRq9SUWRgECHnDsMuyUMzdSKpTbNPkZeGtoYfsrkeSi4+Xyl0mhcPPddHITXPcCPHrl3w==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "remark-stringify": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.0.0.tgz", + "integrity": "sha512-cABVYVloFH+2ZI5bdqzoOmemcz/ZuhQSH6W6ZNYnLojAUUn3xtX7u+6BpnYp35qHoGr2NFBsERV14t4vCIeW8w==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^3.0.0", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "resolve": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.2.tgz", + "integrity": "sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + } + } + }, + "stringify-entities": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.0.0.tgz", + "integrity": "sha512-h7NJJIssprqlyjHT2eQt2W1F+MCcNmwPGlKb0bWEdET/3N44QN3QbUF/ueKCgAssyKRZ3Br9rQ7FcXjHr0qLHw==", + "dev": true, + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.2", + "is-hexadecimal": "^1.0.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "stylelint": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.3.2.tgz", + "integrity": "sha512-kpO3/Gz2ZY40EWUwFYYkgpzhf8ZDUyKpcui5+pS0XKJBj/EMYmZpOJoL8IFAz2yApYeg91NVy5yAjE39hDzWvQ==", + "dev": true, + "requires": { + "@stylelint/postcss-css-in-js": "^0.37.1", + "@stylelint/postcss-markdown": "^0.36.1", + "autoprefixer": "^9.7.6", + "balanced-match": "^1.0.0", + "chalk": "^4.0.0", + "cosmiconfig": "^6.0.0", + "debug": "^4.1.1", + "execall": "^2.0.0", + "file-entry-cache": "^5.0.1", + "get-stdin": "^7.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.0", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.1.4", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.18.0", + "leven": "^3.1.0", + "lodash": "^4.17.15", + "log-symbols": "^3.0.0", + "mathml-tag-names": "^2.1.3", + "meow": "^6.1.0", + "micromatch": "^4.0.2", + "normalize-selector": "^0.2.0", + "postcss": "^7.0.27", + "postcss-html": "^0.36.0", + "postcss-less": "^3.1.4", + "postcss-media-query-parser": "^0.2.3", + "postcss-reporter": "^6.0.1", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^5.4.6", + "v8-compile-cache": "^2.1.0", + "write-file-atomic": "^3.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "get-stdin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "dev": true + }, + "meow": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.0.tgz", + "integrity": "sha512-iIAoeI01v6pmSfObAAWFoITAA4GgiT45m4SmJgoxtZfvI0fyZwhV4d0lTwiUXvAKIPlma05Feb2Xngl52Mj5Cg==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.1.1", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.0.0", + "minimist-options": "^4.0.1", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.0", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.8.1", + "yargs-parser": "^18.1.1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true + } + } + }, + "stylelint-config-wikimedia": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/stylelint-config-wikimedia/-/stylelint-config-wikimedia-0.10.1.tgz", + "integrity": "sha512-R/E7xVKwDyneKmVwkNi+TqJlXZjnL5IH+bQPmfHrgwwyAekNx5GdYZ+tVjx7VBXdv/pjOr0HevVpXSQe86ZfVQ==", + "dev": true, + "requires": { + "stylelint": "13.3.2" + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-trailing-lines": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz", + "integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==", + "dev": true + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + }, + "underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "dev": true, + "requires": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } + }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dev": true, + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "unified": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.0.0.tgz", + "integrity": "sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "unist-util-find-all-after": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz", + "integrity": "sha512-0GICgc++sRJesLwEYDjFVJPJttBpVQaTNgc6Jw0Jhzvfs+jtKePEMu+uD+PqkRUrAvGQqwhpDwLGWo1PK8PDEw==", + "dev": true, + "requires": { + "unist-util-is": "^4.0.0" + } + }, + "unist-util-is": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", + "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==", + "dev": true + }, + "unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz", + "integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz", + "integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vfile": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.0.tgz", + "integrity": "sha512-BaTPalregj++64xbGK6uIlsurN3BCRNM/P2Pg8HezlGzKd1O9PrwIac6bd9Pdx2uTb0QHoioZ+rXKolbVXEgJg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-location": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.0.1.tgz", + "integrity": "sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ==", + "dev": true + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vscode-json-languageservice": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.7.0.tgz", + "integrity": "sha512-nGLqcBhTjdfkl8Dz9sYGK/ZCTjscYFoIjYw+qqkWB+vyNfM0k/AyIoT73DQvB/PArteCKjEVfQUF72GRZEDSbQ==", + "dev": true, + "requires": { + "jsonc-parser": "^2.2.1", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.15.1", + "vscode-nls": "^4.1.2", + "vscode-uri": "^2.1.2" + } + }, + "vscode-languageserver-textdocument": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", + "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==", + "dev": true + }, + "vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", + "dev": true + }, + "vscode-nls": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz", + "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==", + "dev": true + }, + "vscode-uri": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", + "dev": true + }, + "vue-eslint-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz", + "integrity": "sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.0.1", + "lodash": "^4.17.15" + }, + "dependencies": { + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "yaml": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.9.2.tgz", + "integrity": "sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.9.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + } + } +} diff --git a/MLEB/CleanChanges/package.json b/MLEB/CleanChanges/package.json index 6ce4d202..33a2892e 100644 --- a/MLEB/CleanChanges/package.json +++ b/MLEB/CleanChanges/package.json @@ -4,13 +4,12 @@ "test": "grunt test" }, "devDependencies": { - "eslint-config-wikimedia": "0.9.0", - "grunt": "1.0.3", - "grunt-banana-checker": "0.6.0", - "grunt-eslint": "21.0.0", + "eslint-config-wikimedia": "0.16.2", + "grunt": "1.2.1", + "grunt-banana-checker": "0.9.0", + "grunt-eslint": "23.0.0", "grunt-jsonlint": "1.1.0", - "grunt-stylelint": "0.10.1", - "stylelint": "9.6.0", - "stylelint-config-wikimedia": "0.5.0" + "grunt-stylelint": "0.15.0", + "stylelint-config-wikimedia": "0.10.1" } } diff --git a/MLEB/LocalisationUpdate/.eslintrc.json b/MLEB/LocalisationUpdate/.eslintrc.json new file mode 100644 index 00000000..1a97f6e1 --- /dev/null +++ b/MLEB/LocalisationUpdate/.eslintrc.json @@ -0,0 +1,7 @@ +{ + "root": true, + "extends": [ + "wikimedia/client", + "wikimedia/jquery" + ] +} diff --git a/MLEB/LocalisationUpdate/.phan/config.php b/MLEB/LocalisationUpdate/.phan/config.php new file mode 100644 index 00000000..76efd06d --- /dev/null +++ b/MLEB/LocalisationUpdate/.phan/config.php @@ -0,0 +1,3 @@ +=7.1" + }, "require-dev": { - "jakub-onderka/php-parallel-lint": "1.0.0", - "mediawiki/mediawiki-codesniffer": "19.1.0", - "jakub-onderka/php-console-highlighter": "0.3.2", - "mediawiki/minus-x": "0.3.1", - "mediawiki/mediawiki-phan-config": "0.3.0" + "mediawiki/mediawiki-codesniffer": "31.0.0", + "mediawiki/mediawiki-phan-config": "0.10.2", + "mediawiki/minus-x": "1.1.0", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0" }, "scripts": { "fix": [ - "phpcbf", - "minus-x fix ." + "minus-x fix .", + "phpcbf" ], "test": [ "parallel-lint . --exclude vendor --exclude node_modules", "phpcs -p -s", "minus-x check ." ] - }, - "extra": { - "phan-taint-check-plugin": "1.5.0" } } diff --git a/MLEB/LocalisationUpdate/extension.json b/MLEB/LocalisationUpdate/extension.json index 9eb352fd..f25a0128 100644 --- a/MLEB/LocalisationUpdate/extension.json +++ b/MLEB/LocalisationUpdate/extension.json @@ -2,12 +2,15 @@ "@note": "This file must be kept in sync with LocalisationUpdate.php", "name": "LocalisationUpdate", "namemsg": "localisationupdate-extensionname", - "version": "1.4.0 [https://www.mediawiki.org/wiki/MLEB MLEB 2019.01]", + "version": "1.4.0 [https://www.mediawiki.org/wiki/MLEB MLEB 2020.07]", "author": [ "Tom Maaswinkel", "Niklas Laxström", "Roan Kattouw" ], + "requires": { + "MediaWiki": ">= 1.31.0" + }, "url": "https://www.mediawiki.org/wiki/Extension:LocalisationUpdate", "descriptionmsg": "localisationupdate-desc", "license-name": "GPL-2.0-or-later", @@ -17,39 +20,34 @@ "i18n" ] }, - "AutoloadClasses": { - "LocalisationUpdate": "includes/LocalisationUpdate.php", - "LocalisationUpdate\\Updater": "includes/Updater.php", - "QuickArrayReader": "includes/QuickArrayReader.php", - "LocalisationUpdate\\Fetcher": "includes/fetcher/Fetcher.php", - "LocalisationUpdate\\FetcherFactory": "includes/fetcher/FetcherFactory.php", - "LocalisationUpdate\\FileSystemFetcher": "includes/fetcher/FileSystemFetcher.php", - "LocalisationUpdate\\GitHubFetcher": "includes/fetcher/GitHubFetcher.php", - "LocalisationUpdate\\HttpFetcher": "includes/fetcher/HttpFetcher.php", - "LocalisationUpdate\\Finder": "includes/finder/Finder.php", - "LocalisationUpdate\\JSONReader": "includes/reader/JSONReader.php", - "LocalisationUpdate\\PHPReader": "includes/reader/PHPReader.php", - "LocalisationUpdate\\Reader": "includes/reader/Reader.php", - "LocalisationUpdate\\ReaderFactory": "includes/reader/ReaderFactory.php" + "AutoloadNamespaces": { + "LocalisationUpdate\\": "includes/" }, "Hooks": { - "LocalisationCacheRecache": [ - "LocalisationUpdate::onRecache" - ], - "LocalisationCacheRecacheFallback": [ - "LocalisationUpdate::onRecacheFallback" - ] + "LocalisationCacheRecache": "LocalisationUpdate\\LocalisationUpdate::onRecache", + "LocalisationCacheRecacheFallback": "LocalisationUpdate\\LocalisationUpdate::onRecacheFallback" }, "config": { - "LocalisationUpdateDirectory": false, - "LocalisationUpdateRepository": "github", + "LocalisationUpdateDirectory": { + "value": false + }, + "LocalisationUpdateRepository": { + "value": "github" + }, "LocalisationUpdateRepositories": { - "github": { - "mediawiki": "https://raw.github.com/wikimedia/mediawiki/master/%PATH%", - "extension": "https://raw.github.com/wikimedia/mediawiki-extensions-%NAME%/master/%PATH%", - "skin": "https://raw.github.com/wikimedia/mediawiki-skins-%NAME%/master/%PATH%" + "value": { + "github": { + "mediawiki": "https://raw.github.com/wikimedia/mediawiki/master/%PATH%", + "extension": "https://raw.github.com/wikimedia/mediawiki-extensions-%NAME%/master/%PATH%", + "skin": "https://raw.github.com/wikimedia/mediawiki-skins-%NAME%/master/%PATH%" + } + } + }, + "LocalisationUpdateHttpRequestOptions": { + "value": { + "followRedirects": true } } }, - "manifest_version": 1 + "manifest_version": 2 } \ No newline at end of file diff --git a/MLEB/LocalisationUpdate/i18n/ca.json b/MLEB/LocalisationUpdate/i18n/ca.json index 4b4ac0af..2165cdeb 100644 --- a/MLEB/LocalisationUpdate/i18n/ca.json +++ b/MLEB/LocalisationUpdate/i18n/ca.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Paucabot", - "Fitoschido" + "Fitoschido", + "Paucabot" ] }, "localisationupdate-desc": "Manté els missatges traduïts tan actualitzats com sigui possible" diff --git a/MLEB/LocalisationUpdate/i18n/de.json b/MLEB/LocalisationUpdate/i18n/de.json index 98f9dc14..0d5d7877 100644 --- a/MLEB/LocalisationUpdate/i18n/de.json +++ b/MLEB/LocalisationUpdate/i18n/de.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Kghbln", - "Purodha", - "Metalhead64" + "Metalhead64", + "Purodha" ] }, "localisationupdate-extensionname": "LocalisationUpdate", diff --git a/MLEB/LocalisationUpdate/i18n/fa.json b/MLEB/LocalisationUpdate/i18n/fa.json index ae1a2a27..0f6ac0bb 100644 --- a/MLEB/LocalisationUpdate/i18n/fa.json +++ b/MLEB/LocalisationUpdate/i18n/fa.json @@ -1,8 +1,9 @@ { "@metadata": { "authors": [ + "FarsiNevis", "ZxxZxxZ" ] }, - "localisationupdate-desc": "پیغام‌های محلی‌سازی‌شده را تا جای ممکن به‌روز نگه می‌دارد" + "localisationupdate-desc": "پیغام‌های محلی‌سازی‌شده را تا جای ممکن روزآمد نگه می‌دارد" } diff --git a/MLEB/LocalisationUpdate/i18n/nb.json b/MLEB/LocalisationUpdate/i18n/nb.json index e9db5be1..b7beeec9 100644 --- a/MLEB/LocalisationUpdate/i18n/nb.json +++ b/MLEB/LocalisationUpdate/i18n/nb.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Nghtwlkr", - "Jon Harald Søby" + "Jon Harald Søby", + "Nghtwlkr" ] }, "localisationupdate-extensionname": "LocalisationUpdate", diff --git a/MLEB/LocalisationUpdate/i18n/pl.json b/MLEB/LocalisationUpdate/i18n/pl.json index 2ed878ea..c84cc4b6 100644 --- a/MLEB/LocalisationUpdate/i18n/pl.json +++ b/MLEB/LocalisationUpdate/i18n/pl.json @@ -1,8 +1,9 @@ { "@metadata": { "authors": [ + "Jdx", "Sp5uhe" ] }, - "localisationupdate-desc": "Uaktualnia lokalne komunikaty w miarę możliwości na bieżąco" + "localisationupdate-desc": "Uaktualnia zlokalizowane komunikaty oprogramowania MediaWiki, w miarę możliwości na bieżąco" } diff --git a/MLEB/LocalisationUpdate/i18n/sr-ec.json b/MLEB/LocalisationUpdate/i18n/sr-ec.json index 599334a9..a91a9ae2 100644 --- a/MLEB/LocalisationUpdate/i18n/sr-ec.json +++ b/MLEB/LocalisationUpdate/i18n/sr-ec.json @@ -1,9 +1,10 @@ { "@metadata": { "authors": [ - "Михајло Анђелковић", - "BadDog" + "BadDog", + "Михајло Анђелковић" ] }, - "localisationupdate-desc": "Задржава локализоване поруке ажурираним колико год је то могуће" + "localisationupdate-extensionname": "Ажурирање локализације", + "localisationupdate-desc": "Ажурира локализоване поруке колико је год могуће" } diff --git a/MLEB/LocalisationUpdate/i18n/zh-hant.json b/MLEB/LocalisationUpdate/i18n/zh-hant.json index 511b9790..a2b3a30e 100644 --- a/MLEB/LocalisationUpdate/i18n/zh-hant.json +++ b/MLEB/LocalisationUpdate/i18n/zh-hant.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "LNDDYL", "Mark85296341", - "Tom Maaswinkel", - "LNDDYL" + "Tom Maaswinkel" ] }, "localisationupdate-desc": "將在地化的資訊盡可能保持最新" diff --git a/MLEB/LocalisationUpdate/includes/Fetcher/Fetcher.php b/MLEB/LocalisationUpdate/includes/Fetcher/Fetcher.php new file mode 100644 index 00000000..c9d38155 --- /dev/null +++ b/MLEB/LocalisationUpdate/includes/Fetcher/Fetcher.php @@ -0,0 +1,30 @@ +[^/]+)/(?P[^/]+)/(?P[^/]+)/(?P.+)/.+$~"; + preg_match( $p, $pattern, $m ); + + $apiURL = "https://api.github.com/repos/{$m['org']}/{$m['repo']}/contents/{$m['path']}"; + $json = \Http::get( $apiURL, $wgLocalisationUpdateHttpRequestOptions, __METHOD__ ); + if ( !$json ) { + throw new \Exception( "Unable to get directory listing for {$m['org']}/{$m['repo']}" ); + } + + $files = []; + $json = \FormatJson::decode( $json, true ); + foreach ( $json as $fileinfo ) { + $fileurl = dirname( $pattern ) . '/' . $fileinfo['name']; + $file = $this->fetchFile( $fileurl ); + if ( $file ) { + $files[$fileurl] = $file; + } + } + return $files; + } +} diff --git a/MLEB/LocalisationUpdate/includes/Fetcher/HttpFetcher.php b/MLEB/LocalisationUpdate/includes/Fetcher/HttpFetcher.php new file mode 100644 index 00000000..80c1394e --- /dev/null +++ b/MLEB/LocalisationUpdate/includes/Fetcher/HttpFetcher.php @@ -0,0 +1,45 @@ +fetchFile( $url ); + if ( $file ) { + $files[$url] = $file; + } + } + + return $files; + } +} diff --git a/MLEB/LocalisationUpdate/includes/Finder.php b/MLEB/LocalisationUpdate/includes/Finder.php new file mode 100644 index 00000000..74be5787 --- /dev/null +++ b/MLEB/LocalisationUpdate/includes/Finder.php @@ -0,0 +1,90 @@ +json = $json; + $this->core = $core; + } + + /** + * @return array[] + */ + public function getComponents() { + $components = []; + + foreach ( $this->json as $key => $value ) { + foreach ( (array)$value as $subkey => $subvalue ) { + // Mediawiki core files + $matches = []; + if ( preg_match( '~/(?P(?:includes|languages|resources)/.*)$~', $subvalue, $matches ) ) { + $components["$key-$subkey"] = [ + 'repo' => 'mediawiki', + 'orig' => "file://$value/*.json", + 'path' => "{$matches['path']}/*.json", + ]; + continue; + } + + $item = $this->getItem( 'extensions', $subvalue ); + if ( $item !== null ) { + $item['repo'] = 'extension'; + $components["$key-$subkey"] = $item; + continue; + } + + $item = $this->getItem( 'skins', $subvalue ); + if ( $item !== null ) { + $item['repo'] = 'skin'; + $components["$key-$subkey"] = $item; + continue; + } + } + } + + return $components; + } + + /** + * @param string $dir extensions or skins + * @param string $subvalue + * @return array|null + */ + private function getItem( $dir, $subvalue ) { + // This ignores magic, alias etc. non message files + $matches = []; + if ( !preg_match( "~/$dir/(?P[^/]+)/(?P.*)$~", $subvalue, $matches ) ) { + return null; + } + + return [ + 'name' => $matches['name'], + 'orig' => "file://$subvalue/*.json", + 'path' => "{$matches['path']}/*.json", + ]; + } +} diff --git a/MLEB/LocalisationUpdate/includes/LocalisationUpdate.php b/MLEB/LocalisationUpdate/includes/LocalisationUpdate.php index a0b5f044..87e60f62 100644 --- a/MLEB/LocalisationUpdate/includes/LocalisationUpdate.php +++ b/MLEB/LocalisationUpdate/includes/LocalisationUpdate.php @@ -1,5 +1,11 @@ true, - T_DNUMBER => true, - T_STRING => true, - T_CONSTANT_ENCAPSED_STRING => true, - ]; - $skipTypes = [ - T_WHITESPACE => true, - T_COMMENT => true, - T_DOC_COMMENT => true, - ]; - $tokens = token_get_all( $string ); - $count = count( $tokens ); - for ( $i = 0; $i < $count; ) { - while ( isset( $skipTypes[$tokens[$i][0]] ) ) { - $i++; - } - switch ( $tokens[$i][0] ) { - case T_OPEN_TAG: - $i++; - break; - case T_VARIABLE: - // '$messages' -> 'messages' - $varname = trim( substr( $tokens[$i][1], 1 ) ); - $varindex = null; - - while ( isset( $skipTypes[$tokens[++$i][0]] ) ) { - } - - if ( $tokens[$i] === '[' ) { - while ( isset( $skipTypes[$tokens[++$i][0]] ) ) { - } - - if ( isset( $scalarTypes[$tokens[$i][0]] ) ) { - $varindex = $this->parseScalar( $tokens[$i] ); - } else { - throw $this->except( $tokens[$i], 'scalar index' ); - } - while ( isset( $skipTypes[$tokens[++$i][0]] ) ) { - } - - if ( $tokens[$i] !== ']' ) { - throw $this->except( $tokens[$i], ']' ); - } - while ( isset( $skipTypes[$tokens[++$i][0]] ) ) { - } - } - - if ( $tokens[$i] !== '=' ) { - throw $this->except( $tokens[$i], '=' ); - } - while ( isset( $skipTypes[$tokens[++$i][0]] ) ) { - } - - if ( isset( $scalarTypes[$tokens[$i][0]] ) ) { - $buildval = $this->parseScalar( $tokens[$i] ); - } elseif ( $tokens[$i][0] === T_ARRAY ) { - while ( isset( $skipTypes[$tokens[++$i][0]] ) ) { - } - if ( $tokens[$i] !== '(' ) { - throw $this->except( $tokens[$i], '(' ); - } - $buildval = []; - do { - while ( isset( $skipTypes[$tokens[++$i][0]] ) ) { - } - - if ( $tokens[$i] === ')' ) { - break; - } - if ( isset( $scalarTypes[$tokens[$i][0]] ) ) { - $key = $this->parseScalar( $tokens[$i] ); - } - while ( isset( $skipTypes[$tokens[++$i][0]] ) ) { - } - - if ( $tokens[$i][0] !== T_DOUBLE_ARROW ) { - throw $this->except( $tokens[$i], '=>' ); - } - while ( isset( $skipTypes[$tokens[++$i][0]] ) ) { - } - - if ( isset( $scalarTypes[$tokens[$i][0]] ) ) { - $val = $this->parseScalar( $tokens[$i] ); - } - wfSuppressWarnings(); - $buildval[$key] = $val; - wfRestoreWarnings(); - while ( isset( $skipTypes[$tokens[++$i][0]] ) ) { - } - - if ( $tokens[$i] === ',' ) { - continue; - } elseif ( $tokens[$i] === ')' ) { - break; - } else { - throw $this->except( $tokens[$i], ', or )' ); - } - } while ( true ); - } else { - throw $this->except( $tokens[$i], 'scalar or array' ); - } - if ( is_null( $varindex ) ) { - $this->vars[$varname] = $buildval; - } else { - wfSuppressWarnings(); - $this->vars[$varname][$varindex] = $buildval; - wfRestoreWarnings(); - } - while ( isset( $skipTypes[$tokens[++$i][0]] ) ) { - } - if ( $tokens[$i] !== ';' ) { - throw $this->except( $tokens[$i], ';' ); - } - $i++; - break; - default: - throw $this->except( $tokens[$i], 'open tag, whitespace, or variable.' ); - } - } - } - - /** - * @param string $got - * @param string $expected - * @return Exception - */ - private function except( $got, $expected ) { - if ( is_array( $got ) ) { - $got = token_name( $got[0] ) . " ('" . $got[1] . "')"; - } else { - $got = "'" . $got . "'"; - } - - return new Exception( "Expected $expected, got $got" ); - } - - /** - * Parse a scalar value in PHP - * - * @param string $token - * - * @return mixed Parsed value - */ - private function parseScalar( $token ) { - if ( is_array( $token ) ) { - $str = $token[1]; - } else { - $str = $token; - } - if ( $str !== '' && $str[0] == '\'' ) { - // Single-quoted string - // @fixme trim() call is due to mystery bug where whitespace gets - // appended to the token; without it we ended up reading in the - // extra quote on the end! - return strtr( substr( trim( $str ), 1, -1 ), - [ '\\\'' => '\'', '\\\\' => '\\' ] ); - } - - wfSuppressWarnings(); - if ( $str !== '' && $str[0] == '"' ) { - // Double-quoted string - // @fixme trim() call is due to mystery bug where whitespace gets - // appended to the token; without it we ended up reading in the - // extra quote on the end! - wfRestoreWarnings(); - return stripcslashes( substr( trim( $str ), 1, -1 ) ); - } - wfRestoreWarnings(); - - if ( substr( $str, 0, 4 ) === 'true' ) { - return true; - } - - if ( substr( $str, 0, 5 ) === 'false' ) { - return false; - } - - if ( substr( $str, 0, 4 ) === 'null' ) { - return null; - } - - // Must be some kind of numeric value, so let PHP's weak typing - // be useful for a change - return $str; - } - - /** - * @param string $varname - * @return null|string|array - */ - public function getVar( $varname ) { - if ( isset( $this->vars[$varname] ) ) { - return $this->vars[$varname]; - } else { - return null; - } - } -} diff --git a/MLEB/LocalisationUpdate/includes/Reader/JSONReader.php b/MLEB/LocalisationUpdate/includes/Reader/JSONReader.php new file mode 100644 index 00000000..6d27eed1 --- /dev/null +++ b/MLEB/LocalisationUpdate/includes/Reader/JSONReader.php @@ -0,0 +1,37 @@ +code = $code; + } + + /** + * @param string $contents + * + * @return array + */ + public function parse( $contents ) { + $messages = \FormatJson::decode( $contents, true ); + unset( $messages['@metadata'] ); + + if ( $this->code ) { + return [ $this->code => $messages ]; + } + + // Assuming that the array is keyed by language codes + return $messages; + } +} diff --git a/MLEB/LocalisationUpdate/includes/Reader/Reader.php b/MLEB/LocalisationUpdate/includes/Reader/Reader.php new file mode 100644 index 00000000..1898b1bf --- /dev/null +++ b/MLEB/LocalisationUpdate/includes/Reader/Reader.php @@ -0,0 +1,21 @@ + array( 'key' => 'value' ) ); + * @param string $contents File contents as a string. + * @return array + */ + public function parse( $contents ); +} diff --git a/MLEB/LocalisationUpdate/includes/Reader/ReaderFactory.php b/MLEB/LocalisationUpdate/includes/Reader/ReaderFactory.php new file mode 100644 index 00000000..6d09e757 --- /dev/null +++ b/MLEB/LocalisationUpdate/includes/Reader/ReaderFactory.php @@ -0,0 +1,28 @@ +[^/]+)/(?P[^/]+)/(?P[^/]+)/(?P.+)/.+$~"; - preg_match( $p, $pattern, $m ); - - $apiURL = "https://api.github.com/repos/{$m['org']}/{$m['repo']}/contents/{$m['path']}"; - $json = \Http::get( $apiURL ); - if ( !$json ) { - throw new \Exception( "Unable to get directory listing for {$m['org']}/{$m['repo']}" ); - } - - $files = []; - $json = \FormatJson::decode( $json, true ); - foreach ( $json as $fileinfo ) { - $fileurl = dirname( $pattern ) . '/' . $fileinfo['name']; - $file = $this->fetchFile( $fileurl ); - if ( $file ) { - $files[$fileurl] = $file; - } - } - return $files; - } -} diff --git a/MLEB/LocalisationUpdate/includes/fetcher/HttpFetcher.php b/MLEB/LocalisationUpdate/includes/fetcher/HttpFetcher.php deleted file mode 100644 index 72988e98..00000000 --- a/MLEB/LocalisationUpdate/includes/fetcher/HttpFetcher.php +++ /dev/null @@ -1,49 +0,0 @@ -fetchFile( $url ); - if ( $file ) { - $files[$url] = $file; - } - } - - return $files; - } -} diff --git a/MLEB/LocalisationUpdate/includes/finder/Finder.php b/MLEB/LocalisationUpdate/includes/finder/Finder.php deleted file mode 100644 index acebc42a..00000000 --- a/MLEB/LocalisationUpdate/includes/finder/Finder.php +++ /dev/null @@ -1,124 +0,0 @@ -php = $php; - $this->json = $json; - $this->core = $core; - } - - /** - * @return array - */ - public function getComponents() { - $components = []; - - // For older versions of Mediawiki, pull json updates even though its still using php - if ( !isset( $this->json['core'] ) ) { - $components['core'] = [ - 'repo' => 'mediawiki', - 'orig' => "file://{$this->core}/languages/messages/Messages*.php", - 'path' => 'languages/messages/i18n/*.json', - ]; - } - - foreach ( $this->json as $key => $value ) { - // Json should take priority if both exist - unset( $this->php[$key] ); - - foreach ( (array)$value as $subkey => $subvalue ) { - // Mediawiki core files - $matches = []; - if ( preg_match( '~/(?P(?:includes|languages|resources)/.*)$~', $subvalue, $matches ) ) { - $components["$key-$subkey"] = [ - 'repo' => 'mediawiki', - 'orig' => "file://$value/*.json", - 'path' => "{$matches['path']}/*.json", - ]; - continue; - } - - $item = $this->getItem( 'extensions', $subvalue ); - if ( $item !== null ) { - $item['repo'] = 'extension'; - $components["$key-$subkey"] = $item; - continue; - } - - $item = $this->getItem( 'skins', $subvalue ); - if ( $item !== null ) { - $item['repo'] = 'skin'; - $components["$key-$subkey"] = $item; - continue; - } - } - } - - foreach ( $this->php as $key => $value ) { - $matches = []; - $ok = preg_match( '~/extensions/(?P[^/]+)/(?P.*\.i18n\.php)$~', $value, $matches ); - if ( !$ok ) { - continue; - } - - $components[$key] = [ - 'repo' => 'extension', - 'name' => $matches['name'], - 'orig' => "file://$value", - 'path' => $matches['path'], - ]; - } - - return $components; - } - - /** - * @param string $dir extensions or skins - * @param string $subvalue - * @return array|null - */ - private function getItem( $dir, $subvalue ) { - // This ignores magic, alias etc. non message files - $matches = []; - if ( !preg_match( "~/$dir/(?P[^/]+)/(?P.*)$~", $subvalue, $matches ) ) { - return null; - } - - return [ - 'name' => $matches['name'], - 'orig' => "file://$subvalue/*.json", - 'path' => "{$matches['path']}/*.json", - ]; - } -} diff --git a/MLEB/LocalisationUpdate/includes/reader/JSONReader.php b/MLEB/LocalisationUpdate/includes/reader/JSONReader.php deleted file mode 100644 index e8613660..00000000 --- a/MLEB/LocalisationUpdate/includes/reader/JSONReader.php +++ /dev/null @@ -1,37 +0,0 @@ -code = $code; - } - - /** - * @param string $contents - * - * @return array - */ - public function parse( $contents ) { - $messages = \FormatJson::decode( $contents, true ); - unset( $messages['@metadata'] ); - - if ( $this->code ) { - return [ $this->code => $messages ]; - } - - // Assuming that the array is keyed by language codes - return $messages; - } -} diff --git a/MLEB/LocalisationUpdate/includes/reader/PHPReader.php b/MLEB/LocalisationUpdate/includes/reader/PHPReader.php deleted file mode 100644 index 43e4db25..00000000 --- a/MLEB/LocalisationUpdate/includes/reader/PHPReader.php +++ /dev/null @@ -1,61 +0,0 @@ -code = $code; - } - - /** - * @param string $contents - * - * @return array - */ - public function parse( $contents ) { - if ( strpos( $contents, '$messages' ) === false ) { - // This happens for some core languages that only have a fallback. - return []; - } - - $php = $this->cleanupFile( $contents ); - $reader = new \QuickArrayReader( "getVar( 'messages' ); - - if ( $this->code ) { - return [ $this->code => $messages ]; - } - - // Assuming that the array is keyed by language codes - return $messages; - } - - /** - * Removes all unneeded content from a file and returns it. - * - * @param string $contents String - * @return string PHP code without PHP tags - */ - protected function cleanupFile( $contents ) { - // We hate the windows vs linux linebreaks. - $contents = preg_replace( '/\r\n?/', "\n", $contents ); - - // We only want message arrays. - $results = []; - preg_match_all( '/\$messages(?:.*\s)*?\);/', $contents, $results ); - - // But we want them all in one string. - return implode( "\n\n", $results[0] ); - } -} diff --git a/MLEB/LocalisationUpdate/includes/reader/Reader.php b/MLEB/LocalisationUpdate/includes/reader/Reader.php deleted file mode 100644 index fd37322e..00000000 --- a/MLEB/LocalisationUpdate/includes/reader/Reader.php +++ /dev/null @@ -1,21 +0,0 @@ - array( 'key' => 'value' ) ); - * @param string $contents File contents as a string. - * @return array - */ - public function parse( $contents ); -} diff --git a/MLEB/LocalisationUpdate/includes/reader/ReaderFactory.php b/MLEB/LocalisationUpdate/includes/reader/ReaderFactory.php deleted file mode 100644 index 44bc5e40..00000000 --- a/MLEB/LocalisationUpdate/includes/reader/ReaderFactory.php +++ /dev/null @@ -1,38 +0,0 @@ -= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsdoctypeparser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-6.1.0.tgz", + "integrity": "sha512-UCQBZ3xCUBv/PLfwKAJhp6jmGOSLFNKzrotXGNgbKhWvz27wPsCsVeP7gIcHPElQw2agBmynAitXqhxR58XAmA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "jsonc-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.0.tgz", + "integrity": "sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "ramda": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.0.tgz", + "integrity": "sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA==", + "dev": true + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "dev": true, + "requires": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "vscode-json-languageservice": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.7.0.tgz", + "integrity": "sha512-nGLqcBhTjdfkl8Dz9sYGK/ZCTjscYFoIjYw+qqkWB+vyNfM0k/AyIoT73DQvB/PArteCKjEVfQUF72GRZEDSbQ==", + "dev": true, + "requires": { + "jsonc-parser": "^2.2.1", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.15.1", + "vscode-nls": "^4.1.2", + "vscode-uri": "^2.1.2" + } + }, + "vscode-languageserver-textdocument": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", + "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==", + "dev": true + }, + "vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", + "dev": true + }, + "vscode-nls": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz", + "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==", + "dev": true + }, + "vscode-uri": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", + "dev": true + }, + "vue-eslint-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz", + "integrity": "sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.0.1", + "lodash": "^4.17.15" + }, + "dependencies": { + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } +} diff --git a/MLEB/LocalisationUpdate/package.json b/MLEB/LocalisationUpdate/package.json index c22649f5..42300860 100644 --- a/MLEB/LocalisationUpdate/package.json +++ b/MLEB/LocalisationUpdate/package.json @@ -4,9 +4,9 @@ "test": "grunt test" }, "devDependencies": { - "grunt": "1.0.3", - "grunt-banana-checker": "0.6.0", - "grunt-contrib-jshint": "1.1.0", - "grunt-jsonlint": "1.1.0" + "eslint-config-wikimedia": "0.16.2", + "grunt": "1.2.1", + "grunt-banana-checker": "0.9.0", + "grunt-eslint": "23.0.0" } } diff --git a/MLEB/LocalisationUpdate/tests/phan/config.php b/MLEB/LocalisationUpdate/tests/phan/config.php deleted file mode 100644 index f2660b8a..00000000 --- a/MLEB/LocalisationUpdate/tests/phan/config.php +++ /dev/null @@ -1,3 +0,0 @@ - 'Hello World!' ]; $output = [ 'en' => [ 'key' => $input['file'] ] ]; - $reader = $this->getMock( 'LocalisationUpdate\Reader' ); + $reader = $this->createMock( 'LocalisationUpdate\Reader\Reader' ); $reader ->expects( $this->once() ) ->method( 'parse' ) ->will( $this->returnValue( $output ) ); - $factory = $this->getMock( 'LocalisationUpdate\ReaderFactory' ); + $factory = $this->createMock( 'LocalisationUpdate\Reader\ReaderFactory' ); $factory ->expects( $this->once() ) ->method( 'getReader' ) diff --git a/MLEB/LocalisationUpdate/tests/phpunit/finder/FinderTest.php b/MLEB/LocalisationUpdate/tests/phpunit/finder/FinderTest.php index 1b4db0f4..a89e6fd9 100644 --- a/MLEB/LocalisationUpdate/tests/phpunit/finder/FinderTest.php +++ b/MLEB/LocalisationUpdate/tests/phpunit/finder/FinderTest.php @@ -14,10 +14,7 @@ class FinderTest extends \PHPUnit\Framework\TestCase { public function testGetComponents() { $finder = new Finder( [ - 'TranslateSearch' => '/IP/extensions/Translate/TranslateSearch.i18n.php', - 'Babel' => '/IP/extensions/Babel/Babel.i18n.php', - ], - [ + 'core' => '/IP/languages/i18n', 'Babel' => '/IP/extensions/Babel/i18n', 'Door' => [ 'core' => '/IP/extensions/Door/i18n/core', @@ -31,21 +28,11 @@ class FinderTest extends \PHPUnit\Framework\TestCase { $expected = [ 'repo' => 'mediawiki', - 'orig' => "file:///IP/languages/messages/Messages*.php", - 'path' => 'languages/messages/i18n/*.json', - ]; - - $this->assertArrayHasKey( 'core', $observed ); - $this->assertEquals( $expected, $observed['core'], 'Core php file' ); - - $expected = [ - 'repo' => 'extension', - 'name' => 'Translate', - 'orig' => 'file:///IP/extensions/Translate/TranslateSearch.i18n.php', - 'path' => 'TranslateSearch.i18n.php' + 'orig' => "file:///IP/languages/i18n/*.json", + 'path' => 'languages/i18n/*.json', ]; - $this->assertArrayHasKey( 'TranslateSearch', $observed ); - $this->assertEquals( $expected, $observed['TranslateSearch'], 'PHP only extension' ); + $this->assertArrayHasKey( 'core-0', $observed ); + $this->assertEquals( $expected, $observed['core-0'], 'Core JSON file' ); $expected = [ 'repo' => 'extension', @@ -54,7 +41,7 @@ class FinderTest extends \PHPUnit\Framework\TestCase { 'path' => 'i18n/*.json' ]; $this->assertArrayHasKey( 'Babel-0', $observed ); - $this->assertEquals( $expected, $observed['Babel-0'], 'PHP&JSON extension' ); + $this->assertEquals( $expected, $observed['Babel-0'], 'JSON extension' ); $expected = [ 'repo' => 'extension', diff --git a/MLEB/LocalisationUpdate/tests/phpunit/reader/JSONReaderTest.php b/MLEB/LocalisationUpdate/tests/phpunit/reader/JSONReaderTest.php index 11f0a03b..7f49b2e2 100644 --- a/MLEB/LocalisationUpdate/tests/phpunit/reader/JSONReaderTest.php +++ b/MLEB/LocalisationUpdate/tests/phpunit/reader/JSONReaderTest.php @@ -7,8 +7,10 @@ namespace LocalisationUpdate; +use LocalisationUpdate\Reader\JSONReader; + /** - * @covers \LocalisationUpdate\JSONReader + * @covers \LocalisationUpdate\Reader\JSONReader */ class JSONReaderTest extends \PHPUnit\Framework\TestCase { /** diff --git a/MLEB/LocalisationUpdate/tests/phpunit/reader/ReaderFactoryTest.php b/MLEB/LocalisationUpdate/tests/phpunit/reader/ReaderFactoryTest.php index 86776395..00f3ac38 100644 --- a/MLEB/LocalisationUpdate/tests/phpunit/reader/ReaderFactoryTest.php +++ b/MLEB/LocalisationUpdate/tests/phpunit/reader/ReaderFactoryTest.php @@ -7,8 +7,10 @@ namespace LocalisationUpdate; +use LocalisationUpdate\Reader\ReaderFactory; + /** - * @covers \LocalisationUpdate\ReaderFactory + * @covers \LocalisationUpdate\Reader\ReaderFactory */ class ReaderFactoryTest extends \PHPUnit\Framework\TestCase { /** @@ -24,18 +26,13 @@ class ReaderFactoryTest extends \PHPUnit\Framework\TestCase { public function getReaderProvider() { return [ [ - 'languages/messages/MessagesFi.php', - 'LocalisationUpdate\PHPReader', - 'core php file', - ], - [ - 'extensions/Translate/Translate.i18n.php', - 'LocalisationUpdate\PHPReader', - 'extension php file', + 'languages/i18n/fi.json', + 'LocalisationUpdate\Reader\JSONReader', + 'core json file', ], [ 'extension/Translate/i18n/core/de.json', - 'LocalisationUpdate\JSONReader', + 'LocalisationUpdate\Reader\JSONReader', 'extension json file', ], ]; diff --git a/MLEB/LocalisationUpdate/update.php b/MLEB/LocalisationUpdate/update.php index a8ed7ead..fefa2529 100644 --- a/MLEB/LocalisationUpdate/update.php +++ b/MLEB/LocalisationUpdate/update.php @@ -1,5 +1,7 @@ mDescription = 'Fetches translation updates to MediaWiki core, skins and extensions.'; + $this->addDescription( 'Fetches translation updates to MediaWiki core, skins and extensions.' ); $this->addOption( 'repoid', 'Fetch translations from repositories identified by this', @@ -27,7 +29,6 @@ class Update extends Maintenance { ini_set( 'memory_limit', -1 ); global $IP; - global $wgExtensionMessagesFiles; global $wgLocalisationUpdateRepositories; global $wgLocalisationUpdateRepository; @@ -40,7 +41,7 @@ class Update extends Maintenance { $lc = Language::getLocalisationCache(); $messagesDirs = $lc->getMessagesDirs(); - $finder = new LocalisationUpdate\Finder( $wgExtensionMessagesFiles, $messagesDirs, $IP ); + $finder = new LocalisationUpdate\Finder( $messagesDirs, $IP ); $readerFactory = new LocalisationUpdate\ReaderFactory(); $fetcherFactory = new LocalisationUpdate\FetcherFactory(); diff --git a/MLEB/Translate/.eslintrc.json b/MLEB/Translate/.eslintrc.json index 51e3d84e..2ebdc144 100644 --- a/MLEB/Translate/.eslintrc.json +++ b/MLEB/Translate/.eslintrc.json @@ -1,16 +1,21 @@ { "root": true, - "extends": "wikimedia", - "env": { - "browser": true - }, - "globals": { - "mw": false, - "$": false, - "OO": false - }, + "extends": [ + "wikimedia/client", + "wikimedia/jquery", + "wikimedia/mediawiki", + "wikimedia/jsduck" + ], "rules": { - "max-len": 0, - "no-use-before-define": 0 + "max-len": "off", + "no-use-before-define": "off", + "mediawiki/class-doc": "warn", + "no-jquery/no-animate-toggle": "warn", + "no-jquery/no-class-state": "off", + "no-jquery/no-each-util": "warn", + "no-jquery/no-fade": "warn", + "no-jquery/no-global-selector": "off", + "no-jquery/no-map-util": "warn", + "no-jquery/no-sizzle": "warn" } } diff --git a/MLEB/Translate/.mailmap b/MLEB/Translate/.mailmap new file mode 100644 index 00000000..aeec07a2 --- /dev/null +++ b/MLEB/Translate/.mailmap @@ -0,0 +1,61 @@ +Abijeet Patro +Adam Wight +Alangi Derick +Amir E. Aharoni +Amir E. Aharoni +Amir Sarabadani +Antoine Musso +Antoine Musso +Aryeh Gregor +Brian Wolff +Brion Vibber +Brion Vibber +Brion Vibber +Chad Horohoe +Chad Horohoe +Daniel Kinzler +Daniel Kinzler +David Causse +Federico Leva +Florian Schmidt +Harry Burt +James D. Forrester +Joel Sahleen +Justin Du +Kunal Grover +Kunal Mehta +MarcoAurelio +Marius Hoch +Matthew Walker +Max Semenik +Max Semenik +Niklas Laxström +Niklas Laxström +Omid Hezaveh +Omid Hezaveh +Pau Giner +Pau Giner +Raimond Spekking +Raimond Spekking +Roan Kattouw +Roan Kattouw +Santhosh Thottingal +Santhosh Thottingal +Siebrand Mazeland +Siebrand Mazeland +Siebrand Mazeland +Siebrand Mazeland +Tim Starling +Tim Starling +Timo Tijhof +Timo Tijhof +Umherirrender +Yifei He +Yuki Shira +[BOT] Translation updater bot +[BOT] jenkins-bot +[BOT] jenkins-bot +[BOT] libraryupgrader +paladox +seb35 +Željko Filipin diff --git a/MLEB/Translate/.phan/config.php b/MLEB/Translate/.phan/config.php new file mode 100644 index 00000000..247d9d4b --- /dev/null +++ b/MLEB/Translate/.phan/config.php @@ -0,0 +1,59 @@ + + + - + - - @@ -19,8 +19,25 @@ + + + src/ + tests/ + + MessageValidator\.php + + + + src/ + tests/ + + MessageValidator\.php + + + tests/|ttmserver/|scripts/|Message\.php + . - + - ^extensions diff --git a/MLEB/Translate/Autoload.php b/MLEB/Translate/Autoload.php deleted file mode 100644 index ce5b52a9..00000000 --- a/MLEB/Translate/Autoload.php +++ /dev/null @@ -1,296 +0,0 @@ -key(); - $definition = $message->definition(); - $translation = $message->translation(); - - $subcheck = 'extra'; - $matches = $links = []; - preg_match_all( "/\[\[([{$tc}]+)(\\|(.+?))?]]/sDu", $translation, $matches ); - $count = count( $matches[0] ); - for ( $i = 0; $i < $count; $i++ ) { - $backMatch = preg_quote( $matches[1][$i], '/' ); - - if ( preg_match( "/\[\[$backMatch/", $definition ) ) { - continue; - } - - $links[] = "[[{$matches[1][$i]}{$matches[2][$i]}]]"; - } - - if ( count( $links ) ) { - $warnings[$key][] = [ - [ 'links', $subcheck, $key, $code ], - 'translate-checks-links', - [ 'PARAMS', $links ], - [ 'COUNT', count( $links ) ], - ]; - } - - $subcheck = 'missing'; - $matches = $links = []; - preg_match_all( "/\[\[([{$tc}]+)(\\|(.+?))?]]/sDu", $definition, $matches ); - $count = count( $matches[0] ); - for ( $i = 0; $i < $count; $i++ ) { - $backMatch = preg_quote( $matches[1][$i], '/' ); - - if ( preg_match( "/\[\[$backMatch/", $translation ) ) { - continue; - } - - $links[] = "[[{$matches[1][$i]}{$matches[2][$i]}]]"; - } - - if ( count( $links ) ) { - $warnings[$key][] = [ - [ 'links', $subcheck, $key, $code ], - 'translate-checks-links-missing', - [ 'PARAMS', $links ], - [ 'COUNT', count( $links ) ], - ]; - } - } - } - - /** - * Checks if the \
and \
tags are using the correct syntax. - * - * @param TMessage[] $messages Iterable list of TMessage objects. - * @param string $code Language code of the translations. - * @param array &$warnings Array where warnings are appended to. - */ - protected function XhtmlCheck( $messages, $code, &$warnings ) { - foreach ( $messages as $message ) { - $key = $message->key(); - $translation = $message->translation(); - if ( strpos( $translation, '<' ) === false ) { - continue; - } - - $subcheck = 'invalid'; - $tags = [ - '~
~suDi' => '
', // Wrong syntax - '~
~suDi' => '
', - '~
~suDi' => '
', // Wrong syntax - '~
~suDi' => '
', - '~<(HR|Hr|hR) />~su' => '
', // Case - '~<(BR|Br|bR) />~su' => '
', - ]; - - $definition = $message->definition(); - - $wrongTags = []; - foreach ( $tags as $wrong => $correct ) { - $matches = []; - preg_match_all( $wrong, $translation, $matches, PREG_PATTERN_ORDER ); - foreach ( $matches[0] as $wrongMatch ) { - if ( strpos( $definition, $wrongMatch ) !== false ) { - // If the message definition contains a - // non-strict string, do not enforce it - continue; - } - $wrongTags[$wrongMatch] = "$wrongMatch → $correct"; - } - } - - if ( count( $wrongTags ) ) { - $warnings[$key][] = [ - [ 'xhtml', $subcheck, $key, $code ], - 'translate-checks-xhtml', - [ 'PARAMS', $wrongTags ], - [ 'COUNT', count( $wrongTags ) ], - ]; - } - } - } - - /** - * Checks if the translation doesn't use plural while the definition has one. - * - * @param TMessage[] $messages Iterable list of TMessage objects. - * @param string $code Language code of the translations. - * @param array &$warnings Array where warnings are appended to. - */ - protected function pluralCheck( $messages, $code, &$warnings ) { - foreach ( $messages as $message ) { - $key = $message->key(); - $definition = $message->definition(); - $translation = $message->translation(); - - $subcheck = 'missing'; - if ( - stripos( $definition, '{{plural:' ) !== false && - stripos( $translation, '{{plural:' ) === false - ) { - $warnings[$key][] = [ - [ 'plural', $subcheck, $key, $code ], - 'translate-checks-plural', - ]; - } - } - } - - /** - * Checks if the translation uses too many plural forms - * @param TMessage[] $messages - * @param string $code - * @param array &$warnings - * @since 2012-09-19 - */ - protected function pluralFormsCheck( $messages, $code, &$warnings ) { - foreach ( $messages as $message ) { - $key = $message->key(); - $translation = $message->translation(); - - // Are there any plural forms for this language in this message? - if ( stripos( $translation, '{{plural:' ) === false ) { - return; - } - - $plurals = self::getPluralForms( $translation ); - $allowed = self::getPluralFormCount( $code ); - - foreach ( $plurals as $forms ) { - $forms = self::removeExplicitPluralForms( $forms ); - $provided = count( $forms ); - - if ( $provided > $allowed ) { - $warnings[$key][] = [ - [ 'plural', 'forms', $key, $code ], - 'translate-checks-plural-forms', $provided, $allowed - ]; - } - - // Are the last two forms identical? - if ( $provided > 1 && $forms[$provided - 1] === $forms[$provided - 2] ) { - $warnings[$key][] = [ - [ 'plural', 'dupe', $key, $code ], - 'translate-checks-plural-dupe' - ]; - } - } - } - } - - /** - * Returns the number of plural forms %MediaWiki supports - * for a language. - * @since 2012-09-19 - * @param string $code Language code - * @return int - */ - public static function getPluralFormCount( $code ) { - $forms = Language::factory( $code )->getPluralRules(); - - // +1 for the 'other' form - return count( $forms ) + 1; - } - - /** - * Ugly home made probably awfully slow looping parser - * that parses {{PLURAL}} instances from message and - * returns array of invokations having array of forms. - * @since 2012-09-19 - * @param string $translation - * @return array[] - */ - public static function getPluralForms( $translation ) { - // Stores the forms from plural invocations - $plurals = []; - - $cb = function ( $parser, $frame, $args ) use ( &$plurals ) { - $forms = []; - - foreach ( $args as $index => $form ) { - // The first arg is the number, we skip it - if ( $index !== 0 ) { - // Collect the raw text - $forms[] = $frame->expand( $form, PPFrame::RECOVER_ORIG ); - // Expand the text to process embedded plurals - $frame->expand( $form ); - } - } - $plurals[] = $forms; - - return ''; - }; - - // Setup parser - $parser = new Parser(); - // Load the default magic words etc now. - $parser->firstCallInit(); - // So that they don't overrider our own callback - $parser->setFunctionHook( 'plural', $cb, Parser::SFH_NO_HASH | Parser::SFH_OBJECT_ARGS ); - - // Setup things needed for preprocess - $title = null; - $options = new ParserOptions( new User(), Language::factory( 'en' ) ); - - $parser->preprocess( $translation, $title, $options ); - - return $plurals; - } - - /** - * Imitiates the core plural form handling by removing - * plural forms that start with explicit number. - * @since 2012-09-19 - * @param array $forms - * @return array - */ - public static function removeExplicitPluralForms( array $forms ) { - // Handle explicit 0= and 1= forms - foreach ( $forms as $index => $form ) { - if ( preg_match( '/^[0-9]+=/', $form ) ) { - unset( $forms[$index] ); - } - } - - return array_values( $forms ); - } - - /** - * Checks for page names that they have an untranslated namespace. - * - * @param TMessage[] $messages Iterable list of TMessage objects. - * @param string $code Language code of the translations. - * @param array &$warnings Array where warnings are appended to. - */ - protected function pagenameMessagesCheck( $messages, $code, &$warnings ) { - foreach ( $messages as $message ) { - $key = $message->key(); - $definition = $message->definition(); - $translation = $message->translation(); - - $subcheck = 'namespace'; - $namespaces = 'help|project|\{\{ns:project}}|mediawiki'; - $matches = []; - if ( preg_match( "/^($namespaces):[\w\s]+$/ui", $definition, $matches ) && - !preg_match( "/^{$matches[1]}:.+$/u", $translation ) - ) { - $warnings[$key][] = [ - [ 'pagename', $subcheck, $key, $code ], - 'translate-checks-pagename', - ]; - } - } - } - - /** - * Checks for some miscellaneous messages with special syntax. - * - * @param TMessage[] $messages Iterable list of TMessage objects. - * @param string $code Language code of the translations. - * @param array &$warnings Array where warnings are appended to. - */ - protected function miscMWChecks( $messages, $code, &$warnings ) { - $timeList = [ 'protect-expiry-options', 'ipboptions' ]; - - foreach ( $messages as $message ) { - $key = $message->key(); - $definition = $message->definition(); - $translation = $message->translation(); - - if ( in_array( strtolower( $key ), $timeList, true ) ) { - $defArray = explode( ',', $definition ); - $traArray = explode( ',', $translation ); - - $subcheck = 'timelist-count'; - $defCount = count( $defArray ); - $traCount = count( $traArray ); - if ( $defCount !== $traCount ) { - $warnings[$key][] = [ - [ 'miscmw', $subcheck, $key, $code ], - 'translate-checks-format', - wfMessage( 'translate-checks-parametersnotequal' ) - ->numParams( $traCount, $defCount )->text() - ]; - - continue; - } - - for ( $i = 0; $i < $defCount; $i++ ) { - $defItems = array_map( 'trim', explode( ':', $defArray[$i] ) ); - $traItems = array_map( 'trim', explode( ':', $traArray[$i] ) ); - - $subcheck = 'timelist-format'; - if ( count( $traItems ) !== 2 ) { - $warnings[$key][] = [ - [ 'miscmw', $subcheck, $key, $code ], - 'translate-checks-format', - wfMessage( - 'translate-checks-malformed', - $traArray[$i] - )->text() - ]; - continue; - } - - $subcheck = 'timelist-format-value'; - if ( $traItems[1] !== $defItems[1] ) { - $warnings[$key][] = [ - [ 'miscmw', $subcheck, $key, $code ], - 'translate-checks-format', - "$traItems[1] !== $defItems[1]", // @todo FIXME: i18n missing. - ]; - continue; - } - } - } - } - } -} diff --git a/MLEB/Translate/Message.php b/MLEB/Translate/Message.php index fc5f810b..b853e1e4 100644 --- a/MLEB/Translate/Message.php +++ b/MLEB/Translate/Message.php @@ -1,6 +1,6 @@ infile; @@ -93,7 +93,7 @@ abstract class TMessage { /** * Return all tags for this message; - * @return array of strings + * @return string[] */ public function getTags() { return $this->tags; @@ -111,7 +111,7 @@ abstract class TMessage { } public function getProperty( $key ) { - return isset( $this->props[$key] ) ? $this->props[$key] : null; + return $this->props[$key] ?? null; } /** @@ -141,20 +141,42 @@ class ThinMessage extends TMessage { */ protected $row; + /** @var string Stored translation. */ + protected $translation; + /** * Set the database row this message is based on. - * @param array $row Database Result Row + * @param stdClass $row Database Result Row */ public function setRow( $row ) { $this->row = $row; } + /** + * Set the current translation of this message. + * @param string $text + */ + public function setTranslation( $text ) { + $this->translation = $text; + } + + /** + * @inheritDoc + */ public function translation() { if ( !isset( $this->row ) ) { return $this->infile(); } - return Revision::getRevisionText( $this->row ); + if ( $this->translation === null ) { + // Should only happen with MW < 1.34. Slow if the text table hasn't been joined in! + $text = Revision::getRevisionText( $this->row ); + if ( $text !== false ) { + $this->translation = $text; + } + } + + return $this->translation; } // Re-implemented @@ -164,11 +186,8 @@ class ThinMessage extends TMessage { } $field = self::$propertyMap[$key]; - if ( !isset( $this->row->$field ) ) { - return null; - } - return $this->row->$field; + return $this->row->$field ?? null; } // Re-implemented diff --git a/MLEB/Translate/MessageChecks.php b/MLEB/Translate/MessageChecks.php deleted file mode 100644 index 27037847..00000000 --- a/MLEB/Translate/MessageChecks.php +++ /dev/null @@ -1,455 +0,0 @@ -key(); - * $translation = $message->translation(); - * if ( strpos( $translation, 'smelly' ) !== false ) { - * $warnings[$key][] = array( - * array( 'badword', 'smelly', $key, $code ), - * 'translate-checks-badword', // Needs to be defined in i18n file - * array( 'PARAMS', 'smelly' ), - * ); - * } - * } - * } - * @endcode - * - * Warnings are of format:
- * $warnings[$key][] = array(
- *    # check idenfitication
- *    array( 'printf', $subcheck, $key, $code ),
- *    # check warning message
- *    'translate-checks-parameters-unknown',
- *    # optional special param list, formatted later with Language::commaList()
- *    array( 'PARAMS', $params ),
- *    # optional number of params, formatted later with Language::formatNum()
- *    array( 'COUNT', count( $params ) ),
- *    'Any other parameters to the message',
- * 
- * - * @ingroup MessageCheckers - */ -class MessageChecker { - protected $checks = []; - protected $group; - private static $globalBlacklist; - - /** - * Constructs a suitable checker for given message group. - * @param MessageGroup $group - */ - public function __construct( MessageGroup $group ) { - global $wgTranslateCheckBlacklist; - - if ( $wgTranslateCheckBlacklist === false ) { - self::$globalBlacklist = []; - } elseif ( self::$globalBlacklist === null ) { - $file = $wgTranslateCheckBlacklist; - $list = PHPVariableLoader::loadVariableFromPHPFile( $file, 'checkBlacklist' ); - $keys = [ 'group', 'check', 'subcheck', 'code', 'message' ]; - - foreach ( $list as $key => $pattern ) { - foreach ( $keys as $checkKey ) { - if ( !isset( $pattern[$checkKey] ) ) { - $list[$key][$checkKey] = '#'; - } elseif ( is_array( $pattern[$checkKey] ) ) { - $list[$key][$checkKey] = - array_map( [ $this, 'foldValue' ], $pattern[$checkKey] ); - } else { - $list[$key][$checkKey] = $this->foldValue( $pattern[$checkKey] ); - } - } - } - - self::$globalBlacklist = $list; - } - - $this->group = $group; - } - - /** - * Normalises check keys. - * @param string $value check key - * @return string Normalised check key - */ - protected function foldValue( $value ) { - return str_replace( ' ', '_', strtolower( $value ) ); - } - - /** - * Set the tests for this checker. Array of callables with descriptive keys. - * @param array $checks List of checks (suitable methods in this class) - */ - public function setChecks( array $checks ) { - foreach ( $checks as $k => $c ) { - if ( !is_callable( $c ) ) { - unset( $checks[$k] ); - wfWarn( "Check function for check $k is not callable" ); - } - } - $this->checks = $checks; - } - - /** - * Adds one tests for this checker. - * @see setChecks() - * @param callable $check - */ - public function addCheck( callable $check ) { - $this->checks[] = $check; - } - - /** - * Checks one message, returns array of warnings that can be passed to - * OutputPage::addWikiMsg or similar. - * - * @param TMessage $message - * @param string $code Language code - * @return array - */ - public function checkMessage( TMessage $message, $code ) { - $warningsArray = []; - $messages = [ $message ]; - - foreach ( $this->checks as $check ) { - call_user_func_array( $check, [ $messages, $code, &$warningsArray ] ); - } - - $warningsArray = $this->filterWarnings( $warningsArray ); - if ( !count( $warningsArray ) ) { - return []; - } - - $warnings = $warningsArray[$message->key()]; - $warnings = $this->fixMessageParams( $warnings ); - - return $warnings; - } - - /** - * Checks one message, returns true if any check matches. - * @param TMessage $message - * @param string $code Language code - * @return bool True if there is a problem, false otherwise. - */ - public function checkMessageFast( TMessage $message, $code ) { - $warningsArray = []; - $messages = [ $message ]; - - foreach ( $this->checks as $check ) { - call_user_func_array( $check, [ $messages, $code, &$warningsArray ] ); - if ( count( $warningsArray ) ) { - return true; - } - } - - return false; - } - - /** - * Filters warnings defined in check-blacklist.php. - * @param array $warningsArray List of warnings produces by checkMessage(). - * @return array List of filtered warnings. - */ - protected function filterWarnings( array $warningsArray ) { - $groupId = $this->group->getId(); - - // There is an array of messages... - foreach ( $warningsArray as $mkey => $warnings ) { - // ... each which has an array of warnings. - foreach ( $warnings as $wkey => $warning ) { - $check = array_shift( $warning ); - // Check if the key is blacklisted... - foreach ( self::$globalBlacklist as $pattern ) { - if ( !$this->match( $pattern['group'], $groupId ) ) { - continue; - } - if ( !$this->match( $pattern['check'], $check[0] ) ) { - continue; - } - if ( !$this->match( $pattern['subcheck'], $check[1] ) ) { - continue; - } - if ( !$this->match( $pattern['message'], $check[2] ) ) { - continue; - } - if ( !$this->match( $pattern['code'], $check[3] ) ) { - continue; - } - - // If all of the aboce match, filter the check - unset( $warningsArray[$mkey][$wkey] ); - } - } - } - - return $warningsArray; - } - - /** - * Matches check information against blacklist pattern. - * @param string $pattern - * @param string $value The actual value in the warnings produces by the check - * @return bool True of the pattern matches the value. - */ - protected function match( $pattern, $value ) { - if ( $pattern === '#' ) { - return true; - } elseif ( is_array( $pattern ) ) { - return in_array( strtolower( $value ), $pattern, true ); - } else { - return strtolower( $value ) === $pattern; - } - } - - /** - * Converts the special params to something nice. Currently useless, but - * useful if in the future blacklist can work with parameter level too. - * @param array $warnings List of warnings - * @throws MWException - * @return array List of warning messages with parameters. - */ - protected function fixMessageParams( array $warnings ) { - $lang = RequestContext::getMain()->getLanguage(); - - foreach ( $warnings as $wkey => $warning ) { - array_shift( $warning ); - $message = [ array_shift( $warning ) ]; - - foreach ( $warning as $param ) { - if ( !is_array( $param ) ) { - $message[] = $param; - } else { - list( $type, $value ) = $param; - if ( $type === 'COUNT' ) { - $message[] = $lang->formatNum( $value ); - } elseif ( $type === 'PARAMS' ) { - $message[] = $lang->commaList( $value ); - } else { - throw new MWException( "Unknown type $type" ); - } - } - } - $warnings[$wkey] = $message; - } - - return $warnings; - } - - /** - * Compares two arrays return items that don't exist in the latter. - * @param array $defs - * @param array $trans - * @return array Items of $defs that are not in $trans. - */ - protected static function compareArrays( array $defs, array $trans ) { - $missing = []; - - foreach ( $defs as $defVar ) { - if ( !in_array( $defVar, $trans ) ) { - $missing[] = $defVar; - } - } - - return $missing; - } - - /** - * Checks for missing and unknown printf formatting characters in - * translations. - * @param TMessage[] $messages Iterable list of TMessage objects. - * @param string $code Language code - * @param array &$warnings Array where warnings are appended to. - */ - protected function printfCheck( $messages, $code, array &$warnings ) { - $this->parameterCheck( $messages, $code, $warnings, '/%(\d+\$)?[sduf]/U' ); - } - - /** - * Checks for missing and unknown Ruby variables (%{var}) in - * translations. - * @param TMessage[] $messages Iterable list of TMessage objects. - * @param string $code Language code - * @param array &$warnings Array where warnings are appended to. - */ - protected function rubyVariableCheck( $messages, $code, array &$warnings ) { - $this->parameterCheck( $messages, $code, $warnings, '/%{[a-zA-Z_]+}/' ); - } - - /** - * Checks for missing and unknown python string interpolation operators in - * translations. - * @param TMessage[] $messages Iterable list of TMessage objects. - * @param string $code Language code - * @param array &$warnings Array where warnings are appended to. - */ - protected function pythonInterpolationCheck( $messages, $code, array &$warnings ) { - $pattern = '/\%\([a-zA-Z0-9]*?\)[diouxXeEfFgGcrs]/U'; - $this->parameterCheck( $messages, $code, $warnings, $pattern ); - } - - /** - * Checks if the translation has even number of opening and closing - * parentheses. {, [ and ( are checked. - * Note that this will not add a warning if the message definition - * has an unbalanced amount of braces. - * - * @param TMessage[] $messages Iterable list of TMessage objects. - * @param string $code Language code - * @param array &$warnings Array where warnings are appended to. - */ - protected function braceBalanceCheck( $messages, $code, array &$warnings ) { - foreach ( $messages as $message ) { - $key = $message->key(); - $translation = $message->translation(); - $translation = preg_replace( '/[^{}[\]()]/u', '', $translation ); - - $subcheck = 'brace'; - $counts = [ - '{' => 0, '}' => 0, - '[' => 0, ']' => 0, - '(' => 0, ')' => 0, - ]; - - $len = strlen( $translation ); - for ( $i = 0; $i < $len; $i++ ) { - $char = $translation[$i]; - $counts[$char]++; - } - - $definition = $message->definition(); - - $balance = []; - if ( $counts['['] !== $counts[']'] && self::checkStringCountEqual( $definition, '[', ']' ) ) { - $balance[] = '[]: ' . ( $counts['['] - $counts[']'] ); - } - - if ( $counts['{'] !== $counts['}'] && self::checkStringCountEqual( $definition, '{', '}' ) ) { - $balance[] = '{}: ' . ( $counts['{'] - $counts['}'] ); - } - - if ( $counts['('] !== $counts[')'] && self::checkStringCountEqual( $definition, '(', ')' ) ) { - $balance[] = '(): ' . ( $counts['('] - $counts[')'] ); - } - - if ( count( $balance ) ) { - $warnings[$key][] = [ - [ 'balance', $subcheck, $key, $code ], - 'translate-checks-balance', - [ 'PARAMS', $balance ], - [ 'COUNT', count( $balance ) ], - ]; - } - } - } - - /** - * @param string $source - * @param string $str1 - * @param string $str2 - * @return bool whether $source has an equal number of occurences of $str1 and $str2 - */ - protected static function checkStringCountEqual( $source, $str1, $str2 ) { - return substr_count( $source, $str1 ) === substr_count( $source, $str2 ); - } - - /** - * Checks for missing and unknown printf formatting characters in - * translations. - * @param TMessage[] $messages Iterable list of TMessage objects. - * @param string $code Language code - * @param array &$warnings Array where warnings are appended to. - * @param string $pattern Regular expression for matching variables. - */ - protected function parameterCheck( $messages, $code, array &$warnings, $pattern ) { - foreach ( $messages as $message ) { - $key = $message->key(); - $definition = $message->definition(); - $translation = $message->translation(); - - preg_match_all( $pattern, $definition, $defVars ); - preg_match_all( $pattern, $translation, $transVars ); - - // Check for missing variables in the translation - $subcheck = 'missing'; - $params = self::compareArrays( $defVars[0], $transVars[0] ); - - if ( count( $params ) ) { - $warnings[$key][] = [ - [ 'variable', $subcheck, $key, $code ], - 'translate-checks-parameters', - [ 'PARAMS', $params ], - [ 'COUNT', count( $params ) ], - ]; - } - - // Check for unknown variables in the translatio - $subcheck = 'unknown'; - $params = self::compareArrays( $transVars[0], $defVars[0] ); - - if ( count( $params ) ) { - $warnings[$key][] = [ - [ 'variable', $subcheck, $key, $code ], - 'translate-checks-parameters-unknown', - [ 'PARAMS', $params ], - [ 'COUNT', count( $params ) ], - ]; - } - } - } - - /** - * @param TMessage[] $messages Iterable list of TMessage objects. - * @param string $code Language code - * @param array &$warnings Array where warnings are appended to. - */ - protected function balancedTagsCheck( $messages, $code, array &$warnings ) { - foreach ( $messages as $message ) { - $key = $message->key(); - $translation = $message->translation(); - - libxml_use_internal_errors( true ); - libxml_clear_errors(); - $doc = simplexml_load_string( Xml::tags( 'root', null, $translation ) ); - if ( $doc ) { - continue; - } - - $errors = libxml_get_errors(); - $params = []; - foreach ( $errors as $error ) { - if ( $error->code !== 76 && $error->code !== 73 ) { - continue; - } - $params[] = "
• [{$error->code}] $error->message"; - } - - if ( !count( $params ) ) { - continue; - } - - $warnings[$key][] = [ - [ 'tags', 'balance', $key, $code ], - 'translate-checks-format', - [ 'PARAMS', $params ], - [ 'COUNT', count( $params ) ], - ]; - } - - libxml_clear_errors(); - } -} diff --git a/MLEB/Translate/MessageCollection.php b/MLEB/Translate/MessageCollection.php index 45124b92..44e2d56b 100644 --- a/MLEB/Translate/MessageCollection.php +++ b/MLEB/Translate/MessageCollection.php @@ -8,7 +8,10 @@ * @license GPL-2.0-or-later */ -use Wikimedia\Rdbms\IResultWrapper; +use MediaWiki\Extensions\Translate\SystemUsers\FuzzyBot; +use MediaWiki\MediaWikiServices; +use MediaWiki\Revision\RevisionRecord; +use MediaWiki\Revision\SlotRecord; /** * Core message collection class. @@ -19,6 +22,14 @@ use Wikimedia\Rdbms\IResultWrapper; * ways. */ class MessageCollection implements ArrayAccess, Iterator, Countable { + /** + * The queries can get very large because each message title is specified + * individually. Very large queries can confuse the database query planner. + * Queries are split into multiple separate queries having at most this many + * items. + */ + private const MAX_ITEMS_PER_QUERY = 2000; + /** * @var string Language code. */ @@ -53,14 +64,14 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { // Database resources - /** @var IResultWrapper Stored message existence and fuzzy state. */ + /** @var ?Traversable Stored message existence and fuzzy state. */ protected $dbInfo; - /** @var IResultWrapper Stored translations in database. */ + /** @var ?Traversable Stored translations in database. */ protected $dbData; - /** @var IResultWrapper Stored reviews in database. */ - protected $dbReviewData = []; + /** @var ?Traversable Stored reviews in database. */ + protected $dbReviewData; /** * Tags, copied to thin messages @@ -102,14 +113,6 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { return $collection; } - /** - * Constructs a new empty message collection. Suitable for example for testing. - * @param string $code Language code. - * @return self - */ - public static function newEmpty( $code ) { - } - /** * @return string */ @@ -139,15 +142,15 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { /** * Returns list of available message keys. This is affected by filtering. - * @return array List of database keys indexed by display keys. + * @return array List of database keys indexed by display keys (TitleValue). */ public function keys() { return $this->keys; } /** - * Returns list of titles of messages that are used in this collection after filtering. - * @return Title[] + * Returns list of TitleValues of messages that are used in this collection after filtering. + * @return TitleValue[] * @since 2011-12-28 */ public function getTitles() { @@ -169,7 +172,7 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { * @return string[] List of keys with given tag. */ public function getTags( $type ) { - return isset( $this->tags[$type] ) ? $this->tags[$type] : []; + return $this->tags[$type] ?? []; } /** @@ -204,13 +207,14 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { # arsort( $authors, SORT_NUMERIC ); ksort( $authors ); $fuzzyBot = FuzzyBot::getName(); + $filteredAuthors = []; foreach ( $authors as $author => $edits ) { if ( $author !== $fuzzyBot ) { $filteredAuthors[] = $author; } } - return isset( $filteredAuthors ) ? $filteredAuthors : []; + return $filteredAuthors; } /** @@ -240,9 +244,14 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { * with ArrayAccess or iteration. */ public function loadTranslations() { - $this->loadData( $this->keys ); - $this->loadInfo( $this->keys ); - $this->loadReviewInfo( $this->keys ); + // Performance optimization: Instead of building conditions based on key in every + // method, build them once and pass it on to each of them. + $dbr = TranslateUtils::getSafeReadDB(); + $titleConds = $this->getTitleConds( $dbr ); + + $this->loadData( $this->keys, $titleConds ); + $this->loadInfo( $this->keys, $titleConds ); + $this->loadReviewInfo( $this->keys, $titleConds ); $this->initMessages(); } @@ -254,8 +263,8 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { public function resetForNewLanguage( $code ) { $this->code = $code; $this->keys = $this->fixKeys(); - $this->dbInfo = null; - $this->dbData = null; + $this->dbInfo = []; + $this->dbData = []; $this->dbReviewData = []; $this->messages = null; $this->infile = []; @@ -522,22 +531,54 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { $origKeys = $keys; } - foreach ( $this->dbData as $row ) { - $mkey = $this->rowToKey( $row ); - if ( !isset( $this->infile[$mkey] ) ) { - continue; + $revStore = MediaWikiServices::getInstance()->getRevisionStore(); + if ( is_callable( [ $revStore, 'newRevisionsFromBatch' ] ) ) { + $infileRows = []; + foreach ( $this->dbData as $row ) { + $mkey = $this->rowToKey( $row ); + if ( isset( $this->infile[$mkey] ) ) { + $infileRows[] = $row; + } } - $text = Revision::getRevisionText( $row ); - if ( $this->infile[$mkey] === $text ) { - // Remove unchanged messages from the list - unset( $keys[$mkey] ); + $revisions = $revStore->newRevisionsFromBatch( $infileRows, [ + 'slots' => [ SlotRecord::MAIN ], + 'content' => true + ] )->getValue(); + foreach ( $infileRows as $row ) { + /** @var RevisionRecord|null $rev */ + $rev = $revisions[$row->rev_id]; + if ( $rev ) { + /** @var TextContent $content */ + $content = $rev->getContent( SlotRecord::MAIN ); + if ( $content ) { + $mkey = $this->rowToKey( $row ); + if ( $this->infile[$mkey] === $content->getText() ) { + // Remove unchanged messages from the list + unset( $keys[$mkey] ); + } + } + } + } + } else { + // Pre 1.34 compatibility + foreach ( $this->dbData as $row ) { + $mkey = $this->rowToKey( $row ); + if ( !isset( $this->infile[$mkey] ) ) { + continue; + } + + $text = Revision::getRevisionText( $row ); + if ( $this->infile[$mkey] === $text ) { + // Remove unchanged messages from the list + unset( $keys[$mkey] ); + } } } - // Remove the messages which have not changed from the list + // Remove the messages which have changed from the original list if ( $condition === false ) { - $keys = $this->filterOnCondition( $keys, $origKeys, false ); + $keys = $this->filterOnCondition( $origKeys, $keys ); } return $keys; @@ -602,18 +643,13 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { */ protected function fixKeys() { $newkeys = []; - // array( namespace, pagename ) - $pages = $this->definitions->getPages(); - $code = $this->code; - foreach ( $pages as $key => $page ) { - list( $namespace, $pagename ) = $page; - $title = Title::makeTitleSafe( $namespace, "$pagename/$code" ); - if ( !$title ) { - wfWarn( "Invalid title $namespace:$pagename/$code" ); - continue; - } - $newkeys[$key] = $title; + $pages = $this->definitions->getPages(); + foreach ( $pages as $key => $baseTitle ) { + $newkeys[$key] = new TitleValue( + $baseTitle->getNamespace(), + $baseTitle->getDBkey() . '/' . $this->code + ); } return $newkeys; @@ -622,22 +658,21 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { /** * Loads existence and fuzzy state for given list of keys. * @param string[] $keys List of keys in database format. + * @param string[]|null $titleConds Database query condition based on current keys. */ - protected function loadInfo( array $keys ) { - if ( $this->dbInfo !== null ) { + protected function loadInfo( array $keys, ?array $titleConds = null ) { + if ( $this->dbInfo !== [] ) { return; } - $this->dbInfo = []; - if ( !count( $keys ) ) { + $this->dbInfo = new EmptyIterator(); return; } $dbr = TranslateUtils::getSafeReadDB(); $tables = [ 'page', 'revtag' ]; $fields = [ 'page_namespace', 'page_title', 'rt_type' ]; - $conds = $this->getTitleConds( $dbr ); $joins = [ 'revtag' => [ 'LEFT JOIN', @@ -645,28 +680,38 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { ] ]; - $this->dbInfo = $dbr->select( $tables, $fields, $conds, __METHOD__, [], $joins ); + $titleConds = $titleConds ?? $this->getTitleConds( $dbr ); + $iterator = new AppendIterator(); + foreach ( $titleConds as $conds ) { + $iterator->append( $dbr->select( $tables, $fields, $conds, __METHOD__, [], $joins ) ); + } + + $this->dbInfo = $iterator; + + // Populate and cache reverse map now, since if call to initMesages is delayed (e.g. a + // filter that calls loadData() is used, or ::slice is used) the reverse map will not + // contain all the entries that are present in our $iterator and will throw notices. + $this->getReverseMap(); } /** * Loads reviewers for given messages. * @param string[] $keys List of keys in database format. + * @param string[]|null $titleConds Database query condition based on current keys. */ - protected function loadReviewInfo( array $keys ) { + protected function loadReviewInfo( array $keys, ?array $titleConds = null ) { if ( $this->dbReviewData !== [] ) { return; } - $this->dbReviewData = []; - if ( !count( $keys ) ) { + $this->dbReviewData = new EmptyIterator(); return; } $dbr = TranslateUtils::getSafeReadDB(); $tables = [ 'page', 'translate_reviews' ]; $fields = [ 'page_namespace', 'page_title', 'trr_user' ]; - $conds = $this->getTitleConds( $dbr ); $joins = [ 'translate_reviews' => [ 'JOIN', @@ -674,82 +719,96 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { ] ]; - $this->dbReviewData = $dbr->select( $tables, $fields, $conds, __METHOD__, [], $joins ); + $titleConds = $titleConds ?? $this->getTitleConds( $dbr ); + $iterator = new AppendIterator(); + foreach ( $titleConds as $conds ) { + $iterator->append( $dbr->select( $tables, $fields, $conds, __METHOD__, [], $joins ) ); + } + + $this->dbReviewData = $iterator; + + // Populate and cache reverse map now, since if call to initMesages is delayed (e.g. a + // filter that calls loadData() is used, or ::slice is used) the reverse map will not + // contain all the entries that are present in our $iterator and will throw notices. + $this->getReverseMap(); } /** * Loads translation for given list of keys. * @param string[] $keys List of keys in database format. + * @param string[]|null $titleConds Database query condition based on current keys. */ - protected function loadData( array $keys ) { - if ( $this->dbData !== null ) { + protected function loadData( array $keys, ?array $titleConds = null ) { + if ( $this->dbData !== [] ) { return; } - $this->dbData = []; - if ( !count( $keys ) ) { + $this->dbData = new EmptyIterator(); return; } $dbr = TranslateUtils::getSafeReadDB(); - - if ( is_callable( Revision::class, 'getQueryInfo' ) ) { - $revQuery = Revision::getQueryInfo( [ 'page', 'text' ] ); + $revisionStore = MediaWikiServices::getInstance()->getRevisionStore(); + if ( is_callable( [ $revisionStore, 'newRevisionsFromBatch' ] ) ) { + $revQuery = $revisionStore->getQueryInfo( [ 'page' ] ); } else { - $revQuery = [ - 'tables' => [ 'page', 'revision', 'text' ], - 'fields' => [ - 'page_namespace', - 'page_title', - 'page_latest', - 'rev_user', - 'rev_user_text', - 'old_flags', - 'old_text' - ], - 'joins' => [ - 'revision' => [ 'JOIN', 'page_latest = rev_id' ], - 'text' => [ 'JOIN', 'old_id = rev_text_id' ], - ], - ]; - } - $conds = [ 'page_latest = rev_id' ]; - $conds[] = $this->getTitleConds( $dbr ); - - $res = $dbr->select( - $revQuery['tables'], $revQuery['fields'], $conds, __METHOD__, [], $revQuery['joins'] - ); - - $this->dbData = $res; + // Pre MW 1.34 compatibility + $revQuery = $revisionStore->getQueryInfo( [ 'page', 'text' ] ); + } + $tables = $revQuery['tables']; + $fields = $revQuery['fields']; + $joins = $revQuery['joins']; + + $titleConds = $titleConds ?? $this->getTitleConds( $dbr ); + $iterator = new AppendIterator(); + foreach ( $titleConds as $conds ) { + $conds = [ 'page_latest = rev_id', $conds ]; + $iterator->append( $dbr->select( $tables, $fields, $conds, __METHOD__, [], $joins ) ); + } + + $this->dbData = $iterator; + + // Populate and cache reverse map now, since if call to initMesages is delayed (e.g. a + // filter that calls loadData() is used, or ::slice is used) the reverse map will not + // contain all the entries that are present in our $iterator and will throw notices. + $this->getReverseMap(); } /** * Of the current set of keys, construct database query conditions. * @since 2011-12-28 * @param \Wikimedia\Rdbms\IDatabase $db - * @return string + * @return string[] */ protected function getTitleConds( $db ) { - // Array of array( namespace, pagename ) - $byNamespace = []; - foreach ( $this->getTitles() as $title ) { - $namespace = $title->getNamespace(); - $pagename = $title->getDBkey(); - $byNamespace[$namespace][] = $pagename; - } + $titles = $this->getTitles(); + $chunks = array_chunk( $titles, self::MAX_ITEMS_PER_QUERY ); + $results = []; + + foreach ( $chunks as $titles ) { + // Array of array( namespace, pagename ) + $byNamespace = []; + foreach ( $titles as $title ) { + $namespace = $title->getNamespace(); + $pagename = $title->getDBkey(); + $byNamespace[$namespace][] = $pagename; + } - $conds = []; - foreach ( $byNamespace as $namespaces => $pagenames ) { - $cond = [ - 'page_namespace' => $namespaces, - 'page_title' => $pagenames, - ]; + $conds = []; + foreach ( $byNamespace as $namespaces => $pagenames ) { + $cond = [ + 'page_namespace' => $namespaces, + 'page_title' => $pagenames, + ]; + + $conds[] = $db->makeList( $cond, LIST_AND ); + } - $conds[] = $db->makeList( $cond, LIST_AND ); + $results[] = $db->makeList( $conds, LIST_OR ); } - return $db->makeList( $conds, LIST_OR ); + return $results; } /** @@ -783,7 +842,7 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { $map = []; /** - * @var Title $title + * @var TitleValue $title */ foreach ( $this->keys as $mkey => $title ) { $map[$title->getNamespace()][$title->getDBkey()] = $mkey; @@ -804,19 +863,47 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { $messages = []; $definitions = $this->definitions->getDefinitions(); - foreach ( array_keys( $this->keys ) as $mkey ) { - $messages[$mkey] = new ThinMessage( $mkey, $definitions[$mkey] ); - } + $revStore = MediaWikiServices::getInstance()->getRevisionStore(); + $queryFlags = TranslateUtils::shouldReadFromMaster() ? $revStore::READ_LATEST : 0; + if ( is_callable( [ $revStore, 'getContentBlobsForBatch' ] ) ) { + foreach ( array_keys( $this->keys ) as $mkey ) { + $messages[$mkey] = new ThinMessage( $mkey, $definitions[$mkey] ); + } + if ( $this->dbData !== null ) { + $slotRows = $revStore->getContentBlobsForBatch( + $this->dbData, [ SlotRecord::MAIN ], $queryFlags + )->getValue(); + + foreach ( $this->dbData as $row ) { + $mkey = $this->rowToKey( $row ); + if ( !isset( $messages[$mkey] ) ) { + continue; + } + $messages[$mkey]->setRow( $row ); + $messages[$mkey]->setProperty( 'revision', $row->page_latest ); + + if ( isset( $slotRows[$row->rev_id][SlotRecord::MAIN] ) ) { + $slot = $slotRows[$row->rev_id][SlotRecord::MAIN]; + $messages[$mkey]->setTranslation( $slot->blob_data ); + } + } + } + } else { + // Pre MW 1.34 compatibility + foreach ( array_keys( $this->keys ) as $mkey ) { + $messages[$mkey] = new ThinMessage( $mkey, $definitions[$mkey] ); + } - // Copy rows if any. - if ( $this->dbData !== null ) { - foreach ( $this->dbData as $row ) { - $mkey = $this->rowToKey( $row ); - if ( !isset( $messages[$mkey] ) ) { - continue; + // Copy rows if any. + if ( $this->dbData !== null ) { + foreach ( $this->dbData as $row ) { + $mkey = $this->rowToKey( $row ); + if ( !isset( $messages[$mkey] ) ) { + continue; + } + $messages[$mkey]->setRow( $row ); + $messages[$mkey]->setProperty( 'revision', $row->page_latest ); } - $messages[$mkey]->setRow( $row ); - $messages[$mkey]->setProperty( 'revision', $row->page_latest ); } } @@ -894,7 +981,7 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { * @return mixed */ public function offsetGet( $offset ) { - return $this->messages[$offset]; + return $this->messages[$offset] ?? null; } /** @@ -941,6 +1028,7 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { return false; } + // @phan-suppress-next-line PhanTypeArraySuspiciousNullable return $this->messages[key( $this->keys )]; } @@ -959,6 +1047,7 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { public function count() { return count( $this->keys() ); } + /** @} */ } @@ -970,6 +1059,7 @@ class MessageCollection implements ArrayAccess, Iterator, Countable { class MessageDefinitions { protected $namespace; protected $messages; + protected $pages; public function __construct( array $messages, $namespace = false ) { $this->namespace = $namespace; @@ -981,20 +1071,34 @@ class MessageDefinitions { } /** - * @return Array of Array( namespace, pagename ) + * @return Title[] List of title indexed by message key. */ public function getPages() { $namespace = $this->namespace; + if ( $this->pages !== null ) { + return $this->pages; + } + $pages = []; foreach ( array_keys( $this->messages ) as $key ) { if ( $namespace === false ) { // pages are in format ex. "8:jan" - $pages[$key] = explode( ':', $key, 2 ); + [ $tns, $tkey ] = explode( ':', $key, 2 ); + $title = Title::makeTitleSafe( $tns, $tkey ); } else { - $pages[$key] = [ $namespace, $key ]; + $title = Title::makeTitleSafe( $namespace, $key ); } + + if ( !$title ) { + wfWarn( "Invalid title ($namespace:)$key" ); + continue; + } + + $pages[$key] = $title; } - return $pages; + $this->pages = $pages; + + return $this->pages; } } diff --git a/MLEB/Translate/MessageGroupConfigurationParser.php b/MLEB/Translate/MessageGroupConfigurationParser.php index d86f2565..2d3dbf7f 100644 --- a/MLEB/Translate/MessageGroupConfigurationParser.php +++ b/MLEB/Translate/MessageGroupConfigurationParser.php @@ -15,7 +15,7 @@ class MessageGroupConfigurationParser { public function __construct() { // Don't perform validations if library not available - if ( class_exists( 'RomaricDrigon\MetaYaml\MetaYaml' ) ) { + if ( class_exists( RomaricDrigon\MetaYaml\MetaYaml::class ) ) { $this->baseSchema = $this->getBaseSchema(); } } @@ -31,7 +31,7 @@ class MessageGroupConfigurationParser { */ public function getHopefullyValidConfigurations( $data, $callback = null ) { if ( !is_callable( $callback ) ) { - $callback = function () { + $callback = function ( $unused1, $unused2, $unused3 ) { /*noop*/ }; } @@ -77,7 +77,7 @@ class MessageGroupConfigurationParser { * it will be merged with other configurations. * * @param array $documents - * @return array Unvalidated group configurations + * @return array[][] Unvalidated group configurations */ public function parseDocuments( array $documents ) { $groups = []; @@ -97,7 +97,7 @@ class MessageGroupConfigurationParser { foreach ( $groups as $i => $group ) { $groups[$i] = self::mergeTemplate( $template, $group ); // Little hack to allow aggregate groups to be defined in same file with other groups. - if ( $groups[$i]['BASIC']['class'] === 'AggregateMessageGroup' ) { + if ( $groups[$i]['BASIC']['class'] === AggregateMessageGroup::class ) { unset( $groups[$i]['FILES'] ); } } @@ -119,14 +119,14 @@ class MessageGroupConfigurationParser { public function validate( array $config ) { $schema = $this->baseSchema; - foreach ( $config as $sectionName => $section ) { + foreach ( $config as $section ) { if ( !isset( $section['class'] ) ) { continue; } $class = $section['class']; // There is no sane way to check whether *class* implements interface in PHP - if ( !method_exists( $class, 'getExtraSchema' ) ) { + if ( !is_callable( [ $class, 'getExtraSchema' ] ) ) { continue; } diff --git a/MLEB/Translate/MessageGroups.php b/MLEB/Translate/MessageGroups.php index caaf815c..c5a6ae83 100644 --- a/MLEB/Translate/MessageGroups.php +++ b/MLEB/Translate/MessageGroups.php @@ -8,7 +8,7 @@ * @copyright Copyright © 2008-2013, Niklas Laxström, Siebrand Mazeland * @license GPL-2.0-or-later */ -use \MediaWiki\MediaWikiServices; +use MediaWiki\MediaWikiServices; /** * Factory class for accessing message groups individually by id or @@ -22,27 +22,43 @@ class MessageGroups { protected static $prioritycache; /** - * @var array|null + * @var MessageGroup[]|null Map of (group ID => MessageGroup) */ protected $groups; + /** + * @var MessageGroupLoader[]|null + */ + protected $groupLoaders; + /** * @var WANObjectCache|null */ protected $cache; + /** + * Tracks the current cache verison. Update this when there are incompatible changes + * with the last version of the cache to force a new key to be used. The older cache + * will automatically expire and be cleared off. + * @var int + */ + private const CACHE_VERSION = 3; + /** * Initialises the list of groups */ protected function init() { if ( is_array( $this->groups ) ) { - return; + return; // groups already initialized } $value = $this->getCachedGroupDefinitions(); $groups = $value['cc']; - $this->postInit( $groups ); + foreach ( $this->getGroupLoaders() as $loader ) { + $groups += $loader->getGroups(); + } + $this->initGroupsFromDefinitions( $groups ); } /** @@ -50,7 +66,7 @@ class MessageGroups { * @return array */ protected function getCachedGroupDefinitions( $recache = false ) { - global $wgAutoloadClasses, $wgVersion; + global $wgAutoloadClasses; $regenerator = function () { global $wgAutoloadClasses; @@ -58,7 +74,8 @@ class MessageGroups { $groups = $deps = $autoload = []; // This constructs the list of all groups from multiple different sources. // When possible, a cache dependency is created to automatically recreate - // the cache when configuration changes. + // the cache when configuration changes. Currently used by other extensions + // such as Banner Messages and test cases to load message groups. Hooks::run( 'TranslatePostInitGroups', [ &$groups, &$deps, &$autoload ] ); // Register autoloaders for this request, both values modified by reference self::appendAutoloader( $autoload, $wgAutoloadClasses ); @@ -77,11 +94,12 @@ class MessageGroups { $cache = $this->getCache(); /** @var DependencyWrapper $wrapper */ $wrapper = $cache->getWithSetCallback( - $cache->makeKey( 'translate-groups' ), + self::getCacheKey(), $cache::TTL_DAY, $regenerator, [ - 'lockTSE' => 30, // avoid stampedes + 'lockTSE' => 30, // avoid stampedes (mutex) + 'checkKeys' => [ self::getCacheKey() ], 'touchedCallback' => function ( $value ) { return ( $value instanceof DependencyWrapper && $value->isExpired() ) ? time() // treat value as if it just expired (for "lockTSE") @@ -91,12 +109,6 @@ class MessageGroups { ] ); - // B/C for "touchedCallback" param not existing - if ( version_compare( $wgVersion, '1.33', '<' ) && $wrapper->isExpired() ) { - $wrapper = $regenerator(); - $cache->set( $cache->makeKey( 'translate-groups' ), $wrapper, $cache::TTL_DAY ); - } - $value = $wrapper->getValue(); self::appendAutoloader( $value['autoload'], $wgAutoloadClasses ); @@ -104,10 +116,11 @@ class MessageGroups { } /** - * @param array $groups + * Expand process cached groups to objects + * + * @param array $groups Map of (group ID => mixed) */ - protected function postInit( $groups ) { - // Expand groups to objects + protected function initGroupsFromDefinitions( $groups ) { foreach ( $groups as $id => $mixed ) { if ( !is_object( $mixed ) ) { $groups[$id] = call_user_func( $mixed, $id ); @@ -123,10 +136,25 @@ class MessageGroups { * @since 2015.04 */ public function recache() { + // Purge the value from all datacenters + $cache = $this->getCache(); + $cache->touchCheckKey( self::getCacheKey() ); + + $this->clearProcessCache(); + + foreach ( $this->getCacheGroupLoaders() as $cacheLoader ) { + $cacheLoader->recache(); + } + + // Reload the cache value and update the local datacenter $value = $this->getCachedGroupDefinitions( 'recache' ); $groups = $value['cc']; - $this->postInit( $groups ); + foreach ( $this->getGroupLoaders() as $loader ) { + $groups += $loader->getGroups(); + } + + $this->initGroupsFromDefinitions( $groups ); } /** @@ -138,7 +166,11 @@ class MessageGroups { $self = self::singleton(); $cache = $self->getCache(); - $cache->delete( $cache->makeKey( 'translate-groups' ), 1 ); + $cache->delete( self::getCacheKey(), 1 ); + + foreach ( $self->getCacheGroupLoaders() as $cacheLoader ) { + $cacheLoader->clearCache(); + } $self->clearProcessCache(); } @@ -152,6 +184,9 @@ class MessageGroups { */ public function clearProcessCache() { $this->groups = null; + $this->groupLoaders = null; + + self::$prioritycache = null; } /** @@ -176,6 +211,18 @@ class MessageGroups { $this->cache = $cache; } + /** + * Returns the cache key. + * + * @return string + */ + protected static function getCacheKey() { + $self = self::singleton(); + $cache = $self->getCache(); + + return $cache->makeKey( 'translate-groups', 'v' . self::CACHE_VERSION ); + } + /** * Safely merges first array to second array, throwing warning on duplicates and removing * duplicates from the first array. @@ -195,115 +242,56 @@ class MessageGroups { } /** - * Hook: TranslatePostInitGroups - * @param array &$groups - * @param array &$deps - * @param array &$autoload + * Loads and returns group loaders. Group loaders must implement MessageGroupLoader + * and may additionaly implement CachedMessageGroupLoader + * @return MessageGroupLoader[] */ - public static function getTranslatablePages( array &$groups, array &$deps, array &$autoload ) { - global $wgEnablePageTranslation; - - $deps[] = new GlobalDependency( 'wgEnablePageTranslation' ); - - if ( !$wgEnablePageTranslation ) { - return; + protected function getGroupLoaders() { + if ( $this->groupLoaders !== null ) { + return $this->groupLoaders; } - $db = TranslateUtils::getSafeReadDB(); - - $tables = [ 'page', 'revtag' ]; - $vars = [ 'page_id', 'page_namespace', 'page_title' ]; - $conds = [ 'page_id=rt_page', 'rt_type' => RevTag::getType( 'tp:mark' ) ]; - $options = [ 'GROUP BY' => 'rt_page' ]; - $res = $db->select( $tables, $vars, $conds, __METHOD__, $options ); - - foreach ( $res as $r ) { - $title = Title::newFromRow( $r ); - $id = TranslatablePage::getMessageGroupIdFromTitle( $title ); - $groups[$id] = new WikiPageMessageGroup( $id, $title ); - $groups[$id]->setLabel( $title->getPrefixedText() ); - } - } - - /** - * Hook: TranslatePostInitGroups - * @param array &$groups - * @param array &$deps - * @param array &$autoload - */ - public static function getConfiguredGroups( array &$groups, array &$deps, array &$autoload ) { - global $wgTranslateGroupFiles; + $cache = $this->getCache(); - $deps[] = new GlobalDependency( 'wgTranslateGroupFiles' ); + $groupLoaderInstances = $this->groupLoaders = []; - $parser = new MessageGroupConfigurationParser(); - foreach ( $wgTranslateGroupFiles as $configFile ) { - $deps[] = new FileDependency( realpath( $configFile ) ); + // Initialize the dependencies + $deps = [ + 'database' => TranslateUtils::getSafeReadDB(), + 'cache' => $cache + ]; - $yaml = file_get_contents( $configFile ); - $fgroups = $parser->getHopefullyValidConfigurations( - $yaml, - function ( $index, $config, $errmsg ) use ( $configFile ) { - trigger_error( "Document $index in $configFile is invalid: $errmsg", E_USER_WARNING ); - } - ); - - foreach ( $fgroups as $id => $conf ) { - if ( !empty( $conf['AUTOLOAD'] ) && is_array( $conf['AUTOLOAD'] ) ) { - $dir = dirname( $configFile ); - $additions = array_map( function ( $file ) use ( $dir ) { - return "$dir/$file"; - }, $conf['AUTOLOAD'] ); - self::appendAutoloader( $additions, $autoload ); - } + Hooks::run( 'TranslateInitGroupLoaders', [ &$groupLoaderInstances, $deps ] ); - $groups[$id] = MessageGroupBase::factory( $conf ); - } + if ( $groupLoaderInstances === [] ) { + return $this->groupLoaders; } - } - /** - * Hook: TranslatePostInitGroups - * @param array &$groups - * @param array &$deps - * @param array &$autoload - */ - public static function getWorkflowGroups( array &$groups, array &$deps, array &$autoload ) { - global $wgTranslateWorkflowStates; - - $deps[] = new GlobalDependency( 'wgTranslateWorkflowStates' ); + // @phan-suppress-next-line PhanEmptyForeach False positive + foreach ( $groupLoaderInstances as $loader ) { + if ( !$loader instanceof MessageGroupLoader ) { + throw new \InvalidArgumentException( + "MessageGroupLoader - $loader must implement the " . + "MessageGroupLoader interface." + ); + } - if ( $wgTranslateWorkflowStates ) { - $groups['translate-workflow-states'] = new WorkflowStatesMessageGroup(); + $this->groupLoaders[] = $loader; } - } - /** - * Hook: TranslatePostInitGroups - * @param array &$groups - * @param array &$deps - * @param array &$autoload - */ - public static function getAggregateGroups( array &$groups, array &$deps, array &$autoload ) { - $groups += self::loadAggregateGroups(); + return $this->groupLoaders; } /** - * Hook: TranslatePostInitGroups - * @param array &$groups - * @param array &$deps - * @param array &$autoload + * Returns group loaders that implement the CachedMessageGroupLoader + * + * @return CachedMessageGroupLoader[] */ - public static function getCCGroups( array &$groups, array &$deps, array &$autoload ) { - global $wgTranslateCC; - - if ( $wgTranslateCC !== [] ) { - wfDeprecated( '$wgTranslateCC' ); - } - - $deps[] = new GlobalDependency( 'wgTranslateCC' ); - - $groups += $wgTranslateCC; + protected function getCacheGroupLoaders() { + // @phan-suppress-next-line PhanTypeMismatchReturn + return array_filter( $this->getGroupLoaders(), function ( $groupLoader ) { + return $groupLoader instanceof CachedMessageGroupLoader; + } ); } /** @@ -366,7 +354,8 @@ class MessageGroups { * @return bool */ public static function labelExists( $name ) { - $groups = self::loadAggregateGroups(); + $loader = AggregateMessageGroupLoader::getInstance(); + $groups = $loader->loadAggregateGroups(); $labels = array_map( function ( $g ) { /** @var MessageGroup $g */ return $g->getLabel(); @@ -376,7 +365,7 @@ class MessageGroups { /** * Get all enabled message groups. - * @return array ( string => MessageGroup ) + * @return MessageGroup[] Map of (string => MessageGroup) */ public static function getAllGroups() { return self::singleton()->getGroups(); @@ -392,7 +381,7 @@ class MessageGroups { * @since 2011-12-12 */ public static function getPriority( $group ) { - if ( !isset( self::$prioritycache ) ) { + if ( self::$prioritycache === null ) { self::$prioritycache = []; // Abusing this table originally intented for other purposes $db = wfGetDB( DB_REPLICA ); @@ -411,7 +400,7 @@ class MessageGroups { $id = self::normalizeId( $group ); } - return isset( self::$prioritycache[$id] ) ? self::$prioritycache[$id] : ''; + return self::$prioritycache[$id] ?? ''; } /** @@ -428,6 +417,7 @@ class MessageGroups { $id = self::normalizeId( $group ); } + // FIXME: This assumes prioritycache has been populated self::$prioritycache[$id] = $priority; $dbw = wfGetDB( DB_MASTER ); @@ -477,6 +467,7 @@ class MessageGroups { foreach ( $ids as $index => $id ) { if ( $id === $group->getId() ) { unset( $ids[$index] ); + break; } } @@ -580,7 +571,7 @@ class MessageGroups { /** * Get all enabled non-dynamic message groups. * - * @return array + * @return MessageGroup[] Map of (group ID => MessageGroup) */ public function getGroups() { $this->init(); @@ -669,7 +660,7 @@ class MessageGroups { /** * Get only groups of specific type (class). * @param string $type Class name of wanted type - * @return MessageGroupBase[] + * @return MessageGroupBase[] Map of (group ID => MessageGroupBase) * @since 2012-04-30 */ public static function getGroupsByType( $type ) { @@ -691,7 +682,7 @@ class MessageGroups { * In other words: [Group1, Group2, [AggGroup, Group3, Group4]] * * @throws MWException If cyclic structure is detected. - * @return array + * @return array Map of (group ID => MessageGroup or recursive array) */ public static function getGroupStructure() { $groups = self::getAllGroups(); @@ -717,11 +708,7 @@ class MessageGroups { } } - // Work around php bug: https://bugs.php.net/bug.php?id=50688 - // Triggered by ApiQueryMessageGroups for example - MediaWiki\suppressWarnings(); usort( $tree, [ __CLASS__, 'groupLabelSort' ] ); - MediaWiki\restoreWarnings(); /* Now we have two things left in $tree array: * - solitaries: top-level non-aggregate message groups @@ -759,7 +746,7 @@ class MessageGroups { * See getGroupStructure, just collects ids into array * @param MessageGroup $value * @param string $key - * @param bool $used + * @param array $used */ public static function collectGroupIds( MessageGroup $value, $key, $used ) { $used[0][$value->getId()] = true; @@ -783,11 +770,17 @@ class MessageGroups { * AggregateMessageGroup. * * @param AggregateMessageGroup $parent + * @param string[] &$childIds Flat list of child group IDs [returned] + * @param string $fname Calling method name; used to identify recursion [optional] * @throws MWException * @return array * @since Public since 2012-11-29 */ - public static function subGroups( AggregateMessageGroup $parent ) { + public static function subGroups( + AggregateMessageGroup $parent, + array &$childIds = [], + $fname = 'caller' +) { static $recursionGuard = []; $pid = $parent->getId(); @@ -811,14 +804,21 @@ class MessageGroups { if ( $group instanceof AggregateMessageGroup ) { $sid = $group->getId(); $recursionGuard[$pid] = $sid; - $tree[$index] = self::subGroups( $group ); + $tree[$index] = self::subGroups( $group, $childIds, __METHOD__ ); unset( $recursionGuard[$pid] ); + + $childIds[$sid] = 1; } } // Parent group must be first item in the array array_unshift( $tree, $parent ); + if ( $fname !== __METHOD__ ) { + // Move the IDs from the keys to the value for final return + $childIds = array_values( $childIds ); + } + return $tree; } @@ -843,40 +843,6 @@ class MessageGroups { return $seen; } - /** - * Get all the aggregate messages groups defined in translate_metadata table. - * - * @return MessageGroup[] - */ - protected static function loadAggregateGroups() { - $dbw = TranslateUtils::getSafeReadDB(); - $tables = [ 'translate_metadata' ]; - $fields = [ 'tmd_group', 'tmd_value' ]; - $conds = [ 'tmd_key' => 'subgroups' ]; - $res = $dbw->select( $tables, $fields, $conds, __METHOD__ ); - - $groups = []; - foreach ( $res as $row ) { - $id = $row->tmd_group; - - $conf = []; - $conf['BASIC'] = [ - 'id' => $id, - 'label' => TranslateMetadata::get( $id, 'name' ), - 'description' => TranslateMetadata::get( $id, 'description' ), - 'meta' => 1, - 'class' => 'AggregateMessageGroup', - 'namespace' => NS_TRANSLATIONS, - ]; - $conf['GROUPS'] = TranslateMetadata::getSubgroups( $id ); - $group = MessageGroupBase::factory( $conf ); - - $groups[$id] = $group; - } - - return $groups; - } - /** * Filters out messages that should not be translated under normal * conditions. diff --git a/MLEB/Translate/MessageValidator.php b/MLEB/Translate/MessageValidator.php new file mode 100644 index 00000000..e3711321 --- /dev/null +++ b/MLEB/Translate/MessageValidator.php @@ -0,0 +1,345 @@ +groupId = $groupId; + } + + /** Normalise validator keys. */ + protected static function foldValue( string $value ): string { + return str_replace( ' ', '_', strtolower( $value ) ); + } + + /** + * Set the validators for this group. + * + * Removes the existing validators. + * + * @see addValidator() + * @param array $validatorConfigs List of Validator configurations + */ + public function setValidators( array $validatorConfigs ): void { + $this->validators = []; + foreach ( $validatorConfigs as $config ) { + $this->addValidator( $config ); + } + } + + /** Add a validator for this group. */ + public function addValidator( array $validatorConfig ): void { + $validatorId = $validatorConfig['id'] ?? null; + $className = $validatorConfig['class'] ?? null; + + if ( $validatorId !== null ) { + $validator = ValidatorFactory::get( + $validatorId, + $validatorConfig['params'] ?? null + ); + } elseif ( $className !== null ) { + $validator = ValidatorFactory::loadInstance( $className, + $validatorConfig['params'] ?? null ); + } else { + throw new InvalidArgumentException( + 'Validator configuration does not specify the \'class\' or \'id\'.' + ); + } + + $isInsertable = $validatorConfig['insertable'] ?? false; + if ( $isInsertable && !$validator instanceof InsertablesSuggester ) { + throw new InvalidArgumentException( + "Insertable validator does not implement InsertablesSuggester interface." + ); + } + + $this->validators[] = [ + 'instance' => $validator, + 'insertable' => $isInsertable, + 'enforce' => $validatorConfig['enforce'] ?? false, + 'keymatch' => $validatorConfig['keymatch'] ?? false + ]; + } + + /** + * Return the currently set validators for this group. + * + * @return MessageValidatorInterface[] List of validators + */ + public function getValidators(): array { + return array_map( function ( $validator ) { + return $validator['instance']; + }, $this->validators ); + } + + /** + * Return currently set validators that are insertable. + * + * @return MessageValidatorInterface[] List of insertable + * validators + */ + public function getInsertableValidators(): array { + $insertableValidators = []; + foreach ( $this->validators as $validator ) { + if ( $validator['insertable'] === true ) { + $insertableValidators[] = $validator['instance']; + } + } + + return $insertableValidators; + } + + /** + * Validate a translation of a message. + * + * Returns a ValidationResult that contains methods to print the issues. + */ + public function validateMessage( + TMessage $message, string $code, bool $ignoreWarnings = false + ): ValidationResult { + $errors = new ValidationIssues(); + $warnings = new ValidationIssues(); + + foreach ( $this->validators as $validator ) { + $this->runValidation( $validator, $message, $code, $errors, $warnings, $ignoreWarnings ); + } + + $errors = $this->filterValidations( $errors, $code ); + $warnings = $this->filterValidations( $warnings, $code ); + + return new ValidationResult( $errors, $warnings ); + } + + /** Validate a message, and return as soon as any validation fails. */ + public function quickValidate( + TMessage $message, string $code, bool $ignoreWarnings = false + ): ValidationResult { + $errors = new ValidationIssues(); + $warnings = new ValidationIssues(); + + foreach ( $this->validators as $validator ) { + $this->runValidation( $validator, $message, $code, $errors, $warnings, $ignoreWarnings ); + + $errors = $this->filterValidations( $errors, $code ); + $warnings = $this->filterValidations( $warnings, $code ); + + if ( $warnings->hasIssues() || $errors->hasIssues() ) { + break; + } + } + + return new ValidationResult( $errors, $warnings ); + } + + /** @internal Should only be used by tests and inside this class. */ + public static function reloadIgnorePatterns(): void { + global $wgTranslateCheckBlacklist; + + if ( $wgTranslateCheckBlacklist === false ) { + self::$ignorePatterns = []; + return; + } + + $list = PHPVariableLoader::loadVariableFromPHPFile( + $wgTranslateCheckBlacklist, 'checkBlacklist' + ); + $keys = [ 'group', 'check', 'subcheck', 'code', 'message' ]; + + foreach ( $list as $key => $pattern ) { + foreach ( $keys as $checkKey ) { + if ( !isset( $pattern[$checkKey] ) ) { + $list[$key][$checkKey] = '#'; + } elseif ( is_array( $pattern[$checkKey] ) ) { + $list[$key][$checkKey] = + array_map( 'MessageValidator::foldValue', $pattern[$checkKey] ); + } else { + $list[$key][$checkKey] = self::foldValue( $pattern[$checkKey] ); + } + } + } + + self::$ignorePatterns = $list; + } + + /** Filter validations based on a ignore list. */ + private function filterValidations( + ValidationIssues $issues, + string $targetLanguage + ): ValidationIssues { + $filteredIssues = new ValidationIssues(); + + foreach ( $issues as $issue ) { + foreach ( self::$ignorePatterns as $pattern ) { + if ( $this->shouldIgnore( $issue, $this->groupId, $targetLanguage, $pattern ) ) { + continue 2; + } + } + $filteredIssues->add( $issue ); + } + + return $filteredIssues; + } + + private function shouldIgnore( + ValidationIssue $issue, + string $messageGroupId, + string $targetLanguage, + array $pattern + ): bool { + return $this->match( $pattern['group'], $messageGroupId ) + && $this->match( $pattern['check'], $issue->type() ) + && $this->match( $pattern['subcheck'], $issue->subType() ) + && $this->match( $pattern['message'], $issue->messageKey() ) + && $this->match( $pattern['code'], $targetLanguage ); + } + + /** + * Match validation information against a ignore pattern. + * + * @param string|array $pattern + * @param string $value The actual value in the validation produced by the validator + * @return bool True if the pattern matches the value. + */ + protected function match( $pattern, string $value ): bool { + if ( $pattern === '#' ) { + return true; + } elseif ( is_array( $pattern ) ) { + return in_array( strtolower( $value ), $pattern, true ); + } else { + return strtolower( $value ) === $pattern; + } + } + + /** + * Check if key matches validator's key patterns. + * + * Only relevant if the 'keymatch' option is specified in the validator. + * + * @param string $key + * @param string[] $keyMatches + * @return bool True if the key matches one of the matchers, false otherwise. + */ + protected function doesKeyMatch( string $key, array $keyMatches ): bool { + $normalizedKey = lcfirst( $key ); + foreach ( $keyMatches as $match ) { + if ( is_string( $match ) ) { + if ( lcfirst( $match ) === $normalizedKey ) { + return true; + } + continue; + } + + // The value is neither a string nor an array, should never happen but still handle it. + if ( !is_array( $match ) ) { + throw new InvalidArgumentException( + "Invalid key matcher configuration passed. Expected type: array or string. " . + "Recieved: " . gettype( $match ) . ". match value: " . FormatJson::encode( $match ) + ); + } + + $matcherType = $match['type']; + $pattern = $match['pattern']; + + // If regex matches, or wildcard matches return true, else continue processing. + if ( + ( $matcherType === 'regex' && preg_match( $pattern, $normalizedKey ) === 1 ) || + ( $matcherType === 'wildcard' && fnmatch( $pattern, $normalizedKey ) ) + ) { + return true; + } + } + + return false; + } + + /** + * Run the validator to produce warnings and errors. + * + * May also skip validation depending on validator configuration and $ignoreWarnings. + */ + private function runValidation( + array $validatorData, + TMessage $message, + string $targetLanguage, + ValidationIssues $errors, + ValidationIssues $warnings, + bool $ignoreWarnings + ): void { + // Check if key match has been specified, and then check if the key matches it. + /** @var MessageValidatorInterface $validator */ + $validator = $validatorData['instance']; + + $definition = $message->definition(); + if ( $definition === null ) { + // This should NOT happen, but add a check since it seems to be happening + // See: https://phabricator.wikimedia.org/T255669 + return; + } + + try { + $keyMatches = $validatorData['keymatch']; + if ( $keyMatches !== false && !$this->doesKeyMatch( $message->key(), $keyMatches ) ) { + return; + } + + if ( $validatorData['enforce'] === true ) { + $errors->merge( $validator->getIssues( $message, $targetLanguage ) ); + } elseif ( !$ignoreWarnings ) { + $warnings->merge( $validator->getIssues( $message, $targetLanguage ) ); + } + // else: caller does not want warnings, skip running the validator + } catch ( Exception $e ) { + throw new \RuntimeException( + 'An error occurred while validating message: ' . $message->key() . '; group: ' . + $this->groupId . "; validator: " . get_class( $validator ) . "\n. Exception: $e" + ); + } + } +} diff --git a/MLEB/Translate/README b/MLEB/Translate/README index 778f067d..dd7903cf 100644 --- a/MLEB/Translate/README +++ b/MLEB/Translate/README @@ -8,7 +8,7 @@ See http://www.gnu.org/licenses/gpl2.html == Installation == For very very quick start add the following to LocalSettings.php: - require "$IP/extensions/Translate/Translate.php"; + wfLoadExtension( 'Translate' ); $wgGroupPermissions['user']['translate'] = true; $wgGroupPermissions['user']['translate-messagereview'] = true; $wgGroupPermissions['sysop']['pagetranslation'] = true; diff --git a/MLEB/Translate/RELEASE-NOTES b/MLEB/Translate/RELEASE-NOTES index d51836a9..4b053035 100644 --- a/MLEB/Translate/RELEASE-NOTES +++ b/MLEB/Translate/RELEASE-NOTES @@ -1,11 +1,15 @@ -== Translate 2019.01 == -Released at 2019-01-22. +== Translate 2020.07 == +Released at 2020-07-24. === Noteworthy changes === -* $wgTranslateCC is deprecated now. It should be replaced by TranslatePostInitGroups hook. (T212836) -* Updated MicrosoftWebService to new API. (T46679) -* Added proofreading to (Language|MessageGroup)Stats. The statistics table also has updated styling. (T41279) -* Fast proofreading is now possible with CTRL+Enter in the proofreading mode. -* Skipping messages Special:Translate's page mode no longer sometimes marks the translation proofread. (T206748) -* Translatable subpages are no longer moved when moving parent. This used to break those pages. Now they must be moved manually. (T114592) -* Message group stats updating was broken in multiple ways. Please report if you still observe stale statistics. (T134252, T208521) +* Fixes to moving and deletion of translatable pages. ([[phab:T168591|Phab:T168591]]) +* Improved escape sequence handling for the Android XML file format. ([[phab:T192062|Phab:T192062]]) +* Display a help message when editing a translatable page source. ([[phab:T192052|Phab:T192052]]) +* Translations are now published instead of saved, for consistency with rest of MediaWiki. ([[phab:T131132|Phab:T131132]]) +* Updated Google Translate integration ([[phab:T33695|Phab:T33695]]) +* Patrolling of edits to translation pages is allowed. ([[phab:T151172|Phab:T151172]]) +* Message index should now be more robust and issues like "the message does not correspond to any message group" when translating should no longer occur. ([[phab:T221119|Phab:T221119]]) +* Ensure plural keyword other is always present in exports for yaml and json. ([[gerrit:c/mediawiki/extensions/Translate/+/603470|Gerrit Patch]]) +* Interface changes to message validator code. If you have custom validators, you need to migrate them to a new interface. ([[gerrit:c/mediawiki/extensions/Translate/+/604400|Gerrit Patch]]) +* Translatable pages can now prevent wrapping of outdated (and in future untranslated) units by using <translate nowrap> syntax.([[phab:T256625|Phab:T256625]]) +* Slight changes to Special:PageTranslation interface. ([[gerrit:c/mediawiki/extensions/Translate/+/610073|Gerrit Patch]]) diff --git a/MLEB/Translate/Resources.php b/MLEB/Translate/Resources.php deleted file mode 100644 index 25f45ad7..00000000 --- a/MLEB/Translate/Resources.php +++ /dev/null @@ -1,556 +0,0 @@ - __DIR__, - 'remoteExtPath' => 'Translate', - 'targets' => [ 'desktop', 'mobile' ], -]; - -$wgResourceModules['ext.translate'] = [ - 'styles' => 'resources/css/ext.translate.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.base'] = [ - 'scripts' => 'resources/js/ext.translate.base.js', - 'dependencies' => [ - 'ext.translate.hooks', - 'mediawiki.api', - 'mediawiki.util', - ], - 'messages' => [ - 'translate-js-support-unsaved-warning', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.dropdownmenu'] = [ - 'styles' => 'resources/css/ext.translate.dropdownmenu.css', - 'scripts' => 'resources/js/ext.translate.dropdownmenu.js', -] + $resourcePaths; - -$wgResourceModules['ext.translate.editor'] = [ - 'scripts' => [ - 'resources/js/ext.translate.editor.helpers.js', - 'resources/js/ext.translate.editor.js', - 'resources/js/ext.translate.editor.shortcuts.js', - 'resources/js/ext.translate.pagemode.js', - 'resources/js/ext.translate.proofread.js', - ], - 'styles' => [ - 'resources/css/ext.translate.editor.css', - 'resources/css/ext.translate.pagemode.css', - 'resources/css/ext.translate.proofread.css', - ], - 'dependencies' => [ - 'ext.translate.base', - 'ext.translate.dropdownmenu', - 'ext.translate.hooks', - 'ext.translate.storage', - 'jquery.accessKeyLabel', - 'jquery.autosize', - 'jquery.makeCollapsible', - 'jquery.textSelection', - 'jquery.textchange', - 'mediawiki.Uri', - 'mediawiki.api', - 'mediawiki.jqueryMsg', - 'mediawiki.language', - 'mediawiki.notify', - 'mediawiki.user', - 'mediawiki.util', - ], - 'messages' => [ - 'translate-edit-askpermission', - 'translate-edit-nopermission', - 'tux-editor-add-desc', - 'tux-editor-ask-help', - 'tux-editor-cancel-button-label', - 'tux-editor-close-tooltip', - 'tux-editor-collapse-tooltip', - 'tux-editor-confirm-button-label', - 'tux-editor-discard-changes-button-label', - 'tux-editor-doc-editor-cancel', - 'tux-editor-doc-editor-placeholder', - 'tux-editor-doc-editor-save', - 'tux-editor-edit-desc', - 'tux-editor-expand-tooltip', - 'tux-editor-in-other-languages', - 'tux-editor-loading', - 'tux-editor-message-desc-less', - 'tux-editor-message-desc-more', - 'tux-editor-message-tools-show-editor', - 'tux-editor-message-tools-delete', - 'tux-editor-message-tools-history', - 'tux-editor-message-tools-translations', - 'tux-editor-message-tools-linktothis', - 'tux-editor-n-uses', - 'tux-editor-need-more-help', - 'tux-editor-outdated-warning', - 'tux-editor-outdated-warning-diff-link', - 'tux-editor-paste-original-button-label', - 'tux-editor-placeholder', - 'tux-editor-editsummary-placeholder', - 'tux-editor-proofread-button-label', - 'tux-editor-save-button-label', - 'tux-editor-save-failed', - 'tux-editor-shortcut-info', - 'tux-editor-skip-button-label', - 'tux-editor-suggestions-title', - 'tux-editor-tm-match', - 'tux-proofread-action-tooltip', - 'tux-proofread-edit-label', - 'tux-proofread-translated-by-self', - 'tux-session-expired', - 'tux-status-saving', - 'tux-status-translated', - 'tux-status-unsaved', - 'tux-save-unknown-error', - 'tux-warnings-hide', - 'tux-warnings-more', - 'spamprotectiontext', - ], -] + $resourcePaths; - -if ( version_compare( $wgVersion, '1.32', '<' ) ) { - // Support: MediaWiki 1.31 and earlier - $wgResourceModules['ext.translate.editor']['dependencies'][] = 'mediawiki.api.parse'; -} - -$wgResourceModules['ext.translate.groupselector'] = [ - 'styles' => 'resources/css/ext.translate.groupselector.less', - 'scripts' => 'resources/js/ext.translate.groupselector.js', - 'dependencies' => [ - 'ext.translate.base', - 'ext.translate.loader', - 'ext.translate.statsbar', - 'jquery.ui.position', - 'mediawiki.jqueryMsg', - ], - 'messages' => [ - 'translate-msggroupselector-search-all', - 'translate-msggroupselector-search-placeholder', - 'translate-msggroupselector-search-recent', - 'translate-msggroupselector-view-subprojects', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.hooks'] = [ - 'scripts' => 'resources/js/ext.translate.hooks.js', -] + $resourcePaths; - -$wgResourceModules['ext.translate.legacy'] = [ - 'styles' => 'resources/css/ext.translate.legacy.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.loader'] = [ - 'styles' => 'resources/css/ext.translate.loader.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.messagetable'] = [ - 'scripts' => 'resources/js/ext.translate.messagetable.js', - 'styles' => 'resources/css/ext.translate.messagetable.less', - 'dependencies' => [ - 'ext.translate.base', - 'ext.translate.hooks', - 'ext.translate.loader', - 'ext.translate.parsers', - 'jquery.textchange', - 'jquery.throttle-debounce', - 'mediawiki.Uri', - 'mediawiki.jqueryMsg', - 'mediawiki.util', - ], - 'messages' => [ - 'api-error-badtoken', - 'api-error-emptypage', - 'api-error-unknownerror', - 'tpt-unknown-page', - 'translate-edit-title', - 'tux-edit', - 'tux-empty-list-all', - 'tux-empty-list-all-guide', - 'tux-empty-list-other', - 'tux-empty-list-other-action', - 'tux-empty-list-other-guide', - 'tux-empty-list-other-link', - 'tux-empty-list-translated', - 'tux-empty-list-translated-action', - 'tux-empty-list-translated-guide', - 'tux-empty-no-messages-to-display', - 'tux-empty-no-outdated-messages', - 'tux-empty-nothing-new-to-proofread', - 'tux-empty-nothing-to-proofread', - 'tux-empty-show-optional-messages', - 'tux-empty-there-are-optional', - 'tux-empty-you-can-help-providing', - 'tux-empty-you-can-review-already-proofread', - 'tux-message-filter-advanced-button', - 'tux-message-filter-placeholder', - 'tux-message-filter-result', - 'tux-messagetable-loading-messages', - 'tux-messagetable-more-messages', - 'tux-status-fuzzy', - 'tux-status-optional', - 'tux-status-proofread', - 'tux-status-translated', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.messagewebimporter'] = [ - 'styles' => 'resources/css/ext.translate.messagewebimporter.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.multiselectautocomplete'] = [ - 'scripts' => 'resources/js/ext.translate.multiselectautocomplete.js', - 'dependencies' => [ - 'jquery.ui.autocomplete', - ], - 'targets' => [ 'desktop' ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.navitoggle'] = [ - 'skinScripts' => [ - 'vector' => 'resources/js/ext.translate.navitoggle.js', - ], - 'skinStyles' => [ - 'vector' => 'resources/css/ext.translate.navitoggle.css', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.pagetranslation.uls'] = [ - 'scripts' => 'resources/js/ext.translate.pagetranslation.uls.js', - 'dependencies' => [ - 'ext.uls.mediawiki', - 'mediawiki.util', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.parsers'] = [ - 'scripts' => 'resources/js/ext.translate.parsers.js', - 'dependencies' => [ - 'mediawiki.util', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.quickedit'] = [ - 'styles' => 'resources/css/ext.translate.quickedit.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.selecttoinput'] = [ - 'scripts' => 'resources/js/ext.translate.selecttoinput.js', -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.aggregategroups'] = [ - 'scripts' => 'resources/js/ext.translate.special.aggregategroups.js', - 'dependencies' => [ - 'jquery.ui.autocomplete', - 'mediawiki.api', - 'mediawiki.util', - ], - 'messages' => [ - 'tpt-aggregategroup-add', - 'tpt-aggregategroup-edit-description', - 'tpt-aggregategroup-edit-name', - 'tpt-aggregategroup-remove-confirm', - 'tpt-aggregategroup-update', - 'tpt-aggregategroup-update-cancel', - 'tpt-invalid-group', - ], - 'targets' => [ 'desktop' ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.aggregategroups.styles'] = [ - 'styles' => 'resources/css/ext.translate.special.aggregategroups.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.importtranslations'] = [ - 'scripts' => 'resources/js/ext.translate.special.importtranslations.js', - 'dependencies' => [ - 'jquery.ui.autocomplete', - ], - 'targets' => [ 'desktop' ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.languagestats'] = [ - 'scripts' => 'resources/js/ext.translate.special.languagestats.js', - 'messages' => [ - 'translate-langstats-collapse', - 'translate-langstats-collapseall', - 'translate-langstats-expand', - 'translate-langstats-expandall', - ], - 'dependencies' => 'jquery.tablesorter', - 'targets' => [ 'desktop' ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.managegroups'] = [ - 'styles' => 'resources/css/ext.translate.special.managegroups.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.managetranslatorsandbox'] = [ - 'scripts' => 'resources/js/ext.translate.special.managetranslatorsandbox.js', - 'dependencies' => [ - 'ext.translate.loader', - 'ext.translate.translationstashstorage', - 'ext.uls.mediawiki', - 'jquery.ui.dialog', - 'mediawiki.api', - 'mediawiki.jqueryMsg', - 'mediawiki.language', - 'mediawiki.notify', - ], - 'messages' => [ - 'tsb-accept-all-button-label', - 'tsb-accept-button-label', - 'tsb-reject-confirmation', - 'tsb-accept-confirmation', - 'tsb-all-languages-button-label', - 'tsb-didnt-make-any-translations', - 'tsb-no-requests-from-new-users', - 'tsb-older-requests', - 'tsb-reject-all-button-label', - 'tsb-reject-button-label', - 'tsb-reminder-failed', - 'tsb-reminder-link-text', - 'tsb-reminder-sending', - 'tsb-reminder-sent', - 'tsb-reminder-sent-new', - 'tsb-request-count', - 'tsb-selected-count', - 'tsb-translations-current', - 'tsb-translations-source', - 'tsb-translations-user', - 'tsb-user-posted-a-comment', - ], - 'targets' => [ 'desktop' ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.managetranslatorsandbox.styles'] = [ - 'styles' => 'resources/css/ext.translate.special.managetranslatorsandbox.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.pagemigration'] = [ - 'scripts' => 'resources/js/ext.translate.special.pagemigration.js', - 'dependencies' => [ - 'jquery.ajaxdispatcher', - 'mediawiki.api', - 'mediawiki.Title', - 'mediawiki.ui', - 'mediawiki.ui.button', - ], - 'messages' => [ - 'pm-add-icon-hover-text', - 'pm-delete-icon-hover-text', - 'pm-extra-units-warning', - 'pm-langcode-missing', - 'pm-old-translations-missing', - 'pm-page-does-not-exist', - 'pm-pagename-missing', - 'pm-pagetitle-invalid', - 'pm-pagetitle-missing', - 'pm-swap-icon-hover-text', - 'pm-on-import-message-text', - 'pm-on-save-message-text', - 'pm-savepages-button-label', - 'pm-cancel-button-label', - 'tpt-unknown-page', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.pagemigration.styles'] = [ - 'styles' => 'resources/css/ext.translate.special.pagemigration.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.pagepreparation'] = [ - 'scripts' => 'resources/js/ext.translate.special.pagepreparation.js', - 'dependencies' => [ - 'mediawiki.RegExp', - 'mediawiki.Title', - 'mediawiki.diff.styles', - 'mediawiki.api', - 'mediawiki.jqueryMsg', - 'mediawiki.ui', - ], - 'messages' => [ - 'pp-already-prepared-message', - 'pp-pagename-missing', - 'pp-prepare-message', - 'pp-save-button-label', - 'pp-save-message', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.pagepreparation.styles'] = [ - 'styles' => 'resources/css/ext.translate.special.pagepreparation.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.pagetranslation'] = [ - 'scripts' => 'resources/js/ext.translate.special.pagetranslation.js', - 'dependencies' => [ - 'ext.translate.multiselectautocomplete', - 'mediawiki.ui.button', - 'mediawiki.Uri', - 'user.tokens', - ], - 'targets' => [ 'desktop' ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.pagetranslation.styles'] = [ - 'styles' => 'resources/css/ext.translate.special.pagetranslation.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.searchtranslations'] = [ - 'scripts' => 'resources/js/ext.translate.special.searchtranslations.js', - 'dependencies' => [ - 'ext.translate.editor', - 'ext.translate.groupselector', - 'ext.uls.mediawiki', - 'mediawiki.Uri', - 'mediawiki.language', - ], - 'messages' => [ - 'translate-search-more-groups-info', - 'translate-search-more-languages-info', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.searchtranslations.operatorsuggest'] = [ - 'scripts' => 'resources/js/ext.translate.special.operatorsuggest.js', - 'dependencies' => [ - 'jquery.ui.autocomplete', - ], - 'targets' => [ 'desktop' ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.searchtranslations.styles'] = [ - 'styles' => 'resources/css/ext.translate.special.searchtranslations.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.supportedlanguages'] = [ - 'styles' => 'resources/css/ext.translate.special.supportedlanguages.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.translate'] = [ - 'scripts' => 'resources/js/ext.translate.special.translate.js', - 'dependencies' => [ - 'ext.translate.base', - 'ext.translate.editor', - 'ext.translate.groupselector', - 'ext.translate.messagetable', - 'ext.translate.navitoggle', - 'ext.translate.recentgroups', - 'ext.translate.workflowselector', - 'jquery.uls.data', - 'mediawiki.Uri', - 'mediawiki.api', - 'mediawiki.jqueryMsg', - ], - 'messages' => [ - 'tpt-discouraged-language-content', - 'tpt-discouraged-language-force-content', - 'tpt-discouraged-language-force-header', - 'tpt-discouraged-language-header', - 'tux-editor-proofreading-hide-own-translations', - 'tux-editor-proofreading-show-own-translations', - ], -] + $resourcePaths; - -if ( version_compare( $wgVersion, '1.32', '<' ) ) { - // Support: MediaWiki 1.31 and earlier - $wgResourceModules['ext.translate.special.translate']['dependencies'][] = 'mediawiki.api.parse'; -} - -$wgResourceModules['ext.translate.special.translate.styles'] = [ - 'styles' => 'resources/css/ext.translate.special.translate.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.translationstash'] = [ - 'scripts' => 'resources/js/ext.translate.special.translationstash.js', - 'styles' => 'resources/css/ext.translate.special.translationstash.css', - 'dependencies' => [ - 'ext.translate.editor', - 'ext.translate.messagetable', - 'ext.translate.translationstashstorage', - 'ext.uls.mediawiki', - 'mediawiki.api', - 'mediawiki.language', - ], - 'messages' => [ - 'translate-translationstash-skip-button-label', - 'translate-translationstash-translations', - 'tsb-limit-reached-body', - 'tsb-limit-reached-title', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.special.translationstats'] = [ - 'scripts' => 'resources/js/ext.translate.special.translationstats.js', -] + $resourcePaths; - -$wgResourceModules['ext.translate.statsbar'] = [ - 'styles' => 'resources/css/ext.translate.statsbar.css', - 'scripts' => 'resources/js/ext.translate.statsbar.js', - 'messages' => [ - 'translate-statsbar-tooltip', - 'translate-statsbar-tooltip-with-fuzzy', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.statstable'] = [ - 'styles' => 'resources/css/ext.translate.statstable.less', - 'targets' => [ 'desktop', 'mobile' ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.storage'] = [ - 'scripts' => 'resources/js/ext.translate.storage.js', -] + $resourcePaths; - -$wgResourceModules['ext.translate.tabgroup'] = [ - 'styles' => 'resources/css/ext.translate.tabgroup.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.tag.languages'] = [ - 'styles' => 'resources/css/ext.translate.tag.languages.css', -] + $resourcePaths; - -$wgResourceModules['ext.translate.translationstashstorage'] = [ - 'scripts' => 'resources/js/ext.translate.translationstashstorage.js', - 'dependencies' => [ - 'mediawiki.api', - ], -] + $resourcePaths; - -$wgResourceModules['ext.translate.workflowselector'] = [ - 'styles' => 'resources/css/ext.translate.workflowselector.css', - 'scripts' => 'resources/js/ext.translate.workflowselector.js', - 'messages' => [ - 'translate-workflow-set-doing', - 'translate-workflow-state-', - 'translate-workflowstatus', - ], - 'dependencies' => [ - 'ext.translate.dropdownmenu', - 'mediawiki.api', - ], -] + $resourcePaths; - -// Third party module -$wgResourceModules['jquery.ajaxdispatcher'] = [ - 'scripts' => 'resources/js/jquery.ajaxdispatcher.js', -] + $resourcePaths; - -$wgResourceModules['jquery.autosize'] = [ - 'scripts' => 'resources/js/jquery.autosize.js', -] + $resourcePaths; - -$wgResourceModules['jquery.textchange'] = [ - 'scripts' => 'resources/js/jquery.textchange.js', -] + $resourcePaths; diff --git a/MLEB/Translate/Translate.alias.php b/MLEB/Translate/Translate.alias.php index 2008d703..ad4ec79d 100644 --- a/MLEB/Translate/Translate.alias.php +++ b/MLEB/Translate/Translate.alias.php @@ -14,7 +14,6 @@ $specialPageAliases['en'] = [ 'ImportTranslations' => [ 'ImportTranslations' ], 'ExportTranslations' => [ 'ExportTranslations' ], 'LanguageStats' => [ 'LanguageStats' ], - 'Magic' => [ 'AdvancedTranslate', 'Magic' ], 'ManageMessageGroups' => [ 'ManageMessageGroups' ], 'ManageTranslatorSandbox' => [ 'ManageTranslatorSandbox', 'TranslateSandbox' ], 'MessageGroupStats' => [ 'MessageGroupStats' ], @@ -33,7 +32,6 @@ $specialPageAliases['en'] = [ /** Afrikaans (Afrikaans) */ $specialPageAliases['af'] = [ 'LanguageStats' => [ 'TaalStatsistieke' ], - 'Magic' => [ 'GevorderdeVertaal' ], 'PageTranslation' => [ 'BladsyVertaling' ], 'Translate' => [ 'Vertaal' ], 'TranslationStats' => [ 'VertaalStatistieke' ], @@ -45,7 +43,6 @@ $specialPageAliases['ar'] = [ 'AggregateGroups' => [ 'مجموعات_مجمعة' ], 'ImportTranslations' => [ 'استيراد_الترجمات' ], 'LanguageStats' => [ 'إحصاءات_اللغات' ], - 'Magic' => [ 'ترجمة_متقدمة', 'ماجيك' ], 'ManageMessageGroups' => [ 'التحكم_بمجموعات_الرسائل' ], 'ManageTranslatorSandbox' => [ 'التحكم_بملعب_المترجم', 'ملعب_الترجمة' ], 'MessageGroupStats' => [ 'إحصاءات_مجموعات_الرسائل' ], @@ -74,7 +71,6 @@ $specialPageAliases['arz'] = [ 'AggregateGroups' => [ 'مجموعات_متجمعه' ], 'ImportTranslations' => [ 'استوراد_الترجمات' ], 'LanguageStats' => [ 'احصائيات_اللغات' ], - 'Magic' => [ 'ترجمة_متقدمة', 'ماجيك' ], 'ManageMessageGroups' => [ 'التحكم_بمجموعات_الرسايل' ], 'ManageTranslatorSandbox' => [ 'التحكم_بسبوره_المترجم', 'سبوره_الترجمه' ], 'MessageGroupStats' => [ 'احصاءات_مجموعات_الرسايل' ], @@ -93,7 +89,6 @@ $specialPageAliases['arz'] = [ $specialPageAliases['as'] = [ 'ImportTranslations' => [ 'অনুবাদ_আমদানি_কৰক' ], 'LanguageStats' => [ 'ভাষাৰ_পৰিসংখ্যা' ], - 'Magic' => [ 'উন্নত_অনুবাদ', 'যাদু' ], 'MessageGroupStats' => [ 'বাৰ্তাৰ_গোট_পৰিসংখ্যা' ], 'PageTranslation' => [ 'পৃষ্ঠা_অনুবাদ' ], 'SupportedLanguages' => [ 'সমৰ্থিত_ভাষাসমূহ' ], @@ -112,7 +107,6 @@ $specialPageAliases['av'] = [ 'AggregateGroups' => [ 'Агрегированные_группы' ], 'ImportTranslations' => [ 'Импорт_переводов' ], 'LanguageStats' => [ 'Статистика_языка' ], - 'Magic' => [ 'Расширенный_перевод' ], 'ManageMessageGroups' => [ 'Управление_группами_сообщений' ], 'MessageGroupStats' => [ 'Статистика_группы_сообщений' ], 'PageTranslation' => [ 'Перевод_страниц' ], @@ -138,14 +132,12 @@ $specialPageAliases['azb'] = [ /** Bashkir (башҡортса) */ $specialPageAliases['ba'] = [ - 'Magic' => [ 'AdvancedTranslate' ], 'Translate' => [ 'Translate' ], 'Translations' => [ 'Translations' ], ]; /** Southern Balochi (بلوچی مکرانی) */ $specialPageAliases['bcc'] = [ - 'Magic' => [ 'پیشرپتگین ترجمه' ], 'Translate' => [ 'ترجمه' ], ]; @@ -160,7 +152,6 @@ $specialPageAliases['bgn'] = [ 'AggregateGroups' => [ 'گروپ_ئآنی_جم' ], 'ImportTranslations' => [ 'ترجمه_ئانی_درون_بررّگ' ], 'LanguageStats' => [ 'زبان_ئانی_سرجم' ], - 'Magic' => [ 'پیشرپته_ئین_ترجمه' ], 'ManageMessageGroups' => [ 'پیامی_گروپ_ئانی_مدیریت' ], 'ManageTranslatorSandbox' => [ 'ترجمه_ئی_تمرین_ئی_تاکدیمی_مدیریت' ], 'MessageGroupStats' => [ 'پیام_ی_گروپ_ئی_سرجم' ], @@ -178,7 +169,6 @@ $specialPageAliases['bgn'] = [ $specialPageAliases['bjn'] = [ 'ImportTranslations' => [ 'Impor_tarjamahan' ], 'LanguageStats' => [ 'Statistik_bahasa' ], - 'Magic' => [ 'Tarjamahakan_lanjut' ], 'PageTranslation' => [ 'Tarjamahan_tungkaran' ], 'Translate' => [ 'Tarjamahakan' ], 'TranslationStats' => [ 'Statistik_tarjamahan' ], @@ -191,7 +181,6 @@ $specialPageAliases['bn'] = [ 'ImportTranslations' => [ 'অনুবাদ_আমদানি' ], 'ExportTranslations' => [ 'অনুবাদ_রপ্তানি' ], 'LanguageStats' => [ 'ভাষার_পরিসংখ্যান' ], - 'Magic' => [ 'উন্নত_অনুবাদ', 'জাদু' ], 'ManageMessageGroups' => [ 'বার্তার_গোষ্ঠী_পরিচালনা' ], 'ManageTranslatorSandbox' => [ 'অনুবাদকের_খেলাঘর_পরিচালনা', 'অনুবাদের_খেলাঘর' ], 'MessageGroupStats' => [ 'বার্তা_দলের_পরিসংখ্যান' ], @@ -211,7 +200,6 @@ $specialPageAliases['bn'] = [ $specialPageAliases['br'] = [ 'ImportTranslations' => [ 'EnporzhiañTroidigezhioù' ], 'LanguageStats' => [ 'StadegoùYezh' ], - 'Magic' => [ 'TreiñAraokaet' ], 'PageTranslation' => [ 'TroidigezhPajenn' ], 'SupportedLanguages' => [ 'Yezhoùskoret' ], 'Translate' => [ 'Treiñ' ], @@ -224,7 +212,6 @@ $specialPageAliases['bs'] = [ 'ImportTranslations' => [ 'UvozPrijevoda' ], 'ExportTranslations' => [ 'IzvozPrijevoda' ], 'LanguageStats' => [ 'StatistikeJezika' ], - 'Magic' => [ 'NaprednoPrevodjenje' ], 'PageTranslation' => [ 'PrijevodStranice' ], 'Translate' => [ 'Prevedi' ], 'TranslationStats' => [ 'StatistikePrevoda' ], @@ -243,7 +230,6 @@ $specialPageAliases['bxr'] = [ $specialPageAliases['cdo'] = [ 'ImportTranslations' => [ '導底翻譯' ], 'LanguageStats' => [ '語言統計' ], - 'Magic' => [ '高級翻譯' ], 'ManageMessageGroups' => [ '管理信息組' ], 'MessageGroupStats' => [ '信息組統計' ], 'PageTranslation' => [ '頁面翻譯' ], @@ -257,7 +243,6 @@ $specialPageAliases['ce'] = [ 'AggregateGroups' => [ 'Агрегированни_тобанаш' ], 'ImportTranslations' => [ 'Гоч_йинарш_импорт_яр' ], 'LanguageStats' => [ 'Меттан_статистика' ], - 'Magic' => [ 'Шордина_гочдар' ], 'ManageMessageGroups' => [ 'Хаамийн_тобанийн_урхалла_дар' ], 'MessageGroupStats' => [ 'Хаамийн_тобанийн_статистика' ], 'PageTranslation' => [ 'АгӀонаш_гоч_яр' ], @@ -290,7 +275,6 @@ $specialPageAliases['de'] = [ 'AggregateGroups' => [ 'Zusammenfassende_Nachrichtengruppen' ], 'ImportTranslations' => [ 'Übersetzungen_importieren' ], 'LanguageStats' => [ 'Sprachstatistiken' ], - 'Magic' => [ 'Erweitertes_Übersetzen' ], 'ManageMessageGroups' => [ 'Nachrichtengruppen_verwalten' ], 'ManageTranslatorSandbox' => [ 'Übersetzerspielwiese_verwalten' ], 'MessageGroupStats' => [ 'Nachrichtengruppenstatistiken' ], @@ -311,7 +295,6 @@ $specialPageAliases['diq'] = [ 'AggregateGroups' => [ 'GrubéAggregate' ], 'ImportTranslations' => [ 'AçarnayışaZerrefi' ], 'LanguageStats' => [ 'İstatistikêZıwani' ], - 'Magic' => [ 'AçarnayışoHerayen' ], 'ManageMessageGroups' => [ 'GrubanéMesacanİdareke' ], 'ManageTranslatorSandbox' => [ 'İdareyaQumdorAçarnayış', 'QumdorAçarnayış' ], 'MessageGroupStats' => [ 'İstatistikêGrubaMesacan' ], @@ -328,7 +311,6 @@ $specialPageAliases['diq'] = [ /** Lower Sorbian (dolnoserbski) */ $specialPageAliases['dsb'] = [ 'LanguageStats' => [ 'Rěcne statistiki' ], - 'Magic' => [ 'Rozšyrjone pśełožowanje' ], 'Translate' => [ 'Přełožiś' ], 'TranslationStats' => [ 'Statistika pśełožkow' ], 'Translations' => [ 'Pśełožki' ], @@ -345,7 +327,6 @@ $specialPageAliases['el'] = [ 'AggregateGroups' => [ 'ΣυγκεντρωτικέςΟμάδες' ], 'ImportTranslations' => [ 'ΕισαγωγήΜεταφράσεων' ], 'LanguageStats' => [ 'ΣτατιστικάΓλώσσας' ], - 'Magic' => [ 'ΠροχωρημένηΜετάφραση', 'ΜαγικέςΛέξεις' ], 'ManageMessageGroups' => [ 'ΔιαχείρισηΟμάδωνΜηνυμάτων' ], 'ManageTranslatorSandbox' => [ 'ΔιαχείρισηΑμμοδοχείουΜεταφραστή', 'ΑμμοδοχείοΜετάφρασης' ], 'MessageGroupStats' => [ 'ΣτατιστικάΟμάδαςΜηνυμάτων' ], @@ -362,7 +343,6 @@ $specialPageAliases['el'] = [ $specialPageAliases['eo'] = [ 'ImportTranslations' => [ 'Enporti_tradukojn', 'Importi_tradukojn' ], 'LanguageStats' => [ 'Lingvaj_statistikoj' ], - 'Magic' => [ 'Altnivela_tradukado' ], 'SearchTranslations' => [ 'Serĉi_tradukojn' ], 'SupportedLanguages' => [ 'Subtenataj_lingvoj' ], 'Translate' => [ 'Traduki' ], @@ -372,7 +352,6 @@ $specialPageAliases['eo'] = [ /** Spanish (español) */ $specialPageAliases['es'] = [ - 'Magic' => [ 'Traducción_avanzada' ], 'SupportedLanguages' => [ 'IdiomasAdmitidos' ], 'Translate' => [ 'Traducir' ], 'Translations' => [ 'Traducciones' ], @@ -383,7 +362,6 @@ $specialPageAliases['fa'] = [ 'AggregateGroups' => [ 'جمع_گروه‌ها' ], 'ImportTranslations' => [ 'درون‌بری_ترجمه‌ها' ], 'LanguageStats' => [ 'آمار_زبان‌ها' ], - 'Magic' => [ 'ترجمه_پیشرفته' ], 'ManageMessageGroups' => [ 'مدیریت_گروه‌های_پیغام' ], 'ManageTranslatorSandbox' => [ 'مدیریت_صفحهٔ_تمرین_ترجمه', 'صفحهٔ_تمرین_ترجمه' ], 'MessageGroupStats' => [ 'آمار_گروه_پیغام' ], @@ -401,7 +379,6 @@ $specialPageAliases['fa'] = [ $specialPageAliases['fi'] = [ 'ImportTranslations' => [ 'Käännösten_tuonti' ], 'LanguageStats' => [ 'Kielitilastot' ], - 'Magic' => [ 'Laajennettu_kääntäminen' ], 'ManageMessageGroups' => [ 'Viestiryhmien_hallinta' ], 'PageTranslation' => [ 'Sivujen_kääntäminen' ], 'SupportedLanguages' => [ 'Tuetut_kielet' ], @@ -413,7 +390,6 @@ $specialPageAliases['fi'] = [ /** French (français) */ $specialPageAliases['fr'] = [ 'LanguageStats' => [ 'StatistiquesDesLangues', 'Statistiques_des_langues' ], - 'Magic' => [ 'Traduction_avancée', 'Traductionavancée', 'Traduction_avancee', 'Traductionavancee' ], 'Translate' => [ 'Traduire' ], 'TranslationStats' => [ 'StatistiquesDesTraductions', 'Statistiques_des_traductions' ], 'Translations' => [ 'Traductions' ], @@ -422,7 +398,6 @@ $specialPageAliases['fr'] = [ /** Arpitan (arpetan) */ $specialPageAliases['frp'] = [ 'LanguageStats' => [ 'Statistiques_de_les_lengoues', 'StatistiquesDeLesLengoues' ], - 'Magic' => [ 'Traduccion_avanciê', 'TraduccionAavanciê' ], 'Translate' => [ 'Traduire' ], 'TranslationStats' => [ 'Statistiques_de_traduccion', 'StatistiquesDeTraduccion' ], 'Translations' => [ 'Traduccions' ], @@ -442,7 +417,6 @@ $specialPageAliases['fy'] = [ $specialPageAliases['gl'] = [ 'ImportTranslations' => [ 'Importar_traducións' ], 'LanguageStats' => [ 'Estatísticas_da_lingua' ], - 'Magic' => [ 'Tradución_avanzada' ], 'PageTranslation' => [ 'Tradución_de_páxinas' ], 'Translate' => [ 'Traducir' ], 'TranslationStats' => [ 'Estatísticas_da_tradución' ], @@ -453,7 +427,6 @@ $specialPageAliases['gl'] = [ $specialPageAliases['gsw'] = [ 'ImportTranslations' => [ 'Übersetzige_importiere' ], 'LanguageStats' => [ 'Sprochstatischtik' ], - 'Magic' => [ 'Usgwytets_Ibersetze' ], 'ManageMessageGroups' => [ 'Noochrichtegruppe_verwalte' ], 'MessageGroupStats' => [ 'Noochrichtegruppestatistike' ], 'PageTranslation' => [ 'Übersetzig_vo_Syte' ], @@ -469,7 +442,6 @@ $specialPageAliases['he'] = [ 'AggregateGroups' => [ 'קבוצות_משולבות' ], 'ImportTranslations' => [ 'ייבוא_תרגומים' ], 'LanguageStats' => [ 'סטטיסטיקות_שפה' ], - 'Magic' => [ 'תרגום_מתקדם' ], 'ManageMessageGroups' => [ 'ניהול_קבוצות_הודעות' ], 'ManageTranslatorSandbox' => [ 'ניהול_ארגז_חול_של_מתרגמים' ], 'MessageGroupStats' => [ 'סטטיסטיקות_של_קבוצות_הודעות' ], @@ -499,7 +471,6 @@ $specialPageAliases['hr'] = [ $specialPageAliases['hsb'] = [ 'ImportTranslations' => [ 'Přełožki_importować' ], 'LanguageStats' => [ 'Rěčne_statistiki' ], - 'Magic' => [ 'Rozšěrjene_přełožowanje', 'Magiske' ], 'PageTranslation' => [ 'Přełožowanje_stronow' ], 'SearchTranslations' => [ 'Přełožki_pytać' ], 'SupportedLanguages' => [ 'Podpěrane_rěče' ], @@ -512,7 +483,6 @@ $specialPageAliases['hsb'] = [ $specialPageAliases['ht'] = [ 'ImportTranslations' => [ 'EnpòteTradiksyon' ], 'LanguageStats' => [ 'EstatistikLang' ], - 'Magic' => [ 'TradiksyonAvanse', 'Magik' ], 'ManageMessageGroups' => [ 'GereGwoupMesaj' ], 'PageTranslation' => [ 'TradiksyonPaj' ], 'SupportedLanguages' => [ 'LangSipòte' ], @@ -524,7 +494,6 @@ $specialPageAliases['ht'] = [ /** Hungarian (magyar) */ $specialPageAliases['hu'] = [ 'LanguageStats' => [ 'Nyelvi_statisztika' ], - 'Magic' => [ 'Fejlettebb_fordító' ], 'Translate' => [ 'Fordítás' ], 'TranslationStats' => [ 'Fordítási_statisztika' ], 'Translations' => [ 'Fordítások' ], @@ -534,7 +503,6 @@ $specialPageAliases['hu'] = [ $specialPageAliases['ia'] = [ 'ImportTranslations' => [ 'Importar_traductiones' ], 'LanguageStats' => [ 'Statisticas_de_linguas' ], - 'Magic' => [ 'Traduction_avantiate', 'Magia' ], 'ManageMessageGroups' => [ 'Gerer_gruppos_de_messages' ], 'MessageGroupStats' => [ 'Statisticas_de_gruppos_de_messages' ], 'PageTranslation' => [ 'Traduction_de_paginas' ], @@ -549,7 +517,6 @@ $specialPageAliases['ia'] = [ $specialPageAliases['id'] = [ 'ImportTranslations' => [ 'Impor_terjemahan', 'ImporTerjemahan' ], 'LanguageStats' => [ 'Statistik_bahasa', 'StatistikBahasa' ], - 'Magic' => [ 'Terjemahkan_lanjut', 'TerjemahkanLanjut' ], 'ManageMessageGroups' => [ 'Kelola_pesan_grup', 'KelolaPesanGrup' ], 'MessageGroupStats' => [ 'Statistik_pesan_grup', 'StatistikPesanGrup' ], 'PageTranslation' => [ 'Terjemahan_halaman', 'TerjemahanHalaman' ], @@ -570,7 +537,6 @@ $specialPageAliases['it'] = [ 'AggregateGroups' => [ 'GruppiAggregati' ], 'ImportTranslations' => [ 'ImportaTraduzioni' ], 'LanguageStats' => [ 'StatisticheLingua' ], - 'Magic' => [ 'TraduciAvanzato' ], 'ManageMessageGroups' => [ 'GestisciGruppiMessaggio' ], 'MessageGroupStats' => [ 'StatisticheGruppiMessaggio' ], 'PageTranslation' => [ 'TraduzionePagina' ], @@ -586,7 +552,6 @@ $specialPageAliases['ja'] = [ 'AggregateGroups' => [ '集約群' ], 'ImportTranslations' => [ '翻訳取り込み', '翻訳インポート' ], 'LanguageStats' => [ '言語統計' ], - 'Magic' => [ '高度な翻訳' ], 'ManageMessageGroups' => [ 'メッセージ群の管理' ], 'ManageTranslatorSandbox' => [ '翻訳者サンドボックスの管理' ], 'MessageGroupStats' => [ 'メッセージグループ統計' ], @@ -612,7 +577,6 @@ $specialPageAliases['ka'] = [ $specialPageAliases['km'] = [ 'ImportTranslations' => [ 'ការបកប្រែនាំចូល' ], 'LanguageStats' => [ 'ស្ថិតិភាសា' ], - 'Magic' => [ 'បកប្រែថ្នាក់ខ្ពស់' ], 'ManageMessageGroups' => [ 'គ្រប់គ្រងក្រុមសារ' ], 'PageTranslation' => [ 'ការបកប្រែទំព័រ' ], 'SupportedLanguages' => [ 'ភាសាដែលអាចប្រើបាន' ], @@ -626,7 +590,6 @@ $specialPageAliases['ko'] = [ 'AggregateGroups' => [ '집계그룹' ], 'ImportTranslations' => [ '번역가져오기' ], 'LanguageStats' => [ '언어통계' ], - 'Magic' => [ '고급번역' ], 'ManageMessageGroups' => [ '메시지그룹관리' ], 'ManageTranslatorSandbox' => [ '번역자연습장관리', '번역연습장' ], 'MessageGroupStats' => [ '메시지그룹통계' ], @@ -644,7 +607,6 @@ $specialPageAliases['ko'] = [ /** Colognian (Ripoarisch) */ $specialPageAliases['ksh'] = [ 'LanguageStats' => [ 'Shtatistike_vu_de_Shprooche' ], - 'Magic' => [ 'Extras', 'Extras Översäze', 'ExtrasÖversäze' ], 'Translate' => [ 'Övversäze' ], 'TranslationStats' => [ 'Statistik vun fun de Övversäzung', 'Övversäzungszahle', 'Statistik vun fun de Övversäzong', 'Övversäzongszahle' ], 'Translations' => [ 'Övversätzunge' ], @@ -660,7 +622,6 @@ $specialPageAliases['ku-latn'] = [ $specialPageAliases['kw'] = [ 'ImportTranslations' => [ 'YmperthiTreylyansow' ], 'LanguageStats' => [ 'StatystygyonYeth' ], - 'Magic' => [ 'TreylyaAvonsys' ], 'PageTranslation' => [ 'TreylyansFolennow' ], 'SupportedLanguages' => [ 'YethowSkoodhys' ], 'Translate' => [ 'Treylya' ], @@ -672,7 +633,6 @@ $specialPageAliases['kw'] = [ $specialPageAliases['lb'] = [ 'ImportTranslations' => [ 'Iwwersetzungen_importéieren' ], 'LanguageStats' => [ 'Sproochestatistiken' ], - 'Magic' => [ 'Erweidert_Iwwersetzung' ], 'ManageMessageGroups' => [ 'Gruppe_vu_Message_geréieren' ], 'ManageTranslatorSandbox' => [ 'Iwwersetzungssandkëscht_geréieren' ], 'MessageGroupStats' => [ 'Statistike_vun_de_Gruppe_vu_Messagen' ], @@ -709,7 +669,6 @@ $specialPageAliases['mk'] = [ 'AggregateGroups' => [ 'ЗбирниГрупи' ], 'ImportTranslations' => [ 'УвезиПреводи' ], 'LanguageStats' => [ 'СтатистикиЗаЈазик' ], - 'Magic' => [ 'НапредноПреведување' ], 'ManageMessageGroups' => [ 'РаководењеСоГрупиНаПораки' ], 'ManageTranslatorSandbox' => [ 'РаководиПреведувачкиПесочник' ], 'MessageGroupStats' => [ 'СтатистикиЗаГупиПораки' ], @@ -729,7 +688,6 @@ $specialPageAliases['mk'] = [ $specialPageAliases['ml'] = [ 'ImportTranslations' => [ 'പരിഭാഷാ_ഇറക്കുമതി' ], 'LanguageStats' => [ 'ഭാഷാസ്ഥിതിവിവരം' ], - 'Magic' => [ 'വിപുലീകൃതപരിഭാഷ', 'മായാജാലം' ], 'ManageMessageGroups' => [ 'സന്ദേശസംഘങ്ങളുടെകൈകാര്യം' ], 'MessageGroupStats' => [ 'സന്ദേശഗണസ്ഥിതിവിവരം' ], 'PageTranslation' => [ 'താളിന്റെപരിഭാഷ' ], @@ -744,7 +702,6 @@ $specialPageAliases['ml'] = [ $specialPageAliases['mr'] = [ 'ImportTranslations' => [ 'भाषांतराआयात' ], 'LanguageStats' => [ 'भाषासांख्यिकी' ], - 'Magic' => [ 'प्रगतभाषांतर', 'जादुई' ], 'PageTranslation' => [ 'पृष्ठभाषांतर', 'पृष्ठअनुवाद' ], 'SearchTranslations' => [ 'अनुवाद_शोधा' ], 'Translate' => [ 'भाषांतर' ], @@ -761,7 +718,6 @@ $specialPageAliases['ms'] = [ /** Maltese (Malti) */ $specialPageAliases['mt'] = [ 'LanguageStats' => [ 'StatistikaLingwa' ], - 'Magic' => [ 'TraduzzjoniAvvanzata' ], 'PageTranslation' => [ 'TraduzzjoniPaġna' ], 'Translate' => [ 'Traduzzjoni' ], 'TranslationStats' => [ 'StatistikaTraduzzjoni' ], @@ -770,7 +726,6 @@ $specialPageAliases['mt'] = [ /** Mirandese (Mirandés) */ $specialPageAliases['mwl'] = [ - 'Magic' => [ 'Traduçon Abançada' ], 'Translate' => [ 'Traduzir' ], 'TranslationStats' => [ 'Stado de la traduçon' ], 'Translations' => [ 'Traduçones' ], @@ -778,7 +733,6 @@ $specialPageAliases['mwl'] = [ /** Erzya (эрзянь) */ $specialPageAliases['myv'] = [ - 'Magic' => [ 'ПревейстэЮтавтомс', 'Магия' ], 'Translate' => [ 'Ютавтомс' ], 'TranslationStats' => [ 'ЮтавтомадоСтатистика' ], ]; @@ -793,7 +747,6 @@ $specialPageAliases['nb'] = [ 'AggregateGroups' => [ 'Samlingsgrupper' ], 'ImportTranslations' => [ 'Importer_oversettelser' ], 'LanguageStats' => [ 'Språkstatistikk' ], - 'Magic' => [ 'Avansert_oversettelse', 'Avansert_oversetting', 'Magi' ], 'ManageMessageGroups' => [ 'Behandle_meldingsgrupper' ], 'MessageGroupStats' => [ 'Meldingsgruppestatistikk' ], 'PageTranslation' => [ 'Sideoversettelse' ], @@ -814,7 +767,6 @@ $specialPageAliases['nds-nl'] = [ 'AggregateGroups' => [ 'Samen-evoegden_groepen' ], 'ImportTranslations' => [ 'Vertalingen_invoeren' ], 'LanguageStats' => [ 'Taalstaotistieken' ], - 'Magic' => [ 'Uutgebreid_vertalen' ], 'ManageMessageGroups' => [ 'Berichtengroepen_beheren' ], 'ManageTranslatorSandbox' => [ 'Vertalers_zaandkule_beheren' ], 'PageTranslation' => [ 'Ziedvertaling' ], @@ -831,7 +783,6 @@ $specialPageAliases['nl'] = [ 'AggregateGroups' => [ 'SamengevoegdeGroepen' ], 'ImportTranslations' => [ 'VertalingenImporteren' ], 'LanguageStats' => [ 'Taalstatistieken' ], - 'Magic' => [ 'UitgebreidVertalen', 'VertalenUitgebreid' ], 'ManageMessageGroups' => [ 'BerichtengroepenBeheren' ], 'ManageTranslatorSandbox' => [ 'VertalerszandbakBeheren' ], 'MessageGroupStats' => [ 'Berichtengroepstatistieken' ], @@ -847,14 +798,12 @@ $specialPageAliases['nl'] = [ /** Norwegian Nynorsk (norsk nynorsk) */ $specialPageAliases['nn'] = [ - 'Magic' => [ 'Avansert_omsetjing' ], 'Translate' => [ 'Set_om' ], 'Translations' => [ 'Omsetjingar' ], ]; /** Occitan (occitan) */ $specialPageAliases['oc'] = [ - 'Magic' => [ 'Traduccion avançada', 'Traduccionavançada', 'Traduccion avancada', 'Traduccionavancada' ], 'Translate' => [ 'Traduire', 'Tradusir' ], 'Translations' => [ 'Traduccions', 'Reviradas' ], ]; @@ -867,7 +816,6 @@ $specialPageAliases['or'] = [ /** Punjabi (ਪੰਜਾਬੀ) */ $specialPageAliases['pa'] = [ - 'Magic' => [ 'ਉੱਚੇ_ਦਰਜੇ_ਦਾ_ਉਲਥਾ', 'ਜਾਦੂ' ], 'PageTranslation' => [ 'ਸਫ਼ੇ_ਦਾ_ਉਲਥਾ', 'ਸਫ਼ੇ_ਦਾ_ਤਰਜਮਾ' ], 'Translate' => [ 'ਉਲਥਾਓ', 'ਤਰਜਮਾ_ਕਰੋ' ], ]; @@ -877,7 +825,6 @@ $specialPageAliases['pl'] = [ 'AggregateGroups' => [ 'Grupy_zbiorcze' ], 'ImportTranslations' => [ 'Import_tłumaczeń' ], 'LanguageStats' => [ 'Statystyka_językowa' ], - 'Magic' => [ 'Rozszerzone_tłumaczenie_MediaWiki' ], 'ManageMessageGroups' => [ 'Zarządzanie_grupami_komunikatów' ], 'PageTranslation' => [ 'Tłumaczenie_strony' ], 'SupportedLanguages' => [ 'Wspierane_języki' ], @@ -890,7 +837,6 @@ $specialPageAliases['pl'] = [ /** Pashto (پښتو) */ $specialPageAliases['ps'] = [ - 'Magic' => [ 'پرمختللې ژباړه، کوډګريز' ], 'Translate' => [ 'ژباړل' ], 'Translations' => [ 'ژباړې' ], ]; @@ -899,7 +845,6 @@ $specialPageAliases['ps'] = [ $specialPageAliases['pt'] = [ 'ImportTranslations' => [ 'Importar_traduções' ], 'LanguageStats' => [ 'Estatísticas_de_línguas' ], - 'Magic' => [ 'Tradução_avançada' ], 'PageTranslation' => [ 'Tradução_de_páginas' ], 'Translate' => [ 'Traduzir' ], 'TranslationStats' => [ 'Estatísticas_de_traduções' ], @@ -908,14 +853,12 @@ $specialPageAliases['pt'] = [ /** Brazilian Portuguese (português do Brasil) */ $specialPageAliases['pt-br'] = [ - 'Magic' => [ 'Tradução_avançada' ], 'Translate' => [ 'Traduzir' ], 'TranslationStats' => [ 'Estado_da_tradução', 'Status_da_tradução' ], ]; /** Quechua (Runa Simi) */ $specialPageAliases['qu'] = [ - 'Magic' => [ 'NawparikusqaTikray' ], 'ManageTranslatorSandbox' => [ 'TikranaPukllana' ], 'Translate' => [ 'Tikray' ], ]; @@ -924,7 +867,6 @@ $specialPageAliases['qu'] = [ $specialPageAliases['ro'] = [ 'ImportTranslations' => [ 'Importare_traduceri' ], 'LanguageStats' => [ 'Statistici_limbă' ], - 'Magic' => [ 'Traducere_avansată' ], 'PageTranslation' => [ 'Traducere_pagină' ], 'Translate' => [ 'Traducere' ], 'TranslationStats' => [ 'Statistici_traduceri' ], @@ -936,7 +878,6 @@ $specialPageAliases['ru'] = [ 'AggregateGroups' => [ 'Агрегированные_группы' ], 'ImportTranslations' => [ 'Импорт_переводов' ], 'LanguageStats' => [ 'Статистика_языка' ], - 'Magic' => [ 'Расширенный_перевод' ], 'ManageMessageGroups' => [ 'Управление_группами_сообщений' ], 'MessageGroupStats' => [ 'Статистика_группы_сообщений' ], 'PageTranslation' => [ 'Перевод_страниц' ], @@ -951,7 +892,6 @@ $specialPageAliases['ru'] = [ /** Sanskrit (संस्कृतम्) */ $specialPageAliases['sa'] = [ 'LanguageStats' => [ 'भाषासांख्यिकी' ], - 'Magic' => [ 'प्रगतभाषांतरमाया' ], 'Translate' => [ 'भाषांतर' ], 'TranslationStats' => [ 'भाषांतरसांख्यिकी' ], 'Translations' => [ 'भाषांतरानि' ], @@ -962,7 +902,6 @@ $specialPageAliases['scn'] = [ 'AggregateGroups' => [ 'GruppiAggregati' ], 'ImportTranslations' => [ 'ImportaTraduzioni' ], 'LanguageStats' => [ 'StatisticheLingua' ], - 'Magic' => [ 'TraduciAvanzato' ], 'ManageMessageGroups' => [ 'GestisciGruppiMessaggio' ], 'MessageGroupStats' => [ 'MessaggioGruppoStat' ], 'PageTranslation' => [ 'TraduzionePagina' ], @@ -980,7 +919,6 @@ $specialPageAliases['si'] = [ /** Slovak (slovenčina) */ $specialPageAliases['sk'] = [ 'LanguageStats' => [ 'ŠtatistikyJazykov' ], - 'Magic' => [ 'RozšírenéPreložiť' ], 'PageTranslation' => [ 'PrekladStránky' ], 'Translate' => [ 'Preložiť' ], 'TranslationStats' => [ 'ŠtatistikyPrekladov' ], @@ -998,7 +936,6 @@ $specialPageAliases['sr-ec'] = [ 'ImportTranslations' => [ 'Увоз_превода' ], 'ExportTranslations' => [ 'Извоз_превода' ], 'LanguageStats' => [ 'Статистика_језика' ], - 'Magic' => [ 'Напредно_превођење' ], 'ManageMessageGroups' => [ 'Управљање_групама_порука' ], 'ManageTranslatorSandbox' => [ 'Управљање_песком_преводиоца', 'Песак_за_преводе' ], 'MessageGroupStats' => [ 'Статистике_група_превода' ], @@ -1020,7 +957,6 @@ $specialPageAliases['sr-el'] = [ 'ImportTranslations' => [ 'Uvoz_prevoda' ], 'ExportTranslations' => [ 'Izvoz_prevoda' ], 'LanguageStats' => [ 'Statistika_jezika' ], - 'Magic' => [ 'Napredno_prevođenje' ], 'ManageMessageGroups' => [ 'Upravljanje_grupama_poruka' ], 'ManageTranslatorSandbox' => [ 'Upravljanje_peskom_prevodioca', 'Pesak_za_prevode' ], 'MessageGroupStats' => [ 'Statistike_grupa_prevoda' ], @@ -1039,7 +975,6 @@ $specialPageAliases['sr-el'] = [ /** Sundanese (Basa Sunda) */ $specialPageAliases['su'] = [ 'LanguageStats' => [ 'StatBasa' ], - 'Magic' => [ 'TarjamahTeleb' ], 'Translate' => [ 'Tarjamah' ], 'TranslationStats' => [ 'StatTarjamah' ], 'Translations' => [ 'Tarjamahan' ], @@ -1049,7 +984,6 @@ $specialPageAliases['su'] = [ $specialPageAliases['sv'] = [ 'ImportTranslations' => [ 'Importera_översättningar' ], 'LanguageStats' => [ 'Språkstatistik' ], - 'Magic' => [ 'Avancerad_översättning' ], 'Translate' => [ 'Översätt' ], 'TranslationStats' => [ 'Översättningsstatistik' ], 'Translations' => [ 'Översättningar' ], @@ -1058,7 +992,6 @@ $specialPageAliases['sv'] = [ /** Swahili (Kiswahili) */ $specialPageAliases['sw'] = [ - 'Magic' => [ 'TasfiriyaJuu', 'Uchawi' ], 'Translate' => [ 'Tafsiri' ], 'TranslationStats' => [ 'TakwimuzaTafsiri' ], 'Translations' => [ 'Tafsiri' ], @@ -1077,7 +1010,6 @@ $specialPageAliases['te'] = [ /** Thai (ไทย) */ $specialPageAliases['th'] = [ 'LanguageStats' => [ 'สถิติภาษา' ], - 'Magic' => [ 'การแปลขั้นสูง' ], 'SupportedLanguages' => [ 'ภาษาที่รองรับ' ], 'Translate' => [ 'แปล' ], 'TranslationStats' => [ 'สถิติการแปล' ], @@ -1087,7 +1019,6 @@ $specialPageAliases['th'] = [ /** Tagalog (Tagalog) */ $specialPageAliases['tl'] = [ 'LanguageStats' => [ 'Mga_estadistika_ng_wika' ], - 'Magic' => [ 'Mas_masulong_na_pagsasalinwika', 'Salamangka' ], 'Translate' => [ 'Isalinwika' ], 'TranslationStats' => [ 'Mga_estadistika_ng_salinwika' ], 'Translations' => [ 'Mga_salinwika' ], @@ -1098,7 +1029,6 @@ $specialPageAliases['tr'] = [ 'AggregateGroups' => [ 'GruplarıBirleştirme' ], 'ImportTranslations' => [ 'ÇevirileriİçeAktar' ], 'LanguageStats' => [ 'Dilİstatistikleri' ], - 'Magic' => [ 'GelişmişÇeviri' ], 'ManageMessageGroups' => [ 'MesajGruplarınıYönet', 'İletiGruplarınıYönet' ], 'MessageGroupStats' => [ 'MesajGrubuİstatistikleri', 'İletiGrubuİstatistikleri' ], 'PageTranslation' => [ 'SayfaÇevirisi' ], @@ -1134,7 +1064,6 @@ $specialPageAliases['uk'] = [ 'AggregateGroups' => [ 'Агреговані_групи', 'Агрегированные_группы' ], 'ImportTranslations' => [ 'Імпорт_перекладів', 'Импорт_переводов' ], 'LanguageStats' => [ 'Статистика_мови', 'Статистика_языка' ], - 'Magic' => [ 'Поглиблений_переклад', 'Расширенный_перевод' ], 'ManageMessageGroups' => [ 'Керування_групами_повідомлень', 'Управление_группами_сообщений' ], 'MessageGroupStats' => [ 'Статистика_групи_повідомлень', 'Статистика_группы_сообщений' ], 'PageTranslation' => [ 'Переклад', 'Перевод_страниц' ], @@ -1156,7 +1085,6 @@ $specialPageAliases['vec'] = [ $specialPageAliases['vi'] = [ 'ImportTranslations' => [ 'Nhập_bản_dịch' ], 'LanguageStats' => [ 'Thống_kê_ngôn_ngữ' ], - 'Magic' => [ 'Dịch_nâng_cao' ], 'ManageMessageGroups' => [ 'Quản_lý_nhóm_thông_điệp', 'Quản_lý_nhóm', 'Quản_lí_nhóm_thông_điệp', 'Quản_lí_nhóm' ], 'ManageTranslatorSandbox' => [ 'Quản_lý_chỗ_thử_biên_dịch', 'Quản_lí_chỗ_thử_biên_dịch' ], 'MessageGroupStats' => [ 'Thống_kê_nhóm_thông_điệp', 'Thống_kê_nhóm' ], @@ -1194,7 +1122,6 @@ $specialPageAliases['zh-hans'] = [ 'AggregateGroups' => [ '信息组总计' ], 'ImportTranslations' => [ '导入翻译' ], 'LanguageStats' => [ '语言统计' ], - 'Magic' => [ '高级翻译' ], 'ManageMessageGroups' => [ '信息组管理' ], 'ManageTranslatorSandbox' => [ '管理译者沙盒' ], 'MessageGroupStats' => [ '信息组状态' ], @@ -1215,7 +1142,6 @@ $specialPageAliases['zh-hant'] = [ 'AggregateGroups' => [ '集合群組' ], 'ImportTranslations' => [ '匯入翻譯' ], 'LanguageStats' => [ '語言統計' ], - 'Magic' => [ '進階翻譯' ], 'ManageMessageGroups' => [ '管理訊息群組' ], 'ManageTranslatorSandbox' => [ '管理翻譯人員沙盒' ], 'MessageGroupStats' => [ '訊息群組統計' ], diff --git a/MLEB/Translate/Translate.php b/MLEB/Translate/Translate.php deleted file mode 100644 index 330bca48..00000000 --- a/MLEB/Translate/Translate.php +++ /dev/null @@ -1,634 +0,0 @@ - -/** - * Language code for message documentation. Suggested values are qqq or info. - * If set to false (default), message documentation feature is disabled. - */ -$wgTranslateDocumentationLanguageCode = false; - -/** - * Name of the bot which will invalidate translations and do maintenance - * for page translation feature. Also used for importing messages from external - * sources. - */ -$wgTranslateFuzzyBotName = 'FuzzyBot'; - -/** - * Add a preference "Do not send me email newsletters" in the email preferences. - */ -$wgTranslateNewsletterPreference = false; - -/** - * Default values for list of languages to show translators as an aid when - * translating. Each user can override this setting in their preferences. - * Example: - * $wgTranslateLanguageFallbacks['fi'] = 'sv'; - * $wgTranslateLanguageFallbacks['sv'] = array( 'da', 'no', 'nn' ); - */ -$wgTranslateLanguageFallbacks = []; - -/** - * Text that will be shown in translations if the translation is outdated. - * Must be something that does not conflict with actual content. - */ -if ( !defined( 'TRANSLATE_FUZZY' ) ) { - define( 'TRANSLATE_FUZZY', '!!FUZZY!!' ); -} - -/** - * Define various web services that provide translation suggestions. - * - * Translation memories are documented in our main documentation. - * @see https://www.mediawiki.org/wiki/Help:Extension:Translate/Translation_memories - * - * For Apertium, you should get an API key. - * @see http://wiki.apertium.org/wiki/Apertium_web_service - * - * Yandex translation helper also provides langlimit option to limit total - * number of suggestions (set to 0 to get all possible translations) - * and langorder array to sort languages. Yandex translate engine is based on - * wordnet, generated from search index, so number of indexed websites should be - * a good heuristic to define the default language order. - * - * The machine translation services are provided with the following information: - * - server ip address - * - versions of MediaWiki and Translate extension - * - clients ip address encrypted with $wgProxyKey - * - source text to translate - * - private API key if provided - */ -$wgTranslateTranslationDefaultService = 'TTMServer'; -$wgTranslateTranslationServices = []; -$wgTranslateTranslationServices['TTMServer'] = [ - 'database' => false, // Passed to wfGetDB - 'cutoff' => 0.75, - 'type' => 'ttmserver', - 'public' => false, -]; -$wgTranslateTranslationServices['Microsoft'] = [ - 'url' => 'https://api.cognitive.microsofttranslator.com', - 'key' => null, - 'timeout' => 3, - 'type' => 'microsoft', -]; -$wgTranslateTranslationServices['Apertium'] = [ - 'url' => 'http://apy.projectjj.com/translate', - 'pairs' => 'http://apy.projectjj.com/listPairs', - 'key' => null, - 'timeout' => 3, - 'type' => 'apertium', -]; -$wgTranslateTranslationServices['Yandex'] = [ - 'url' => 'https://translate.yandex.net/api/v1.5/tr.json/translate', - 'key' => null, - 'pairs' => 'https://translate.yandex.net/api/v1.5/tr.json/getLangs', - 'timeout' => 3, - 'langorder' => [ 'en', 'ru', 'uk', 'de', 'fr', 'pl', 'it', 'es', 'tr' ], - 'langlimit' => 1, - 'type' => 'yandex', -]; - -/** - * Experimental support for an "Ask" help button. - * Might change into a hook later on. - * This is an array with keys page, url and params. - * - page is a title of a local wiki page - * - url is an URL to use as is (e.g. an issue tracker submission form) - * which will override the page if set - * - params is an array of key-value pairs of request params - * -- each param value can contain the variable %MESSAGE% - * which will be replaced with the full page name. - * @since 2011-03-11 - */ -$wgTranslateSupportUrl = false; - -/** - * Like $wgTranslateSupportUrl, but for a specific namespace. - * Each $wgTranslateSupportUrl-like array needs to be the value - * assigned to the numerical ID of a namespace of the wiki. - * @since 2015.09 - */ -$wgTranslateSupportUrlNamespace = []; - -/** - * When unprivileged users open a translation editor, they will - * see a message stating that a special permission is needed for translating - * messages. If this variable is defined, there is a button which will - * take the user to that page to ask for permission. - * The target needs to be reiterated with the second variable to have - * the same result with sandbox enabled where users can't enter the sandbox. - */ -$wgTranslatePermissionUrl = 'Project:Translator'; -$wgTranslateSecondaryPermissionUrl = 'Project:Translator'; - -# -# === Page translation feature === -# -/** - * Enable page translation feature. - * - * Page translation feature allows structured translation of wiki pages - * with simple markup and automatic tracking of changes. - * - * @defgroup PageTranslation Page Translation - * @see https://www.mediawiki.org/wiki/Help:Extension:Translate/Page_translation_administration - */ -$wgEnablePageTranslation = true; - -/** - * Number for the Translations namespace. Change this if it conflicts with - * other namespace in your wiki. - */ -$wgPageTranslationNamespace = 1198; - -/** - * If set to true, when a user selects an interface language via ULS (Universal - * Language Selector), if the current page is a translatable page or a translation - * page then the user is also redirected to the corresponding translation page - * in the selected language. - * - * The language of the translation pages visited afterwards will still depend on the - * links followed (it will be the interface language only if the links use the - * Special:MyLanguage syntax). - * @since 2013-03-10 - */ -$wgTranslatePageTranslationULS = false; - -/** - * If set to true, when a translated page has some units marked as outdated, the - * outdated translation will be shown. If set to false, the original updated unit - * in the original language will be shown. - * - * Changing this setting requires the following script to be run to take effect on - * existing changes: scripts/refresh-translatable-pages.php - * @since 2016.12 - */ -$wgTranslateKeepOutdatedTranslations = true; - -/** - * How language list for translatable pages is shown. Allowed values: - * tag-only: Only display languages with the \ tag. - * sidebar-only: Display languages as interlanguage links only and ignore the - * tag even if present on the page. - * sidebar-fallback: Display languages as interlanguage links if no tag is on - * the page. - * sidebar-always: Display languages as interlanguage links and also in tag if - * it is present on the page. - * @since 2018.07 - */ -$wgPageTranslationLanguageList = 'tag-only'; - -# -# === Message group configuration === -# - -/** - * Two-dimensional array of languages that cannot be translated. - * Input can be exact group name, first part before '-' or '*' for all. - * Second dimension should be language code mapped to reason for disabling. - * Reason is parsed as wikitext. - * - * Example: - * $wgTranslateBlacklist = array( - * '*' => array( // All groups - * 'en' => 'English is the source language.', - * ), - * 'core' => array( // Exact group - * 'mul' => 'Not a real language.', - * ), - * 'ext' => array( // Wildcard-like group - * 'mul' => 'Not a real language', - * ), - * ); - */ - -$wgTranslateBlacklist = []; - -/** - * File containing checks that are to be skipped. See - * https://gerrit.wikimedia.org/r/gitweb?p=translatewiki.git;a=blob;f=check-blacklist.php;hb=HEAD - * for example. - * - * @since 2012-10-15 - */ -$wgTranslateCheckBlacklist = false; - -/** - * Two-dimensional array of rules that blacklists certain authors from appearing - * in the exports. This is useful for keeping bots and people doing maintenance - * work in translations not to appear besides real translators everywhere. - * - * Rules are arrays, where first element is type: white or black. Whitelisting - * always overrules blacklisting. Second element should be a valid pattern that - * can be given a preg_match(). It will be matched against string of format - * "group-id;language;author name", without quotes. - * As an example by default we have rule that ignores all authors whose name - * ends in a bot for all languages and all groups. - */ -$wgTranslateAuthorBlacklist = []; -$wgTranslateAuthorBlacklist[] = [ 'black', '/^.*;.*;.*Bot$/Ui' ]; - -/** - * List of namespace that contain messages. No talk namespaces. - * @see https://www.mediawiki.org/wiki/Help:Extension:Translate/Group_configuration - */ -$wgTranslateMessageNamespaces = []; - -/** - * CC = Custom classes. - * Custom classes can register themselves here. - * Key is always the group id, while the value is an message group object - * or callable function. - * @deprecated Use TranslatePostInitGroups hook instead. - */ -$wgTranslateCC = []; - -/** - * Location in the filesystem to which paths are relative in custom groups. - */ -$wgTranslateGroupRoot = '/var/www/externals'; - -/** - * The newest and recommended way of adding custom groups is YAML files. - * See examples under Translate/groups - * Usage example: - * $wgTranslateGroupFiles[] = "$IP/extensions/Translate/groups/Shapado/Shapado.yml"; - */ -$wgTranslateGroupFiles = []; - -/** - * List of possible message group review workflow states and properties - * for each state. - * The currently supported properties are: - * * color: the color that is used for displaying the state in the tables. - * * right: additional right that is needed to set the state. - * Users who have the translate-groupreview right can set this in - * Special:Translate. - * The state is visible in Special:Translate, Special:MessageGroupStats and - * Special:LanguageStats. - * If the value is false, the workflow states feature is disabled. - * State name can be up to 32 characters maximum. - * Example: - * $wgTranslateWorkflowStates = array( - * 'new' => array( 'color' => 'FF0000' ), // red - * 'needs_proofreading' => array( 'color' => '0000FF' ), // blue - * 'ready' => array( 'color' => 'FFFF00' ), // yellow - * 'published' => array( - * 'color' => '00FF00', // green - * 'right' => 'centralnotice-admin', - * ), - * ); - */ -$wgTranslateWorkflowStates = false; - -/** - * Map from deprecated group IDs to their current ID - * Example value: array( 'core' => 'mediawiki-core' ) - */ -$wgTranslateGroupAliases = []; - -# -# === System setup related configuration === -# -/** - * Set location of cache files. Defaults to $wgCacheDirectory. - */ -$wgTranslateCacheDirectory = false; - -/** - * Configures how the message index is stored. - * The other backends need $wgCacheDirectory to be functional. - */ -$wgTranslateMessageIndex = [ 'DatabaseMessageIndex' ]; -// $wgTranslateMessageIndex = array( 'SerializedMessageIndex' ); -// $wgTranslateMessageIndex = array( 'CDBMessageIndex' ); - -/** - * If you have lots of message groups, especially file based ones, and the - * message index rebuilding gets slow, set this to true to delay the rebuilding - * via JobQueue. This only makes sense if you have configured jobs to be - * processed outside of requests via cron or similar. - * @since 2012-05-03 - */ -$wgTranslateDelayedMessageIndexRebuild = false; - -# -# ==== PHPlot ==== -# -/** - * For Special:TranslationStats PHPlot is needed to produce graphs. - * Set this the location of phplot.php. - */ -$wgTranslatePHPlot = false; - -/** - * The default font for PHPlot for drawing text. Only used if the automatic - * best font selection fails. The automatic best font selector uses language - * code to call fc-match program. If you have open_basedir restriction or - * safe-mode, using the found font is likely to fail. In this case you need - * to change the code to use hard-coded font, or copy fonts to location PHP - * can access them, and make sure fc-match returns only those fonts. - */ -$wgTranslatePHPlotFont = '/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf'; - -# -# ==== YAML driver ==== -# -/** - * Currently supported YAML drivers are phpyaml, spyc and syck. - * - * For phpyaml see https://secure.php.net/manual/en/book.yaml.php. - * - * For syck we're shelling out to perl. So you need: - * - * * At least perl 5.8 (find out what you have by running "perl -v") - * * Install these modules from CPAN - * * YAML::Syck - * * PHP::Serialization. - * * File::Slurp - * - * You should be able to do this with: - * for module in 'YAML::Syck' 'PHP::Serialization' 'File::Slurp'; do cpanp -i $module; done - * - * For the shell to work, you also need an en.UTF-8 locale installed on your system. - * add a line "en.UTF-8" to your /etc/locale.gen or uncomment an existing one and run locale-gen - * if you do not have it already. - * - * phpyaml is the fastest and based on libyaml so the output should be most - * compatible. spyc output format is least compatible. syck is slowest but - * almost as good as phpyaml. - * - * spyc needs to be installed using composer. See https://www.mediawiki.org/wiki/Composer - */ -$wgTranslateYamlLibrary = function_exists( 'yaml_parse' ) ? 'phpyaml' : 'spyc'; - -# -# ==== Sandbox ==== -# - -/** - * Whether to allow users to sign up via a sandbox. Sandboxed users cannot do - * much until approved and thus they can be get rid of easily. This only works - * with MediaWiki 1.27 and newer, and only if registration is configured to not - * use account creation providers which give REDIRECT or UI responses or - * require any other field than the default username/password/email. - * @since 2013.04 - */ -$wgTranslateUseSandbox = false; - -/** - * To which group the translators are promoted. If left at false, they will just - * be removed from sandbox and become normal users. - * @since 2013.04 - */ -$wgTranslateSandboxPromotedGroup = false; - -/** - * List of page names to always suggest for sandboxed users. - * @since 2013.10 - */ -$wgTranslateSandboxSuggestions = []; - -/** - * Maximum number of translations a user can make in the sandbox. - * @since 2013.10 - */ -$wgTranslateSandboxLimit = 20; - -# -# === Unsorted === -# -/** - * Pre-save transform for message pages. MediaWiki does this by default - * (including for pages in the MediaWiki-namespace). By setting this to - * false it allows users to put untransformed syntax such as "~~~~" into - * a page without having them be transformed upon save. - */ -$wgTranslateUsePreSaveTransform = false; - -/** - * Default action for the RecentChanges filter, which makes it possible to filter - * translations away or show them only. - * Possible values: ('noaction', 'only', 'filter', 'site') - */ -$wgTranslateRcFilterDefault = 'filter'; - -/** - * Set this to config like $wgTranslateTranslationServices if you want to run - * SolrTTMServer tests. - * @since 2013-01-04 - */ -$wgTranslateTestTTMServer = null; - -/** - * List of user names that are allowed to alter their privileges and do other - * things. Used for supporting integration testing. - * @since 2013.10 - */ -$wgTranslateTestUsers = []; - -# - -/** - * Helper function for adding namespace for message groups. - * - * It defines constants for the namespace (and talk namespace) and sets up - * restrictions and some other configuration. - * @param int $id Namespace number - * @param string $name Name of the namespace - * @param string|null $constant (optional) name of namespace constant, defaults to - * NS_ followed by upper case version of $name, e.g., NS_MEDIAWIKI - */ -function wfAddNamespace( $id, $name, $constant = null ) { - global $wgExtraNamespaces, $wgContentNamespaces, $wgTranslateMessageNamespaces, - $wgNamespaceProtection, $wgNamespacesWithSubpages, $wgNamespacesToBeSearchedDefault; - - if ( is_null( $constant ) ) { - $constant = strtoupper( "NS_$name" ); - } - - define( $constant, $id ); - define( $constant . '_TALK', $id + 1 ); - - $wgExtraNamespaces[$id] = $name; - $wgExtraNamespaces[$id + 1] = $name . '_talk'; - - $wgContentNamespaces[] = $id; - $wgTranslateMessageNamespaces[] = $id; - - $wgNamespacesWithSubpages[$id] = true; - $wgNamespacesWithSubpages[$id + 1] = true; - - $wgNamespaceProtection[$id] = [ 'translate' ]; - - $wgNamespacesToBeSearchedDefault[$id] = true; -} - -/** @defgroup TranslateSpecialPage Special pages of Translate extension */ diff --git a/MLEB/Translate/TranslateEditAddons.php b/MLEB/Translate/TranslateEditAddons.php index b8442c1b..2dec1ca0 100644 --- a/MLEB/Translate/TranslateEditAddons.php +++ b/MLEB/Translate/TranslateEditAddons.php @@ -9,6 +9,10 @@ * @license GPL-2.0-or-later */ +use MediaWiki\Logger\LoggerFactory; +use MediaWiki\Revision\RevisionRecord; +use MediaWiki\User\UserIdentity; + /** * Various editing enhancements to the edit page interface. * Partly succeeded by the new ajax-enhanced editor but kept for compatibility. @@ -184,6 +188,85 @@ class TranslateEditAddons { /** * Runs message checks, adds tp:transver tags and updates statistics. + * + * Only run in versions of mediawiki beginning 1.35; before 1.35, ::onSave is used + * + * Hook: PageSaveComplete + * @param WikiPage $wikiPage + * @param UserIdentity $userIdentity + * @param string $summary + * @param int $flags + * @param RevisionRecord $revisionRecord + * @param mixed $editResult documented as mixed because the EditResult class didn't exist + * before 1.35 + * @return true + */ + public static function onSaveComplete( + WikiPage $wikiPage, + UserIdentity $userIdentity, + string $summary, + int $flags, + RevisionRecord $revisionRecord, + $editResult + ) { + global $wgEnablePageTranslation; + + $content = $wikiPage->getContent(); + + if ( !$content instanceof TextContent ) { + // Screw it, not interested + return true; + } + + $text = $content->getNativeData(); + $title = $wikiPage->getTitle(); + $handle = new MessageHandle( $title ); + + if ( !$handle->isValid() ) { + return true; + } + + // Update it. + $revId = $revisionRecord->getId(); + + $fuzzy = self::checkNeedsFuzzy( $handle, $text ); + self::updateFuzzyTag( $title, $revId, $fuzzy ); + + $group = $handle->getGroup(); + // Update translation stats - source language should always be up to date + if ( $handle->getCode() !== $group->getSourceLanguage() ) { + // This will update in-process cache immediately, but the value is saved + // to the database in a deferred update. See MessageGroupStats::queueUpdates. + // In case an error happens before that, the stats may be stale, but that + // would be fixed by the next update or purge. + MessageGroupStats::clear( $handle ); + } + + MessageGroupStatesUpdaterJob::onChange( $handle ); + + $user = User::newFromIdentity( $userIdentity ); + + if ( $fuzzy === false ) { + Hooks::run( 'Translate:newTranslation', [ $handle, $revId, $text, $user ] ); + } + + TTMServer::onChange( $handle ); + + if ( $wgEnablePageTranslation && $handle->isPageTranslation() ) { + // Updates for translatable pages only + $minor = $flags & EDIT_MINOR; + PageTranslationHooks::onSectionSave( $wikiPage, $user, $content, + $summary, $minor, $flags, $handle ); + } + + return true; + } + + /** + * Runs message checks, adds tp:transver tags and updates statistics. + * + * Only run in versions of mediawiki before 1.35; in 1.35+, ::onSaveComplete is used + * * Hook: PageContentSaveComplete * @param WikiPage $wikiPage * @param User $user @@ -216,13 +299,13 @@ class TranslateEditAddons { // Update it. if ( $revision === null ) { - $rev = $wikiPage->getTitle()->getLatestRevID(); + $revId = $wikiPage->getTitle()->getLatestRevID(); } else { - $rev = $revision->getID(); + $revId = $revision->getID(); } $fuzzy = self::checkNeedsFuzzy( $handle, $text ); - self::updateFuzzyTag( $title, $rev, $fuzzy ); + self::updateFuzzyTag( $title, $revId, $fuzzy ); $group = $handle->getGroup(); // Update translation stats - source language should always be up to date @@ -237,39 +320,44 @@ class TranslateEditAddons { MessageGroupStatesUpdaterJob::onChange( $handle ); if ( $fuzzy === false ) { - Hooks::run( 'Translate:newTranslation', [ $handle, $rev, $text, $user ] ); + Hooks::run( 'Translate:newTranslation', [ $handle, $revId, $text, $user ] ); } - TTMServer::onChange( $handle, $text, $fuzzy ); + TTMServer::onChange( $handle ); if ( $wgEnablePageTranslation && $handle->isPageTranslation() ) { // Updates for translatable pages only PageTranslationHooks::onSectionSave( $wikiPage, $user, $content, - $summary, $minor, $flags, $revision, $handle ); + $summary, $minor, $flags, $handle ); } return true; } /** + * Returns true if message is fuzzy, OR fails checks OR fails validations (error OR warning). * @param MessageHandle $handle * @param string $text * @return bool */ protected static function checkNeedsFuzzy( MessageHandle $handle, $text ) { - // Check for explicit tag. - $fuzzy = MessageHandle::hasFuzzyString( $text ); - // Docs are exempt for checks if ( $handle->isDoc() ) { - return $fuzzy; + return false; } - // Not all groups have checkers + // Check for explicit tag. + if ( MessageHandle::hasFuzzyString( $text ) ) { + return true; + } + + // Not all groups have validators $group = $handle->getGroup(); - $checker = $group->getChecker(); - if ( !$checker ) { - return $fuzzy; + $validator = $group->getValidator(); + + // no validator set + if ( !$validator ) { + return false; } $code = $handle->getCode(); @@ -278,13 +366,22 @@ class TranslateEditAddons { $message = new FatMessage( $key, $en ); // Take the contents from edit field as a translation. $message->setTranslation( $text ); - - $checks = $checker->checkMessage( $message, $code ); - if ( count( $checks ) ) { - $fuzzy = true; + if ( $message->definition() === null ) { + // This should NOT happen, but add a check since it seems to be happening + // See: https://phabricator.wikimedia.org/T255669 + LoggerFactory::getInstance( 'Translate' )->warning( + 'Message definition is empty! Title: {title}, group: {group}, key: {key}', + [ + 'title' => $handle->getTitle()->getPrefixedText(), + 'group' => $group->getId(), + 'key' => $key + ] + ); + return false; } - return $fuzzy; + $validationResult = $validator->quickValidate( $message, $code ); + return $validationResult->hasIssues(); } /** @@ -393,7 +490,7 @@ class TranslateEditAddons { $th->setEditMode( false ); $de->loadNewText(); - if ( method_exists( $de, 'getNewRevision' ) ) { + if ( is_callable( [ $de, 'getNewRevision' ] ) ) { $newRevision = $de->getNewRevision(); $newContent = $newRevision ? $newRevision->getContent( 'main' ) : null; } else { diff --git a/MLEB/Translate/TranslateHooks.php b/MLEB/Translate/TranslateHooks.php index 68b6856a..06c74889 100644 --- a/MLEB/Translate/TranslateHooks.php +++ b/MLEB/Translate/TranslateHooks.php @@ -7,6 +7,12 @@ * @license GPL-2.0-or-later */ +use MediaWiki\Extensions\Translate\SystemUsers\FuzzyBot; +use MediaWiki\Extensions\Translate\SystemUsers\TranslateUserManager; +use MediaWiki\Hook\PageMoveCompleteHook; +use MediaWiki\Hook\SidebarBeforeOutputHook; +use MediaWiki\MediaWikiServices; + /** * Some hooks for Translate extension. */ @@ -23,53 +29,34 @@ class TranslateHooks { ]; /** - * Hook: ResourceLoaderTestModules - * @param array &$modules - */ - public static function onResourceLoaderTestModules( array &$modules ) { - $modules['qunit']['ext.translate.parsers.test'] = [ - 'scripts' => [ 'tests/qunit/ext.translate.parsers.test.js' ], - 'dependencies' => [ 'ext.translate.parsers' ], - 'localBasePath' => __DIR__, - 'remoteExtPath' => 'Translate', - ]; - - $modules['qunit']['ext.translate.special.pagemigration.test'] = [ - 'scripts' => [ 'tests/qunit/ext.translate.special.pagemigration.test.js' ], - 'dependencies' => [ 'ext.translate.special.pagemigration' ], - 'localBasePath' => __DIR__, - 'remoteExtPath' => 'Translate', - ]; - } - - /** - * Hook: CanonicalNamespaces - * - * @param array &$list - */ - public static function setupNamespaces( array &$list ) { - global $wgPageTranslationNamespace, $wgNamespaceRobotPolicies; - if ( !defined( 'NS_TRANSLATIONS' ) ) { - define( 'NS_TRANSLATIONS', $wgPageTranslationNamespace ); - define( 'NS_TRANSLATIONS_TALK', $wgPageTranslationNamespace + 1 ); - } - $list[NS_TRANSLATIONS] = 'Translations'; - $list[NS_TRANSLATIONS_TALK] = 'Translations_talk'; - $wgNamespaceRobotPolicies[NS_TRANSLATIONS] = 'noindex'; - } - - /** - * Initialises the extension. - * Does late-initialization that is not possible at file level, - * because it depends on user configuration. + * Do late setup that depends on configuration. */ public static function setupTranslate() { - global $wgTranslatePHPlot, $wgAutoloadClasses, $wgHooks; + global $wgTranslatePHPlot, $wgAutoloadClasses, $wgHooks, $wgTranslateYamlLibrary; + + /* + * Text that will be shown in translations if the translation is outdated. + * Must be something that does not conflict with actual content. + */ + if ( !defined( 'TRANSLATE_FUZZY' ) ) { + define( 'TRANSLATE_FUZZY', '!!FUZZY!!' ); + } + + if ( $wgTranslateYamlLibrary === null ) { + $wgTranslateYamlLibrary = function_exists( 'yaml_parse' ) ? 'phpyaml' : 'spyc'; + } if ( $wgTranslatePHPlot ) { $wgAutoloadClasses['PHPlot'] = $wgTranslatePHPlot; } + $usePageSaveComplete = version_compare( MW_VERSION, '1.35', '>=' ); + if ( $usePageSaveComplete ) { + $wgHooks['PageSaveComplete'][] = 'TranslateEditAddons::onSaveComplete'; + } else { + $wgHooks['PageContentSaveComplete'][] = 'TranslateEditAddons::onSave'; + } + // Page translation setup check and init if enabled. global $wgEnablePageTranslation; if ( $wgEnablePageTranslation ) { @@ -123,23 +110,14 @@ class TranslateHooks { $wgJobClasses['TranslateRenderJob'] = 'TranslateRenderJob'; $wgJobClasses['RenderJob'] = 'TranslateRenderJob'; $wgJobClasses['TranslatablePageMoveJob'] = 'TranslatablePageMoveJob'; - $wgJobClasses['TranslateMoveJob'] = 'TranslateMoveJob'; - $wgJobClasses['MoveJob'] = 'TranslateMoveJob'; $wgJobClasses['TranslateDeleteJob'] = 'TranslateDeleteJob'; $wgJobClasses['DeleteJob'] = 'TranslateDeleteJob'; $wgJobClasses['TranslationsUpdateJob'] = 'TranslationsUpdateJob'; // Namespaces - global $wgPageTranslationNamespace; global $wgNamespacesWithSubpages, $wgNamespaceProtection; global $wgTranslateMessageNamespaces; - // Define constants for more readable core - if ( !defined( 'NS_TRANSLATIONS' ) ) { - define( 'NS_TRANSLATIONS', $wgPageTranslationNamespace ); - define( 'NS_TRANSLATIONS_TALK', $wgPageTranslationNamespace + 1 ); - } - $wgNamespacesWithSubpages[NS_TRANSLATIONS] = true; $wgNamespacesWithSubpages[NS_TRANSLATIONS_TALK] = true; @@ -149,8 +127,8 @@ class TranslateHooks { /// Page translation hooks - /// @todo Register our css, is there a better place for this? - $wgHooks['OutputPageBeforeHTML'][] = 'PageTranslationHooks::injectCss'; + /// Register our CSS and metadata + $wgHooks['BeforePageDisplay'][] = 'PageTranslationHooks::onBeforePageDisplay'; // Check syntax for \ $wgHooks['PageContentSave'][] = 'PageTranslationHooks::tpSyntaxCheck'; @@ -158,8 +136,12 @@ class TranslateHooks { 'PageTranslationHooks::tpSyntaxCheckForEditContent'; // Add transtag to page props for discovery - $wgHooks['PageContentSaveComplete'][] = 'PageTranslationHooks::addTranstag'; - $wgHooks['RevisionInsertComplete'][] = + if ( $usePageSaveComplete ) { + $wgHooks['PageSaveComplete'][] = 'PageTranslationHooks::addTranstagAfterSave'; + } else { + $wgHooks['PageContentSaveComplete'][] = 'PageTranslationHooks::addTranstag'; + } + $wgHooks['RevisionRecordInserted'][] = 'PageTranslationHooks::updateTranstagOnNullRevisions'; // Register different ways to show language links @@ -168,7 +150,7 @@ class TranslateHooks { $wgHooks['SkinTemplateGetLanguageLink'][] = 'PageTranslationHooks::formatLanguageLink'; // Strip \ tags etc. from source pages when rendering - $wgHooks['ParserBeforeStrip'][] = 'PageTranslationHooks::renderTagPage'; + $wgHooks['ParserBeforeInternalParse'][] = 'PageTranslationHooks::renderTagPage'; $wgHooks['ParserOutputPostCacheTransform'][] = 'PageTranslationHooks::onParserOutputPostCacheTransform'; @@ -181,9 +163,6 @@ class TranslateHooks { // Prevent editing of translation pages directly $wgHooks['getUserPermissionsErrorsExpensive'][] = 'PageTranslationHooks::preventDirectEditing'; - // Prevent patroling of translation pages - $wgHooks['getUserPermissionsErrors'][] = - 'PageTranslationHooks::preventPatrolling'; // Our custom header for translation pages $wgHooks['ArticleViewHeader'][] = 'PageTranslationHooks::translatablePageHeader'; @@ -206,7 +185,11 @@ class TranslateHooks { $wgHooks['SkinTemplateNavigation'][] = 'PageTranslationHooks::translateTab'; // Update translated page when translation unit is moved - $wgHooks['TitleMoveComplete'][] = 'PageTranslationHooks::onMoveTranslationUnits'; + if ( interface_exists( PageMoveCompleteHook::class ) ) { + $wgHooks['PageMoveComplete'][] = 'PageTranslationHooks::onMovePageTranslationUnits'; + } else { + $wgHooks['TitleMoveComplete'][] = 'PageTranslationHooks::onMoveTranslationUnits'; + } // Update translated page when translation unit is deleted $wgHooks['ArticleDeleteComplete'][] = 'PageTranslationHooks::onDeleteTranslationUnit'; @@ -225,7 +208,6 @@ class TranslateHooks { $wgHooks['GetPreferences'][] = 'TranslateSandbox::onGetPreferences'; $wgHooks['UserGetRights'][] = 'TranslateSandbox::enforcePermissions'; $wgHooks['ApiCheckCanExecute'][] = 'TranslateSandbox::onApiCheckCanExecute'; - $wgHooks['UserGetRights'][] = 'TranslateSandbox::allowAccountCreation'; global $wgLogTypes, $wgLogActionsHandlers; // log-name-translatorsandbox log-description-translatorsandbox @@ -245,6 +227,31 @@ class TranslateHooks { $wgAPIModules['translationstash'] = 'ApiTranslationStash'; $wgAPIModules['translatesandbox'] = 'ApiTranslateSandbox'; } + + global $wgNamespaceRobotPolicies; + $wgNamespaceRobotPolicies[NS_TRANSLATIONS] = 'noindex'; + + // If no service has been configured, we use a built-in fallback. + global $wgTranslateTranslationDefaultService, + $wgTranslateTranslationServices; + if ( $wgTranslateTranslationDefaultService === true ) { + $wgTranslateTranslationDefaultService = 'TTMServer'; + if ( !isset( $wgTranslateTranslationServices['TTMServer'] ) ) { + $wgTranslateTranslationServices['TTMServer'] = [ + 'database' => false, // Passed to wfGetDB + 'cutoff' => 0.75, + 'type' => 'ttmserver', + 'public' => false, + ]; + } + } + + // Add the BaseTemplateToolbox handler only when the new hook hasn't been defined yet. + if ( interface_exists( SidebarBeforeOutputHook::class ) ) { + $wgHooks['SidebarBeforeOutput'][] = 'TranslateToolbox::toolboxAllTranslations'; + } else { + $wgHooks['BaseTemplateToolbox'][] = 'TranslateToolbox::toolboxAllTranslationsOld'; + } } /** @@ -254,8 +261,8 @@ class TranslateHooks { * @param array &$names */ public static function onUserGetReservedNames( array &$names ) { - global $wgTranslateFuzzyBotName; - $names[] = $wgTranslateFuzzyBotName; + $names[] = FuzzyBot::getName(); + $names[] = TranslateUserManager::getName(); } /** @@ -263,8 +270,11 @@ class TranslateHooks { * * @param AbuseFilterVariableHolder &$vars * @param Title|null $title + * @todo Remove "AbuseFilter-filterAction" from extension.json once we support 1.34+ only. + * At that point, add a $user parameter to this handler, add typehints on all arguments + * (including $title which will always be a Title), and remove the logging below. */ - public static function onAbuseFilterFilterAction( &$vars, $title ) { + public static function onAbuseFilterAlterVariables( &$vars, $title ) { if ( !$title instanceof Title ) { wfDebugLog( 'T143073', 'Got non-Title in ' . wfGetAllCallers( 5 ) ); return; @@ -280,11 +290,16 @@ class TranslateHooks { 'translate-get-source', [ 'handle' => $handle ] ); + $vars->setLazyLoadVar( + 'translate_target_language', + 'translate-get-target-language', + [ 'handle' => $handle ] + ); } } /** - * Computes the translate_source_text AbuseFilter variable + * Computes the translate_source_text and translate_target_language AbuseFilter variables * @param string $method * @param AbuseFilterVariableHolder $vars * @param array $parameters @@ -292,18 +307,22 @@ class TranslateHooks { * @return bool */ public static function onAbuseFilterComputeVariable( $method, $vars, $parameters, &$result ) { - if ( $method !== 'translate-get-source' ) { + if ( $method !== 'translate-get-source' && $method !== 'translate-get-target-language' ) { return true; } $handle = $parameters['handle']; - $source = ''; + $value = ''; if ( $handle->isValid() ) { - $group = $handle->getGroup(); - $source = $group->getMessage( $handle->getKey(), $group->getSourceLanguage() ); + if ( $method === 'translate-get-source' ) { + $group = $handle->getGroup(); + $value = $group->getMessage( $handle->getKey(), $group->getSourceLanguage() ); + } else { + $value = $handle->getCode(); + } } - $result = $source; + $result = $value; return false; } @@ -314,7 +333,9 @@ class TranslateHooks { */ public static function onAbuseFilterBuilder( array &$builderValues ) { // Uses: 'abusefilter-edit-builder-vars-translate-source-text' + // and 'abusefilter-edit-builder-vars-translate-target-language' $builderValues['vars']['translate_source_text'] = 'translate-source-text'; + $builderValues['vars']['translate_target_language'] = 'translate-target-language'; } /** @@ -328,24 +349,6 @@ class TranslateHooks { $parser->setHook( 'languages', [ 'PageTranslationHooks', 'languages' ] ); } - /** - * Hook: UnitTestsList - * - * @param array &$files - */ - public static function setupUnitTests( array &$files ) { - $dir = __DIR__ . '/tests/phpunit'; - $directoryIterator = new RecursiveDirectoryIterator( $dir ); - $fileIterator = new RecursiveIteratorIterator( $directoryIterator ); - - /** @var SplFileInfo $fileInfo */ - foreach ( $fileIterator as $fileInfo ) { - if ( substr( $fileInfo->getFilename(), -8 ) === 'Test.php' ) { - $files[] = $fileInfo->getPathname(); - } - } - } - /** * Hook: LoadExtensionSchemaUpdates * @@ -470,9 +473,9 @@ class TranslateHooks { * Set the correct page content language for translation units. * * @param Title $title - * @param Language &$pageLang + * @param Language|StubUserLang|string &$pageLang */ - public static function onPageContentLanguage( Title $title, Language &$pageLang ) { + public static function onPageContentLanguage( Title $title, &$pageLang ) { $handle = new MessageHandle( $title ); if ( $handle->isMessageNamespace() ) { $pageLang = $handle->getEffectiveLanguage(); @@ -550,7 +553,6 @@ class TranslateHooks { return true; } - $server = TTMServer::primary(); if ( TTMServer::primary() instanceof SearchableTTMServer ) { $href = SpecialPage::getTitleFor( 'SearchTranslations' ) ->getFullUrl( [ 'query' => $term ] ); @@ -642,7 +644,8 @@ class TranslateHooks { */ public static function hideRestrictedFromStats( $id, $code ) { $filterLangs = TranslateMetadata::get( $id, 'prioritylangs' ); - if ( strlen( $filterLangs ) === 0 ) { + $hasPriorityForce = TranslateMetadata::get( $id, 'priorityforce' ) === 'on'; + if ( strlen( $filterLangs ) === 0 || !$hasPriorityForce ) { // No restrictions, keep everything return true; } @@ -673,9 +676,9 @@ class TranslateHooks { * @param OutputPage $out */ public static function addConfig( array &$vars, OutputPage $out ) { - $request = $out->getRequest(); $title = $out->getTitle(); - list( $alias, ) = TranslateUtils::resolveSpecialPageAlias( $title->getText() ); + [ $alias, ] = MediaWikiServices::getInstance() + ->getSpecialPageFactory()->resolveAlias( $title->getText() ); if ( $title->isSpecialPage() && ( $alias === 'Translate' @@ -688,6 +691,7 @@ class TranslateHooks { $vars['TranslateMessageReviewRight'] = $out->getUser()->isAllowed( 'translate-messagereview' ); $vars['DeleteRight'] = $out->getUser()->isAllowed( 'delete' ); + $vars['TranslateManageRight'] = $out->getUser()->isAllowed( 'translate-manage' ); $vars['wgTranslateDocumentationLanguageCode'] = $wgTranslateDocumentationLanguageCode; $vars['wgTranslatePermissionUrl'] = $wgTranslatePermissionUrl; $vars['wgTranslateUseSandbox'] = $wgTranslateUseSandbox; @@ -721,7 +725,7 @@ class TranslateHooks { // Update the non-duplicate rows, we'll just delete // the duplicate ones later foreach ( self::$userMergeTables as $table => $field ) { - if ( $dbw->tableExists( $table ) ) { + if ( $dbw->tableExists( $table, __METHOD__ ) ) { $dbw->update( $table, [ $field => $newUser->getId() ], @@ -744,7 +748,7 @@ class TranslateHooks { // Delete any remaining rows that didn't get merged foreach ( self::$userMergeTables as $table => $field ) { - if ( $dbw->tableExists( $table ) ) { + if ( $dbw->tableExists( $table, __METHOD__ ) ) { $dbw->delete( $table, [ $field => $oldUser->getId() ], @@ -787,7 +791,8 @@ class TranslateHooks { return true; } - list( $name, $subpage ) = TranslateUtils::resolveSpecialPageAlias( $target->getDBkey() ); + [ $name, $subpage ] = MediaWikiServices::getInstance() + ->getSpecialPageFactory()->resolveAlias( $target->getDBkey() ); if ( $name !== 'MyLanguage' ) { return true; } @@ -833,17 +838,299 @@ class TranslateHooks { * @param ResourceLoader $resourceLoader */ public static function onResourceLoaderRegisterModules( ResourceLoader $resourceLoader ) { - $modules = []; - $modules['ext.translate.recentgroups'] = [ - 'scripts' => 'resources/js/ext.translate.recentgroups.js', - 'dependencies' => [ - 'mediawiki.storage' - ], + global $wgVersion; + + // Support: MediaWiki <= 1.33 + $hasOldJqUI = version_compare( $wgVersion, '1.34', '<' ); + + // Support: MediaWiki <= 1.34 + $hasOldTokens = $hasOldNotify = version_compare( $wgVersion, '1.35', '<' ); + + $tpl = [ 'localBasePath' => __DIR__, 'remoteExtPath' => 'Translate', 'targets' => [ 'desktop', 'mobile' ], ]; + $modules = [ + 'ext.translate.recentgroups' => $tpl + [ + 'scripts' => 'resources/js/ext.translate.recentgroups.js', + 'dependencies' => [ + 'mediawiki.storage' + ], + ], + 'ext.translate.groupselector' => $tpl + [ + 'styles' => 'resources/css/ext.translate.groupselector.less', + 'scripts' => 'resources/js/ext.translate.groupselector.js', + 'dependencies' => [ + 'ext.translate.base', + 'ext.translate.loader', + 'ext.translate.statsbar', + $hasOldJqUI ? 'jquery.ui.position' : 'jquery.ui', + 'mediawiki.jqueryMsg' + ], + 'messages' => [ + 'translate-msggroupselector-search-all', + 'translate-msggroupselector-search-placeholder', + 'translate-msggroupselector-search-recent', + 'translate-msggroupselector-view-subprojects' + ] + ], + 'ext.translate.multiselectautocomplete' => $tpl + [ + 'scripts' => 'resources/js/ext.translate.multiselectautocomplete.js', + 'dependencies' => [ + $hasOldJqUI ? 'jquery.ui.autocomplete' : 'jquery.ui', + ] + ], + 'ext.translate.special.aggregategroups' => $tpl + [ + 'scripts' => 'resources/js/ext.translate.special.aggregategroups.js', + 'dependencies' => [ + $hasOldJqUI ? 'jquery.ui.autocomplete' : 'jquery.ui', + 'mediawiki.api', + 'mediawiki.util' + ], + 'messages' => [ + 'tpt-aggregategroup-add', + 'tpt-aggregategroup-edit-description', + 'tpt-aggregategroup-edit-name', + 'tpt-aggregategroup-remove-confirm', + 'tpt-aggregategroup-update', + 'tpt-aggregategroup-update-cancel', + 'tpt-invalid-group' + ] + ], + 'ext.translate.special.importtranslations' => $tpl + [ + 'scripts' => 'resources/js/ext.translate.special.importtranslations.js', + 'dependencies' => [ + $hasOldJqUI ? 'jquery.ui.autocomplete' : 'jquery.ui', + ] + ], + 'ext.translate.special.managetranslatorsandbox' => $tpl + [ + 'scripts' => 'resources/js/ext.translate.special.managetranslatorsandbox.js', + 'dependencies' => array_merge( [ + 'ext.translate.loader', + 'ext.translate.translationstashstorage', + 'ext.uls.mediawiki', + $hasOldJqUI ? 'jquery.ui.dialog' : 'jquery.ui', + 'mediawiki.api', + 'mediawiki.jqueryMsg', + 'mediawiki.language', + ], $hasOldNotify ? [ 'mediawiki.notify' ] : [] ), + 'messages' => [ + 'tsb-accept-all-button-label', + 'tsb-accept-button-label', + 'tsb-reject-confirmation', + 'tsb-accept-confirmation', + 'tsb-all-languages-button-label', + 'tsb-didnt-make-any-translations', + 'tsb-no-requests-from-new-users', + 'tsb-older-requests', + 'tsb-reject-all-button-label', + 'tsb-reject-button-label', + 'tsb-reminder-failed', + 'tsb-reminder-link-text', + 'tsb-reminder-sending', + 'tsb-reminder-sent', + 'tsb-reminder-sent-new', + 'tsb-request-count', + 'tsb-selected-count', + 'tsb-translations-current', + 'tsb-translations-source', + 'tsb-translations-user', + 'tsb-user-posted-a-comment' + ] + ], + 'ext.translate.special.searchtranslations.operatorsuggest' => $tpl + [ + 'scripts' => 'resources/js/ext.translate.special.operatorsuggest.js', + 'dependencies' => [ + $hasOldJqUI ? 'jquery.ui.autocomplete' : 'jquery.ui', + ] + ], + 'ext.translate.special.pagetranslation' => $tpl + [ + 'scripts' => 'resources/js/ext.translate.special.pagetranslation.js', + 'dependencies' => [ + 'ext.translate.multiselectautocomplete', + 'mediawiki.ui.button', + 'mediawiki.Uri', + $hasOldTokens ? 'user.tokens' : 'user.options', + ], + 'targets' => [ + 'desktop' + ] + ], + "ext.translate.editor" => $tpl + [ + "scripts" => [ + "resources/js/ext.translate.storage.js", + "resources/lib/jquery.autosize.js", + "resources/js/ext.translate.editor.helpers.js", + "resources/js/ext.translate.editor.js", + "resources/js/ext.translate.editor.shortcuts.js", + "resources/js/ext.translate.pagemode.js", + "resources/js/ext.translate.proofread.js" + ], + "styles" => [ + "resources/css/ext.translate.editor.css", + "resources/css/ext.translate.pagemode.css", + "resources/css/ext.translate.proofread.css" + ], + "dependencies" => array_merge( [ + "ext.translate.base", + "ext.translate.dropdownmenu", + "jquery.makeCollapsible", + "jquery.textSelection", + "jquery.textchange", + "mediawiki.Uri", + "mediawiki.api", + "mediawiki.jqueryMsg", + "mediawiki.language", + "mediawiki.user", + "mediawiki.util" + ], $hasOldNotify ? [ 'mediawiki.notify' ] : [] ), + "messages" => [ + "translate-edit-askpermission", + "translate-edit-nopermission", + "tux-editor-add-desc", + "tux-editor-ask-help", + "tux-editor-cancel-button-label", + "tux-editor-close-tooltip", + "tux-editor-collapse-tooltip", + "tux-editor-confirm-button-label", + "tux-editor-discard-changes-button-label", + "tux-editor-doc-editor-cancel", + "tux-editor-doc-editor-placeholder", + "tux-editor-doc-editor-save", + "tux-editor-edit-desc", + "tux-editor-expand-tooltip", + "tux-editor-in-other-languages", + "tux-editor-loading", + "tux-editor-loading-failed", + "tux-editor-message-desc-less", + "tux-editor-message-desc-more", + "tux-editor-message-tools-show-editor", + "tux-editor-message-tools-delete", + "tux-editor-message-tools-history", + "tux-editor-message-tools-translations", + "tux-editor-message-tools-linktothis", + "tux-editor-n-uses", + "tux-editor-need-more-help", + "tux-editor-outdated-notice", + "tux-editor-outdated-notice-diff-link", + "tux-editor-paste-original-button-label", + "tux-editor-placeholder", + "tux-editor-editsummary-placeholder", + "tux-editor-proofread-button-label", + "tux-editor-save-button-label", + "tux-editor-save-failed", + "tux-editor-shortcut-info", + "tux-editor-skip-button-label", + "tux-editor-suggestions-title", + "tux-editor-tm-match", + "tux-proofread-action-tooltip", + "tux-proofread-edit-label", + "tux-proofread-translated-by-self", + "tux-session-expired", + "tux-status-saving", + "tux-status-translated", + "tux-status-unsaved", + "tux-save-unknown-error", + "tux-notices-hide", + "tux-notices-more", + "spamprotectiontext" + ], + "targets" => [ + "desktop", + "mobile" + ] + ], + "ext.translate.special.managegroups" => $tpl + [ + "dependencies" => array_merge( [ + "ext.translate.messagerenamedialog" + ], $hasOldNotify ? [ 'mediawiki.notify' ] : [] ), + "messages" => [ + "translate-smg-rename-new", + "translate-smg-rename-rename", + "translate-smg-rename-dialog-title", + "percent" + ], + "scripts" => [ + "resources/js/ext.translate.special.managegroups.js" + ], + "targets" => [ + "desktop", + "mobile" + ] + ], + ]; + $resourceLoader->register( $modules ); } + + /** + * Runs the configured validator to ensure that the message meets the required criteria. + * Hook: EditFilterMergedContent + * @param IContextSource $context + * @param Content $content + * @param Status $status + * @param string $summary + * @param \User $user + * @return bool true if message is valid, false otherwise. + */ + public static function validateMessage( IContextSource $context, Content $content, + Status $status, $summary, User $user + ) { + if ( !$content instanceof TextContent ) { + // Not interested + return true; + } + + $text = $content->getText(); + $title = $context->getTitle(); + $handle = new MessageHandle( $title ); + + if ( !$handle->isValid() ) { + return true; + } + + // Don't bother validating if FuzzyBot or translation admin are saving. + if ( $user->isAllowed( 'translate-manage' ) || $user->equals( FuzzyBot::getUser() ) ) { + return true; + } + + // Check the namespace, and perform validations for all messages excluding documentation. + if ( $handle->isMessageNamespace() && !$handle->isDoc() ) { + $group = $handle->getGroup(); + + if ( is_callable( [ $group, 'getMessageContent' ] ) ) { + // @phan-suppress-next-line PhanUndeclaredMethod + $definition = $group->getMessageContent( $handle ); + } else { + $definition = $group->getMessage( $handle->getKey(), $group->getSourceLanguage() ); + } + + $message = new FatMessage( $handle->getKey(), $definition ); + $message->setTranslation( $text ); + + $messageValidator = $group->getValidator(); + if ( !$messageValidator ) { + return true; + } + + $validationResponse = $messageValidator->validateMessage( $message, $handle->getCode() ); + if ( $validationResponse->hasErrors() ) { + $status->fatal( new \ApiRawMessage( + $context->msg( 'translate-syntax-error' )->parse(), + 'translate-validation-failed', + [ + 'validation' => [ + 'errors' => $validationResponse->getDescriptiveErrors( $context ), + 'warnings' => $validationResponse->getDescriptiveWarnings( $context ) + ] + ] + ) ); + return false; + } + } + + return true; + } } diff --git a/MLEB/Translate/TranslateUtils.php b/MLEB/Translate/TranslateUtils.php index 0ee7a349..546be5c7 100644 --- a/MLEB/Translate/TranslateUtils.php +++ b/MLEB/Translate/TranslateUtils.php @@ -8,6 +8,8 @@ */ use MediaWiki\MediaWikiServices; +use MediaWiki\Revision\RevisionRecord; +use MediaWiki\Revision\SlotRecord; /** * Essentially random collection of helper functions, similar to GlobalFunctions.php. @@ -62,7 +64,7 @@ class TranslateUtils { $title = self::title( $key, $language, $namespace ); $data = self::getContents( [ $title ], $namespace ); - return isset( $data[$title][0] ) ? $data[$title][0] : null; + return $data[$title][0] ?? null; } /** @@ -75,44 +77,101 @@ class TranslateUtils { */ public static function getContents( $titles, $namespace ) { $dbr = wfGetDB( DB_REPLICA ); + $revStore = MediaWikiServices::getInstance()->getRevisionStore(); + $titleContents = []; + if ( is_callable( [ $revStore, 'newRevisionsFromBatch' ] ) ) { + $query = $revStore->getQueryInfo( [ 'page', 'user' ] ); + $rows = $dbr->select( + $query['tables'], + $query['fields'], + [ + 'page_namespace' => $namespace, + 'page_title' => $titles + ], + __METHOD__, + [], + $query['joins'] + [ 'JOIN', 'page_latest=rev_id' ] + ); - if ( class_exists( ActorMigration::class ) ) { - $actorQuery = ActorMigration::newMigration()->getJoin( 'rev_user' ); + $revisions = $revStore->newRevisionsFromBatch( $rows, [ + 'slots' => true, + 'content' => true + ] )->getValue(); + foreach ( $rows as $row ) { + /** @var RevisionRecord|null $rev */ + $rev = $revisions[$row->rev_id]; + if ( $rev ) { + /** @var TextContent $content */ + $content = $rev->getContent( SlotRecord::MAIN ); + if ( $content ) { + $titleContents[$row->page_title] = [ + $content->getText(), + $row->rev_user_text + ]; + } + } + } + $rows->free(); } else { - $actorQuery = [ - 'tables' => [], - 'fields' => [ 'rev_user_text' => 'rev_user_text' ], - 'joins' => [], - ]; + // Pre 1.34 compatibility + $actorQuery = ActorMigration::newMigration()->getJoin( 'rev_user' ); + $rows = $dbr->select( [ 'page', 'revision', 'text' ] + $actorQuery['tables'], + [ + 'page_title', 'old_text', 'old_flags', + 'rev_user_text' => $actorQuery['fields']['rev_user_text'] + ], + [ + 'page_namespace' => $namespace, + 'page_title' => $titles + ], + __METHOD__, + [], + [ + 'revision' => [ 'JOIN', 'page_latest=rev_id' ], + 'text' => [ 'JOIN', 'rev_text_id=old_id' ], + ] + $actorQuery['joins'] + ); + foreach ( $rows as $row ) { + $titleContents[$row->page_title] = [ + Revision::getRevisionText( $row ), + $row->rev_user_text + ]; + } + $rows->free(); } + return $titleContents; + } - $rows = $dbr->select( [ 'page', 'revision', 'text' ] + $actorQuery['tables'], - [ - 'page_title', 'old_text', 'old_flags', - 'rev_user_text' => $actorQuery['fields']['rev_user_text'] - ], - [ - 'page_namespace' => $namespace, - 'page_title' => $titles - ], - __METHOD__, - [], - [ - 'revision' => [ 'JOIN', 'page_latest=rev_id' ], - 'text' => [ 'JOIN', 'rev_text_id=old_id' ], - ] + $actorQuery['joins'] - ); + /** + * Returns the content for a given title and adds the fuzzy tag if requested. + * @param Title $title + * @param bool $addFuzzy Add the fuzzy tag if appropriate. + * @return string|null + */ + public static function getContentForTitle( Title $title, $addFuzzy = false ) { + $store = MediaWikiServices::getInstance()->getRevisionStore(); + $revision = $store->getRevisionByTitle( $title ); - $titles = []; - foreach ( $rows as $row ) { - $titles[$row->page_title] = [ - Revision::getRevisionText( $row ), - $row->rev_user_text - ]; + if ( $revision === null ) { + return null; + } + + $wiki = ContentHandler::getContentText( $revision->getContent( SlotRecord::MAIN ) ); + + if ( !$wiki ) { + return null; + } + + if ( !$addFuzzy ) { + return $wiki; } - $rows->free(); - return $titles; + $handle = new MessageHandle( $title ); + if ( $handle->isFuzzy() ) { + $wiki = TRANSLATE_FUZZY . str_replace( TRANSLATE_FUZZY, '', $wiki ); + } + + return $wiki; } /** @@ -198,12 +257,7 @@ class TranslateUtils { */ public static function getLanguageName( $code, $language = 'en' ) { $languages = self::getLanguageNames( $language ); - - if ( isset( $languages[$code] ) ) { - return $languages[$code]; - } else { - return $code; - } + return $languages[$code] ?? $code; } /** @@ -263,19 +317,6 @@ class TranslateUtils { return $languageNames; } - /** - * Get the normalised IETF language tag. - * @param string $code The language code. - * @deprecated This provides backward compatibility; replace with - * \LanguageCode::bcp47() once MW 1.30 is no longer supported. - */ - public static function bcp47( $code ) { - if ( !is_callable( [ 'LanguageCode', 'bcp47' ] ) ) { - return wfBCP47( $code ); - } - return LanguageCode::bcp47( $code ); - } - /** * Returns the primary group message belongs to. * @param int $namespace @@ -338,11 +379,11 @@ class TranslateUtils { * * This is also implemented in JavaScript in ext.translate.quickedit. * - * @param string $msg Plain text string. + * @param string $message Plain text string. * @return string Text string that is ready for outputting. */ - public static function convertWhiteSpaceToHTML( $msg ) { - $msg = htmlspecialchars( $msg ); + public static function convertWhiteSpaceToHTML( $message ) { + $msg = htmlspecialchars( $message ); $msg = preg_replace( '/^ /m', ' ', $msg ); $msg = preg_replace( '/ $/m', ' ', $msg ); $msg = preg_replace( '/ /', '  ', $msg ); @@ -410,7 +451,12 @@ class TranslateUtils { $formats = []; $filename = substr( $icon, 7 ); - $file = wfFindFile( $filename ); + if ( method_exists( MediaWikiServices::class, 'getRepoGroup' ) ) { + // MediaWiki 1.34+ + $file = MediaWikiServices::getInstance()->getRepoGroup()->findFile( $filename ); + } else { + $file = wfFindFile( $filename ); + } if ( !$file ) { wfWarn( "Unknown message group icon file $icon" ); @@ -446,23 +492,31 @@ class TranslateUtils { * Get a DB handle suitable for read and read-for-write cases * * @return \Wikimedia\Rdbms\IDatabase Master for HTTP POST, CLI, DB already changed; - * slave otherwise + * replica otherwise */ public static function getSafeReadDB() { + $lb = MediaWikiServices::getInstance()->getDBLoadBalancer(); + $index = self::shouldReadFromMaster() ? DB_MASTER : DB_REPLICA; + + return $lb->getConnection( $index ); + } + + /** + * Check whether master should be used for reads to avoid reading stale data. + * + * @return bool + */ + public static function shouldReadFromMaster() { $lb = MediaWikiServices::getInstance()->getDBLoadBalancer(); // Parsing APIs need POST for payloads but are read-only, so avoid spamming // the master then. No good way to check this at the moment... if ( PageTranslationHooks::$renderingContext ) { - $index = DB_REPLICA; - } else { - $index = ( - PHP_SAPI === 'cli' || - RequestContext::getMain()->getRequest()->wasPosted() || - $lb->hasOrMadeRecentMasterChanges() - ) ? DB_MASTER : DB_REPLICA; + return false; } - return $lb->getConnection( $index ); + return PHP_SAPI === 'cli' || + RequestContext::getMain()->getRequest()->wasPosted() || + $lb->hasOrMadeRecentMasterChanges(); } /** @@ -476,7 +530,8 @@ class TranslateUtils { return $handle->getTitle()->getLocalURL( [ 'action' => 'edit' ] ); } - $title = self::getSpecialPage( 'Translate' )->getPageTitle(); + $title = MediaWikiServices::getInstance() + ->getSpecialPageFactory()->getPage( 'Translate' )->getPageTitle(); return $title->getLocalURL( [ 'showMessage' => $handle->getInternalKey(), 'group' => $handle->getGroup()->getId(), @@ -485,110 +540,68 @@ class TranslateUtils { } /** - * Compatibility for pre-1.32, when SpecialPageFactory methods were static. - * - * @see SpecialPageFactory::resolveAlias - * @param string $text - * @return array + * Serialize the given value + * @param mixed $value + * @return string */ - public static function resolveSpecialPageAlias( $text ) : array { - if ( method_exists( MediaWikiServices::class, 'getSpecialPageFactory' ) ) { - return MediaWikiServices::getInstance()->getSpecialPageFactory()->resolveAlias( $text ); - } - return SpecialPageFactory::resolveAlias( $text ); + public static function serialize( $value ) { + return serialize( $value ); } /** - * Compatibility for pre-1.32, when SpecialPageFactory methods were static. - * - * @see SpecialPageFactory::getPage - * @param string $name - * @return SpecialPage|null + * Deserialize the given string + * @param string $str + * @param array|null $opts + * @return mixed */ - public static function getSpecialPage( $name ) { - if ( method_exists( MediaWikiServices::class, 'getSpecialPageFactory' ) ) { - return MediaWikiServices::getInstance()->getSpecialPageFactory()->getPage( $name ); - } - return SpecialPageFactory::getPage( $name ); + public static function deserialize( $str, $opts = [ 'allowed_classes' => false ] ) { + return unserialize( $str, $opts ); } /** - * Compatibility for pre-1.32, before OutputPage::addWikiTextAsInterface() - * - * @see OutputPage::addWikiTextAsInterface - * @param OutputPage $out - * @param string $text The wikitext to add to the output. + * @return string + * @since 2020.05 */ - public static function addWikiTextAsInterface( OutputPage $out, $text ) { - if ( is_callable( [ $out, 'addWikiTextAsInterface' ] ) ) { - $out->addWikiTextAsInterface( $text ); - } else { - // $out->addWikiTextTitle is deprecated in 1.32, but has existed - // since (at least) MW 1.21, so use that as a fallback. - $out->addWikiTextTitle( - $text, $out->getTitle(), - /*linestart*/true, /*tidy*/true, /*interface*/true - ); + public static function getVersion(): string { + // Avoid parsing JSON multiple time per request + static $version = null; + if ( $version === null ) { + $version = json_decode( file_get_contents( __DIR__ . '/extension.json' ) )->version; } + return $version; } /** - * Compatibility for pre-1.32, before OutputPage::wrapWikiTextAsInterface() + * Checks if the namespace that the title belongs to allows subpages * - * @see OutputPage::wrapWikiTextAsInterface - * @param OutputPage $out - * @param string $wrapperClass The class attribute value for the
- * wrapper in the output HTML - * @param string $text The wikitext in the user interface language to - * add to the output. + * @internal - For internal use only + * @param Title $title + * @return bool */ - public static function wrapWikiTextAsInterface( OutputPage $out, $wrapperClass, $text ) { - if ( is_callable( [ $out, 'wrapWikiTextAsInterface' ] ) ) { - $out->wrapWikiTextAsInterface( $wrapperClass, $text ); + public static function allowsSubpages( Title $title ): bool { + $mwInstance = MediaWikiServices::getInstance(); + if ( is_callable( [ $mwInstance, 'getNamespaceInfo' ] ) ) { + $namespaceInfo = $mwInstance->getNamespaceInfo(); + return $namespaceInfo->hasSubpages( $title->getNamespace() ); } else { - // wfDeprecated( 'use OutputPage::wrapWikiTextAsInterface', '1.32') - if ( !$wrapperClass ) { - $wrapperClass = ''; - } - $out->addHTML( Html::openElement( - 'div', [ 'class' => $wrapperClass ] - ) ); - self::addWikiTextAsInterface( $out, $text ); - $out->addHtml( Html::closeElement( - 'div' - ) ); + // BC for MW 1.33 + global $wgNamespacesWithSubpages; + return isset( $wgNamespacesWithSubpages[ $title->getNamespace() ] ) && + $wgNamespacesWithSubpages[ $title->getNamespace() ]; } } - /** - * Compatibility for pre-1.33, before OutputPage::parseAsInterface() - * - * @see OutputPage::parseAsInterface - * @param OutputPage $out - * @param string $text The wikitext in the user interface language to - * be parsed - * @return string HTML - */ - public static function parseAsInterface( OutputPage $out, $text ) { - if ( is_callable( [ $out, 'parseAsInterface' ] ) ) { - return $out->parseAsInterface( $text ); - } else { - // wfDeprecated( 'use OutputPage::parseAsInterface', '1.33') - return $out->parse( $text, /*linestart*/true, /*interface*/true ); + public static function isEditPage( WebRequest $request ): bool { + $veAction = $request->getVal( 'veaction' ); + if ( $veAction ) { + return true; } - } - public static function parseInlineAsInterface( OutputPage $out, $text ) { - if ( is_callable( [ $out, 'parseInlineAsInterface' ] ) ) { - return $out->parseInlineAsInterface( $text ); - } else { - // wfDeprecated( 'use OutputPage::parseInlineAsInterface', '1.33') - // The block wrapper stripping was slightly broken before 1.33 - // as well. - $contents = $out->parse( $text, /*linestart*/true, /*interface*/true ); - // Remove whatever block element wrapup the parser likes to add - $contents = preg_replace( '~^<([a-z]+)>(.*)$~us', '\2', $contents ); - return $contents; + $action = $request->getVal( 'action' ); + if ( $action === 'edit' ) { + return true; } + + return false; } } diff --git a/MLEB/Translate/api/ApiAggregateGroups.php b/MLEB/Translate/api/ApiAggregateGroups.php index a8a259df..5899bc07 100644 --- a/MLEB/Translate/api/ApiAggregateGroups.php +++ b/MLEB/Translate/api/ApiAggregateGroups.php @@ -120,11 +120,11 @@ class ApiAggregateGroups extends ApiBase { $idExists = MessageGroups::getGroup( $aggregateGroupId ); if ( $idExists ) { $i = 1; - while ( $idExists ) { + do { $tempId = $aggregateGroupId . '-' . $i; $idExists = MessageGroups::getGroup( $tempId ); $i++; - } + } while ( $idExists ); $aggregateGroupId = $tempId; } diff --git a/MLEB/Translate/api/ApiGroupReview.php b/MLEB/Translate/api/ApiGroupReview.php index 67583854..cb448ccd 100644 --- a/MLEB/Translate/api/ApiGroupReview.php +++ b/MLEB/Translate/api/ApiGroupReview.php @@ -22,7 +22,7 @@ class ApiGroupReview extends ApiBase { $code = $requestParams['language']; if ( !$group || MessageGroups::isDynamic( $group ) ) { - $this->dieWithError( [ 'apierror-missingparam', 'group' ] ); + $this->dieWithError( [ 'apierror-badparameter', 'group' ] ); } $stateConfig = $group->getMessageGroupStates()->getStates(); if ( !$stateConfig ) { @@ -35,11 +35,9 @@ class ApiGroupReview extends ApiBase { $this->dieBlocked( $user->getBlock() ); } - $requestParams = $this->extractRequestParams(); - $languages = Language::fetchLanguageNames(); if ( !isset( $languages[$code] ) ) { - $this->dieWithError( [ 'apierror-missingparam', 'language' ] ); + $this->dieWithError( [ 'apierror-badparameter', 'language' ] ); } $targetState = $requestParams['state']; diff --git a/MLEB/Translate/api/ApiManageMessageGroups.php b/MLEB/Translate/api/ApiManageMessageGroups.php new file mode 100644 index 00000000..24f24c50 --- /dev/null +++ b/MLEB/Translate/api/ApiManageMessageGroups.php @@ -0,0 +1,329 @@ +checkUserRightsAny( self::RIGHT ); + $params = $this->extractRequestParams(); + + $groupId = $params['groupId']; + $op = $params['operation']; + $msgKey = $params['messageKey']; + $name = $params['changesetName'] ?? MessageChangeStorage::DEFAULT_NAME; + $changesetModifiedTime = $params['changesetModified']; + $renameKey = null; + + if ( !MessageChangeStorage::isValidCdbName( $name ) ) { + return $this->dieWithError( + [ 'apierror-translate-invalid-changeset-name', wfEscapeWikiText( $name ) ], + 'invalidchangeset' + ); + } + $cdbPath = MessageChangeStorage::getCdbPath( $name ); + + if ( !MessageChangeStorage::isModifiedSince( $cdbPath, $changesetModifiedTime ) ) { + // Changeset file has been modified since the time the page was generated. + return $this->dieWithError( [ 'apierror-translate-changeset-modified' ] ); + } + + if ( $op === 'rename' ) { + if ( !isset( $params['renameMessageKey'] ) ) { + return $this->dieWithError( [ 'apierror-missingparam', 'renameMessageKey' ] ); + } + $renameKey = $params['renameMessageKey']; + } + + $sourceChanges = MessageChangeStorage::getGroupChanges( $cdbPath, $groupId ); + if ( $sourceChanges->getAllModifications() === [] ) { + return $this->dieWithError( [ 'apierror-translate-smg-nochanges' ] ); + } + + $group = MessageGroups::getGroup( $groupId ); + if ( $group === null ) { + return $this->dieWithError( 'apierror-translate-invalidgroup', 'invalidgroup' ); + } + + try { + if ( $op === 'rename' ) { + $this->handleRename( + $group, $sourceChanges, $msgKey, $renameKey, $group->getSourceLanguage() + ); + } elseif ( $op === 'new' ) { + $this->handleNew( $sourceChanges, $msgKey, $group->getSourceLanguage() ); + } else { + return $this->dieWithError( + [ 'apierror-translate-invalid-operation', wfEscapeWikiText( $op ), + wfEscapeWikiText( implode( '/', [ 'new' , 'rename' ] ) ) ], + 'invalidoperation' + ); + } + } catch ( Exception $ex ) { + // Log necessary parameters and rethrow. + $data = [ + 'op' => $op, + 'msgKey' => $msgKey, + 'renameKey' => $renameKey, + 'groupId' => $group->getId(), + 'group' => $group->getLabel(), + 'groupSourceLang' => $group->getSourceLanguage(), + 'exception' => $ex + ]; + + error_log( + "Error while running: ApiManageMessageGroups::execute. Inputs: \n" . + FormatJson::encode( $data, true ) + ); + + throw $ex; + } + + // Write the source changes back to file. + MessageChangeStorage::writeGroupChanges( $sourceChanges, $groupId, $cdbPath ); + + $this->getResult()->addValue( null, $this->getModuleName(), [ + 'success' => 1 + ] ); + } + + /** + * Handles rename requests + * @param MessageGroup $group + * @param MessageSourceChange $sourceChanges + * @param string $msgKey New rename key + * @param string $renameKey Target key being renamed + * @param string $sourceLanguage + */ + protected function handleRename( MessageGroup $group, MessageSourceChange $sourceChanges, + $msgKey, $renameKey, $sourceLanguage + ) { + $languages = $sourceChanges->getLanguages(); + + foreach ( $languages as $code ) { + $msgState = $renameMsgState = null; + + $isSourceLang = $sourceLanguage === $code; + if ( $isSourceLang ) { + $this->handleSourceRename( $sourceChanges, $code, $msgKey, $renameKey ); + continue; + } + + // Check for changes with the new key, then with the old key. + // If there are no changes, we won't find anything at all, and + // can skip this languageCode. + $msg = $sourceChanges->findMessage( $code, $msgKey, [ + MessageSourceChange::ADDITION, + MessageSourceChange::RENAME + ], $msgState ); + + // This case will arise if the message key has been changed in the source + // language, but has not been modified in this language code. + // NOTE: We are also searching under deletions. This means that if the source + // language key is renamed, but one of the non source language keys is removed, + // renaming it will not remove the translation, but only rename it. This + // scenario is highly unlikely though. + $msg = $msg === null ? $sourceChanges->findMessage( $code, $renameKey, [ + MessageSourceChange::DELETION, + MessageSourceChange::CHANGE, + MessageSourceChange::RENAME + ], $msgState ) : $msg; + + if ( $msg === null ) { + continue; + } + + // Check for the renamed message in the rename list, and deleted list. + $renameMsg = $sourceChanges->findMessage( + $code, $renameKey, [ MessageSourceChange::RENAME, MessageSourceChange::DELETION ], + $renameMsgState + ); + + // content / msg will not be present if the message was deleted from the wiki or + // was for some reason unavailable during processing incoming changes. We're going + // to try and load it here again from the database. Very rare chance of this happening. + if ( $renameMsg === null || !isset( $renameMsg['content'] ) ) { + $title = Title::newFromText( + TranslateUtils::title( $renameKey, $code, $group->getNamespace() ), + $group->getNamespace() + ); + + $renameContent = TranslateUtils::getContentForTitle( $title, true ) ?? ''; + + $renameMsg = [ + 'key' => $renameKey, + 'content' => $renameContent + ]; + + // If the message was found in changes, this will be set, otherwise set it + // to none + if ( $renameMsgState === null ) { + $renameMsgState = MessageSourceChange::NONE; + } + } + + // Remove previous states + if ( $msgState === MessageSourceChange::RENAME ) { + $msgState = $sourceChanges->breakRename( $code, $msg['key'] ); + } else { + $sourceChanges->removeBasedOnType( $code, [ $msg['key'] ], $msgState ); + } + + if ( $renameMsgState === MessageSourceChange::RENAME ) { + $renameMsgState = $sourceChanges->breakRename( $code, $renameMsg['key'] ); + } elseif ( $renameMsgState !== MessageSourceChange::NONE ) { + $sourceChanges->removeBasedOnType( $code, [ $renameKey ], $renameMsgState ); + } + + // This is done in case the key has not been renamed in the non-source language. + $msg['key'] = $msgKey; + + // Add as rename + $stringComparator = new SimpleStringComparator(); + $similarity = $stringComparator->getSimilarity( + $msg['content'], + $renameMsg['content'] + ); + $sourceChanges->addRename( $code, $msg, $renameMsg, $similarity ); + $sourceChanges->setRenameState( $code, $msgKey, $msgState ); + $sourceChanges->setRenameState( $code, $renameKey, $renameMsgState ); + } + } + + protected function handleSourceRename( MessageSourceChange $sourceChanges, $code, + $msgKey, $renameKey + ) { + $msgState = $renameMsgState = null; + + $msg = $sourceChanges->findMessage( + $code, $msgKey, [ MessageSourceChange::ADDITION, MessageSourceChange::RENAME ], $msgState + ); + + $renameMsg = $sourceChanges->findMessage( + $code, + $renameKey, + [ MessageSourceChange::DELETION, MessageSourceChange::RENAME ], + $renameMsgState + ); + + if ( $msg === null || $renameMsg === null ) { + return $this->dieWithError( 'apierror-translate-rename-key-invalid' ); + } + + if ( $msgState === MessageSourceChange::RENAME ) { + $msgState = $sourceChanges->breakRename( $code, $msg['key'] ); + } + + if ( $renameMsgState === MessageSourceChange::RENAME ) { + $renameMsgState = $sourceChanges->breakRename( $code, $renameMsg['key'] ); + } + + // Ensure that one of them is an ADDITION, and one is DELETION + if ( $msgState !== MessageSourceChange::ADDITION || + $renameMsgState !== MessageSourceChange::DELETION ) { + return $this->dieWithError( [ + 'apierror-translate-rename-state-invalid', + wfEscapeWikiText( $msgState ), wfEscapeWikiText( $renameMsgState ) + ] ); + } + + // Remove previous states + $sourceChanges->removeAdditions( $code, [ $msgKey ] ); + $sourceChanges->removeDeletions( $code, [ $renameKey ] ); + + // Add as rename + $stringComparator = new SimpleStringComparator(); + $similarity = $stringComparator->getSimilarity( + $msg['content'], + $renameMsg['content'] + ); + $sourceChanges->addRename( $code, $msg, $renameMsg, $similarity ); + } + + /** + * Handles add message as new request + * @param MessageSourceChange $sourceChanges + * @param string $msgKey + * @param string $sourceLang + */ + protected function handleNew( MessageSourceChange $sourceChanges, $msgKey, $sourceLang ) { + $msgState = null; + $languages = $sourceChanges->getLanguages(); + + foreach ( $languages as $code ) { + $msg = $sourceChanges->findMessage( + $code, $msgKey, [ MessageSourceChange::RENAME ], $msgState + ); + + if ( $code === $sourceLang && $msg === null ) { + $this->dieWithError( 'apierror-translate-addition-key-invalid' ); + } + + if ( $code === $sourceLang && $msgState !== MessageSourceChange::RENAME ) { + $this->dieWithError( 'apierror-translate-rename-msg-new' ); + } + + // For any other language, its possible for the message to be not found. + if ( $msg === null ) { + continue; + } + + // breakRename will add the message back to its previous state, nothing more to do + $sourceChanges->breakRename( $code, $msg['key'] ); + } + } + + public function getAllowedParams() { + return [ + 'groupId' => [ + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_REQUIRED => true, + ], + 'renameMessageKey' => [ + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_REQUIRED => false, + ], + 'messageKey' => [ + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_REQUIRED => true, + ], + 'operation' => [ + ApiBase::PARAM_TYPE => [ 'rename', 'new' ], + ApiBase::PARAM_ISMULTI => false, + ApiBase::PARAM_REQUIRED => true, + ], + 'changesetName' => [ + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_DFLT => MessageChangeStorage::DEFAULT_NAME + ], + 'changesetModified' => [ + ApiBase::PARAM_TYPE => 'integer', + ApiBase::PARAM_REQUIRED => true, + ] + ]; + } + + public function isInternal() { + return true; + } + + public function needsToken() { + return 'csrf'; + } +} diff --git a/MLEB/Translate/api/ApiQueryManageMessageGroups.php b/MLEB/Translate/api/ApiQueryManageMessageGroups.php new file mode 100644 index 00000000..dc493cd3 --- /dev/null +++ b/MLEB/Translate/api/ApiQueryManageMessageGroups.php @@ -0,0 +1,143 @@ +extractRequestParams(); + $groupId = $params['groupId']; + $msgKey = $params['messageKey']; + $name = $params['changesetName'] ?? MessageChangeStorage::DEFAULT_NAME; + + $user = $this->getUser(); + $allowed = $user->isAllowed( self::RIGHT ); + + if ( !$allowed ) { + $this->dieWithError( 'apierror-permissiondenied-generic', 'permissiondenied' ); + } + + $group = MessageGroups::getGroup( $groupId ); + if ( !$group ) { + $this->dieWithError( 'apierror-translate-invalidgroup', 'invalidgroup' ); + } + + if ( !MessageChangeStorage::isValidCdbName( $name ) ) { + $this->dieWithError( + [ 'apierror-translate-invalid-changeset-name', wfEscapeWikiText( $name ) ], + 'invalidchangeset' + ); + } + $cdbPath = MessageChangeStorage::getCdbPath( $name ); + + $sourceChanges = MessageChangeStorage::getGroupChanges( $cdbPath, $groupId ); + + if ( $sourceChanges->getAllModifications() === [] ) { + $this->dieWithError( [ 'apierror-translate-smg-nochanges' ] ); + } + + $messages = $this->getPossibleRenames( + $sourceChanges, $group->getNamespace(), $msgKey, $group->getSourceLanguage() + ); + + $result = $this->getResult(); + $result->addValue( [ 'query', $this->getModuleName() ], null, $messages ); + } + + /** + * Fetches the messages that can be used as possible renames for a given message. + * @param MessageSourceChange $sourceChanges + * @param int $groupNamespace Group namespace + * @param string $msgKey + * @param string $languageCode Language code + * @return array + */ + protected function getPossibleRenames( MessageSourceChange $sourceChanges, $groupNamespace, + $msgKey, $languageCode + ) { + $deletions = $sourceChanges->getDeletions( $languageCode ); + $targetMsg = $sourceChanges->findMessage( + $languageCode, $msgKey, [ MessageSourceChange::ADDITION, MessageSourceChange::RENAME ] + ); + $stringComparator = new SimpleStringComparator(); + $renameList = []; + + // compare deleted messages with the target message and get the similarity. + foreach ( $deletions as $deletion ) { + if ( $deletion['content'] === null ) { + continue; + } + + $similarity = $stringComparator->getSimilarity( + $deletion['content'], + // @phan-suppress-next-line PhanTypeArraySuspiciousNullable + $targetMsg['content'] + ); + + $title = Title::makeTitle( + $groupNamespace, + TranslateUtils::title( $deletion['key'], $languageCode, $groupNamespace ) + ); + + $renameList[] = [ + 'key' => $deletion['key'], + 'content' => $deletion['content'], + 'similarity' => $similarity, + 'link' => $title->getFullURL(), + 'title' => $title->getPrefixedText() + ]; + } + + // sort them based on similarity + usort( $renameList, function ( $a, $b ) { + return -( $a['similarity'] <=> $b['similarity'] ); + } ); + + return $renameList; + } + + public function getAllowedParams() { + $params = parent::getAllowedParams(); + $params['groupId'] = [ + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_REQUIRED => true, + ]; + + $params['messageKey'] = [ + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_REQUIRED => true, + ]; + + $params['changesetName'] = [ + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_DFLT => MessageChangeStorage::DEFAULT_NAME + ]; + + return $params; + } + + protected function getExamplesMessages() { + return [ + 'action=query&meta=managemessagegroup&mmggroupId=hello + &mmgchangesetName=default&mmgmessageKey=world' => 'apihelp-query+managemessagegroups-example-1', + ]; + } +} diff --git a/MLEB/Translate/api/ApiQueryMessageCollection.php b/MLEB/Translate/api/ApiQueryMessageCollection.php index b1e6d055..68c0bb23 100644 --- a/MLEB/Translate/api/ApiQueryMessageCollection.php +++ b/MLEB/Translate/api/ApiQueryMessageCollection.php @@ -43,14 +43,14 @@ class ApiQueryMessageCollection extends ApiQueryGeneratorBase { $group = MessageGroups::getGroup( $params['group'] ); if ( !$group ) { - $this->dieWithError( [ 'apierror-missingparam', 'mcgroup' ] ); + $this->dieWithError( [ 'apierror-badparameter', 'mcgroup' ] ); } $languageCode = $params[ 'language' ]; $this->validateLanguageCode( $languageCode ); if ( $group->getSourceLanguage() === $languageCode ) { $name = Language::fetchLanguageName( $languageCode, $this->getLanguage()->getCode() ); - $this->dieWithError( [ 'apierror-translate-language-disabled-source', $name ] ); + $this->addWarning( [ 'apiwarn-translate-language-disabled-source', wfEscapeWikiText( $name ) ] ); } $languages = $group->getTranslatableLanguages(); if ( $languages !== null ) { @@ -78,6 +78,7 @@ class ApiQueryMessageCollection extends ApiQueryGeneratorBase { /** * @var RecentMessageGroup $group */ + // @phan-suppress-next-line PhanUndeclaredMethod $group->setLanguage( $params['language'] ); } @@ -135,10 +136,14 @@ class ApiQueryMessageCollection extends ApiQueryGeneratorBase { $props = array_flip( $params['prop'] ); /** @var Title $title */ - foreach ( $messages->keys() as $mkey => $title ) { - if ( is_null( $resultPageSet ) ) { + foreach ( $messages->keys() as $mkey => $titleValue ) { + $title = Title::newFromLinkTarget( $titleValue ); + + if ( $resultPageSet === null ) { $data = $this->extractMessageData( $result, $props, $messages[$mkey] ); $data['title'] = $title->getPrefixedText(); + $data['targetLanguage'] = $messages->getLanguage(); + $handle = new MessageHandle( $title ); if ( $handle->isValid() ) { @@ -151,7 +156,7 @@ class ApiQueryMessageCollection extends ApiQueryGeneratorBase { } } - if ( is_null( $resultPageSet ) ) { + if ( $resultPageSet === null ) { $result->addIndexedTagName( [ 'query', $this->getModuleName() ], 'message' @@ -164,11 +169,11 @@ class ApiQueryMessageCollection extends ApiQueryGeneratorBase { /** * @param ApiResult $result * @param array $props - * @param ThinMessage $message + * @param TMessage $message * @return array */ public function extractMessageData( $result, $props, $message ) { - $data['key'] = $message->key(); + $data = [ 'key' => $message->key() ]; if ( isset( $props['definition'] ) ) { $data['definition'] = $message->definition(); @@ -258,7 +263,7 @@ class ApiQueryMessageCollection extends ApiQueryGeneratorBase { ApiBase::PARAM_DFLT => 'definition|translation', ApiBase::PARAM_ISMULTI => true, ApiBase::PARAM_HELP_MSG => - [ 'apihelp-query+messagecollection-param-prop', '!!FUZZY!!' ], + [ 'apihelp-query+messagecollection-param-prop', TRANSLATE_FUZZY ], ], ]; } diff --git a/MLEB/Translate/api/ApiQueryMessageGroupStats.php b/MLEB/Translate/api/ApiQueryMessageGroupStats.php index 3f9ea6c4..274d0790 100644 --- a/MLEB/Translate/api/ApiQueryMessageGroupStats.php +++ b/MLEB/Translate/api/ApiQueryMessageGroupStats.php @@ -23,7 +23,7 @@ class ApiQueryMessageGroupStats extends ApiStatsQuery { protected function validateTargetParamater( array $params ) { $group = MessageGroups::getGroup( $params['group'] ); if ( !$group ) { - $this->dieWithError( [ 'apierror-missingparam', 'mgsgroup' ] ); + $this->dieWithError( [ 'apierror-badparameter', 'mgsgroup' ] ); } elseif ( MessageGroups::isDynamic( $group ) ) { $this->dieWithError( 'apierror-translate-nodynamicgroups', 'invalidparam' ); } diff --git a/MLEB/Translate/api/ApiQueryMessageGroups.php b/MLEB/Translate/api/ApiQueryMessageGroups.php index b916d3cb..20f1d13c 100644 --- a/MLEB/Translate/api/ApiQueryMessageGroups.php +++ b/MLEB/Translate/api/ApiQueryMessageGroups.php @@ -15,7 +15,6 @@ * @ingroup API TranslateAPI */ class ApiQueryMessageGroups extends ApiQueryBase { - public function __construct( $query, $moduleName ) { parent::__construct( $query, $moduleName, 'mg' ); } @@ -29,11 +28,12 @@ class ApiQueryMessageGroups extends ApiQueryBase { // Parameter root as all for all pages subgroups if ( $params['root'] === 'all' ) { $allGroups = MessageGroups::getAllGroups(); - foreach ( $allGroups as $group ) { + foreach ( $allGroups as $id => $group ) { if ( $group instanceof WikiPageMessageGroup ) { - $groups[] = $group; + $groups[$id] = $group; } } + TranslateMetadata::preloadGroups( array_keys( $groups ) ); } elseif ( $params['format'] === 'flat' ) { if ( $params['root'] !== '' ) { $group = MessageGroups::getGroup( $params['root'] ); @@ -42,22 +42,22 @@ class ApiQueryMessageGroups extends ApiQueryBase { } } else { $groups = MessageGroups::getAllGroups(); - // Not sorted by default, so do it now - // Work around php bug: https://bugs.php.net/bug.php?id=50688 - MediaWiki\suppressWarnings(); usort( $groups, [ 'MessageGroups', 'groupLabelSort' ] ); - MediaWiki\restoreWarnings(); } + TranslateMetadata::preloadGroups( array_keys( $groups ) ); } elseif ( $params['root'] !== '' ) { // format=tree from now on, as it is the only other valid option $group = MessageGroups::getGroup( $params['root'] ); if ( $group instanceof AggregateMessageGroup ) { - $groups = MessageGroups::subGroups( $group ); + $childIds = []; + $groups = MessageGroups::subGroups( $group, $childIds ); // The parent group is the first, ignore it array_shift( $groups ); + TranslateMetadata::preloadGroups( $childIds ); } } else { $groups = MessageGroups::getGroupStructure(); + TranslateMetadata::preloadGroups( array_keys( MessageGroups::getAllGroups() ) ); } if ( $params['root'] === '' ) { @@ -68,6 +68,7 @@ class ApiQueryMessageGroups extends ApiQueryBase { // Have dynamic groups appear first in the list $groups = $dynamicGroups + $groups; } + '@phan-var (MessageGroup|array)[] $groups'; // Do not list the sandbox group. The code that knows it // exists can access it directly. @@ -80,10 +81,12 @@ class ApiQueryMessageGroups extends ApiQueryBase { $result = $this->getResult(); $matcher = new StringMatcher( '', $filter ); /** - * @var MessageGroup $mixed + * @var MessageGroup|array $mixed */ foreach ( $groups as $mixed ) { - if ( $filter !== [] && !$matcher->match( $mixed->getId() ) ) { + // array when Format = tree + $group = is_array( $mixed ) ? reset( $mixed ) : $mixed; + if ( $filter !== [] && !$matcher->match( $group->getId() ) ) { continue; } @@ -195,6 +198,7 @@ class ApiQueryMessageGroups extends ApiQueryBase { $a['groups'][] = $this->formatGroup( $sg, $props ); } $result = $this->getResult(); + // @phan-suppress-next-line PhanTypePossiblyInvalidDimOffset $result->setIndexedTagName( $a['groups'], 'group' ); } @@ -277,31 +281,27 @@ class ApiQueryMessageGroups extends ApiQueryBase { } /** - * Returns array of key value pairs of properties and their descriptions + * Returns an array of properties and their descriptions. Descriptions are ignored. + * + * Descriptions come from apihelp-query+messagegroups-param-prop and that is not + * extensible. * * @return array */ protected static function getPropertyList() { - $properties = [ - 'id' => ' id - Include id of the group', - 'label' => ' label - Include label of the group', - 'description' => ' description - Include description of the group', - 'class' => ' class - Include class name of the group', - 'namespace' => - ' namespace - Include namespace of the group. Not all groups belong ' . - 'to a single namespace.', - 'exists' => - ' exists - Include self-calculated existence property of the group', - 'icon' => ' icon - Include urls to icon of the group', - 'priority' => ' priority - Include priority status like discouraged', - 'prioritylangs' => - ' prioritylangs - Include preferred languages. If not set, this returns false', - 'priorityforce' => - ' priorityforce - Include priority status - is the priority languages ' . - 'setting forced', - 'workflowstates' => - ' workflowstates - Include the workflow states for the message group', - ]; + $properties = array_flip( [ + 'id', + 'label', + 'description', + 'class', + 'namespace', + 'exists', + 'icon', + 'priority', + 'prioritylangs', + 'priorityforce', + 'workflowstates', + ] ); Hooks::run( 'TranslateGetAPIMessageGroupsPropertyDescs', [ &$properties ] ); @@ -310,8 +310,7 @@ class ApiQueryMessageGroups extends ApiQueryBase { protected function getExamplesMessages() { return [ - 'action=query&meta=messagegroups' - => 'apihelp-query+messagegroups-example-1', + 'action=query&meta=messagegroups' => 'apihelp-query+messagegroups-example-1', ]; } } diff --git a/MLEB/Translate/api/ApiQueryTranslationAids.php b/MLEB/Translate/api/ApiQueryTranslationAids.php deleted file mode 100644 index 67560df1..00000000 --- a/MLEB/Translate/api/ApiQueryTranslationAids.php +++ /dev/null @@ -1,132 +0,0 @@ -extractRequestParams(); - - $title = Title::newFromText( $params['title'] ); - if ( !$title ) { - $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $params['title'] ) ] ); - } - - $handle = new MessageHandle( $title ); - if ( !$handle->isValid() ) { - $this->dieWithError( 'apierror-translate-nomessagefortitle', 'nomessagefortitle' ); - } - - if ( (string)$params['group'] !== '' ) { - $group = MessageGroups::getGroup( $params['group'] ); - } else { - $group = $handle->getGroup(); - } - - if ( !$group ) { - $this->dieWithError( 'apierror-translate-invalidgroup', 'invalidgroup' ); - } - - $data = []; - $times = []; - - $props = $params['prop']; - $aggregator = new QueryAggregator(); - - // Figure out the intersection of supported and requested aids - $types = $group->getTranslationAids(); - $props = array_intersect( $props, array_keys( $types ) ); - - $result = $this->getResult(); - - // Create list of aids, populate web services queries - $aids = []; - - $dataProvider = new TranslationAidDataProvider( $handle ); - foreach ( $props as $type ) { - // Do not proceed if translation aid is not supported for this message group - if ( !isset( $types[$type] ) ) { - $types[$type] = 'UnsupportedTranslationAid'; - } - - $class = $types[$type]; - $obj = new $class( $group, $handle, $this, $dataProvider ); - - if ( $obj instanceof QueryAggregatorAware ) { - $obj->setQueryAggregator( $aggregator ); - try { - $obj->populateQueries(); - } catch ( TranslationHelperException $e ) { - $data[$type] = [ 'error' => $e->getMessage() ]; - // Prevent processing this aids and thus overwriting our error - continue; - } - } - - $aids[$type] = $obj; - } - - // Execute all web service queries asynchronously to save time - $start = microtime( true ); - $aggregator->run(); - $times['query_aggregator'] = round( microtime( true ) - $start, 3 ); - - // Construct the result data structure - foreach ( $aids as $type => $obj ) { - $start = microtime( true ); - - try { - $aid = $obj->getData(); - } catch ( TranslationHelperException $e ) { - $aid = [ 'error' => $e->getMessage() ]; - } - - if ( isset( $aid['**'] ) ) { - $result->setIndexedTagName( $aid, $aid['**'] ); - unset( $aid['**'] ); - } - - $data[$type] = $aid; - $times[$type] = round( microtime( true ) - $start, 3 ); - } - - $result->addValue( null, 'helpers', $data ); - $result->addValue( null, 'times', $times ); - } - - public function getAllowedParams() { - $props = array_keys( TranslationAid::getTypes() ); - Hooks::run( 'TranslateTranslationAids', [ &$props ] ); - - return [ - 'title' => [ - ApiBase::PARAM_TYPE => 'string', - ApiBase::PARAM_REQUIRED => true, - ], - 'group' => [ - ApiBase::PARAM_TYPE => 'string', - ], - 'prop' => [ - ApiBase::PARAM_DFLT => implode( '|', $props ), - ApiBase::PARAM_TYPE => $props, - ApiBase::PARAM_ISMULTI => true, - ], - ]; - } - - protected function getExamplesMessages() { - return [ - 'action=translationaids&title=MediaWiki:January/fi' - => 'apihelp-translationaids-example-1', - ]; - } -} diff --git a/MLEB/Translate/api/ApiSearchTranslations.php b/MLEB/Translate/api/ApiSearchTranslations.php index d2787a0c..85e215ac 100644 --- a/MLEB/Translate/api/ApiSearchTranslations.php +++ b/MLEB/Translate/api/ApiSearchTranslations.php @@ -17,6 +17,7 @@ class ApiSearchTranslations extends ApiBase { $config = $wgTranslateTranslationServices[$params['service']]; /** @var SearchableTTMServer $server */ $server = TTMServer::factory( $config ); + '@phan-var SearchableTTMServer $server'; $result = $this->getResult(); diff --git a/MLEB/Translate/api/ApiStatsQuery.php b/MLEB/Translate/api/ApiStatsQuery.php index 3dbb4ede..51244e0e 100644 --- a/MLEB/Translate/api/ApiStatsQuery.php +++ b/MLEB/Translate/api/ApiStatsQuery.php @@ -32,7 +32,7 @@ abstract class ApiStatsQuery extends ApiQueryBase { * @param int $flags See MessageGroupStats for possible flags * @return array[] */ - abstract protected function loadStatistics( $target, $flags ); + abstract protected function loadStatistics( $target, $flags = 0 ); public function execute() { $params = $this->extractRequestParams(); diff --git a/MLEB/Translate/api/ApiTTMServer.php b/MLEB/Translate/api/ApiTTMServer.php index bedc0270..62b7d002 100644 --- a/MLEB/Translate/api/ApiTTMServer.php +++ b/MLEB/Translate/api/ApiTTMServer.php @@ -26,6 +26,7 @@ class ApiTTMServer extends ApiBase { $config = $wgTranslateTranslationServices[$params['service']]; $server = TTMServer::factory( $config ); + '@phan-var ReadableTTMServer $server'; $suggestions = $server->query( $params['sourcelanguage'], @@ -48,7 +49,8 @@ class ApiTTMServer extends ApiBase { $good = []; foreach ( $wgTranslateTranslationServices as $id => $config ) { - if ( isset( $config['public'] ) && $config['public'] === true ) { + $public = $config['public'] ?? false; + if ( $config['type'] === 'ttmserver' && $public ) { $good[] = $id; } } diff --git a/MLEB/Translate/api/ApiTranslateSandbox.php b/MLEB/Translate/api/ApiTranslateSandbox.php index 3aed7170..a4046605 100644 --- a/MLEB/Translate/api/ApiTranslateSandbox.php +++ b/MLEB/Translate/api/ApiTranslateSandbox.php @@ -32,6 +32,8 @@ class ApiTranslateSandbox extends ApiBase { case 'remind': $this->doRemind(); break; + default: + $this->dieWithError( [ 'apierror-badparameter', 'do' ] ); } } @@ -159,27 +161,23 @@ class ApiTranslateSandbox extends ApiBase { * preferences. * * @param User $user - * @return Status|bool False when a user page already existed, or the Status - * of the user page creation from WikiPage::doEditContent(). */ - protected function createUserPage( User $user ) { + private function createUserPage( User $user ) { $userpage = $user->getUserPage(); if ( $userpage->exists() ) { - return false; + return; } - $languagePrefs = FormatJson::decode( $user->getOption( 'translate-sandbox' ) ); - $languages = implode( '|', $languagePrefs->languages ); + $languagePrefs = FormatJson::decode( $user->getOption( 'translate-sandbox' ), true ); + $languages = implode( '|', $languagePrefs[ 'languages' ] ?? [] ); $babeltext = "{{#babel:$languages}}"; $summary = $this->msg( 'tsb-create-user-page' )->inContentLanguage()->text(); $page = WikiPage::factory( $userpage ); $content = ContentHandler::makeContent( $babeltext, $userpage ); - $editResult = $page->doEditContent( $content, $summary, EDIT_NEW, false, $user ); - - return $editResult; + $page->doEditContent( $content, $summary, EDIT_NEW, false, $user ); } public function isWriteMode() { diff --git a/MLEB/Translate/api/ApiTranslationAids.php b/MLEB/Translate/api/ApiTranslationAids.php new file mode 100644 index 00000000..67560df1 --- /dev/null +++ b/MLEB/Translate/api/ApiTranslationAids.php @@ -0,0 +1,132 @@ +extractRequestParams(); + + $title = Title::newFromText( $params['title'] ); + if ( !$title ) { + $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $params['title'] ) ] ); + } + + $handle = new MessageHandle( $title ); + if ( !$handle->isValid() ) { + $this->dieWithError( 'apierror-translate-nomessagefortitle', 'nomessagefortitle' ); + } + + if ( (string)$params['group'] !== '' ) { + $group = MessageGroups::getGroup( $params['group'] ); + } else { + $group = $handle->getGroup(); + } + + if ( !$group ) { + $this->dieWithError( 'apierror-translate-invalidgroup', 'invalidgroup' ); + } + + $data = []; + $times = []; + + $props = $params['prop']; + $aggregator = new QueryAggregator(); + + // Figure out the intersection of supported and requested aids + $types = $group->getTranslationAids(); + $props = array_intersect( $props, array_keys( $types ) ); + + $result = $this->getResult(); + + // Create list of aids, populate web services queries + $aids = []; + + $dataProvider = new TranslationAidDataProvider( $handle ); + foreach ( $props as $type ) { + // Do not proceed if translation aid is not supported for this message group + if ( !isset( $types[$type] ) ) { + $types[$type] = 'UnsupportedTranslationAid'; + } + + $class = $types[$type]; + $obj = new $class( $group, $handle, $this, $dataProvider ); + + if ( $obj instanceof QueryAggregatorAware ) { + $obj->setQueryAggregator( $aggregator ); + try { + $obj->populateQueries(); + } catch ( TranslationHelperException $e ) { + $data[$type] = [ 'error' => $e->getMessage() ]; + // Prevent processing this aids and thus overwriting our error + continue; + } + } + + $aids[$type] = $obj; + } + + // Execute all web service queries asynchronously to save time + $start = microtime( true ); + $aggregator->run(); + $times['query_aggregator'] = round( microtime( true ) - $start, 3 ); + + // Construct the result data structure + foreach ( $aids as $type => $obj ) { + $start = microtime( true ); + + try { + $aid = $obj->getData(); + } catch ( TranslationHelperException $e ) { + $aid = [ 'error' => $e->getMessage() ]; + } + + if ( isset( $aid['**'] ) ) { + $result->setIndexedTagName( $aid, $aid['**'] ); + unset( $aid['**'] ); + } + + $data[$type] = $aid; + $times[$type] = round( microtime( true ) - $start, 3 ); + } + + $result->addValue( null, 'helpers', $data ); + $result->addValue( null, 'times', $times ); + } + + public function getAllowedParams() { + $props = array_keys( TranslationAid::getTypes() ); + Hooks::run( 'TranslateTranslationAids', [ &$props ] ); + + return [ + 'title' => [ + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_REQUIRED => true, + ], + 'group' => [ + ApiBase::PARAM_TYPE => 'string', + ], + 'prop' => [ + ApiBase::PARAM_DFLT => implode( '|', $props ), + ApiBase::PARAM_TYPE => $props, + ApiBase::PARAM_ISMULTI => true, + ], + ]; + } + + protected function getExamplesMessages() { + return [ + 'action=translationaids&title=MediaWiki:January/fi' + => 'apihelp-translationaids-example-1', + ]; + } +} diff --git a/MLEB/Translate/api/ApiTranslationCheck.php b/MLEB/Translate/api/ApiTranslationCheck.php index b4921b4b..656cb85f 100644 --- a/MLEB/Translate/api/ApiTranslationCheck.php +++ b/MLEB/Translate/api/ApiTranslationCheck.php @@ -1,4 +1,5 @@ getWarnings( $handle, $translation ); + $validationResult = $this->validateTranslation( $handle, $translation ); - $warnings = []; - foreach ( $checkResults as $item ) { - $key = array_shift( $item ); - $msg = $this->getContext()->msg( $key, $item )->parse(); - $this->getResult()->addValue( 'warnings', null, $msg ); + $validationOutput = [ 'errors' => [], 'warnings' => [] ]; + if ( $validationResult ) { + $validationOutput['errors'] = + $validationResult->getDescriptiveErrors( $this->getContext() ); + $validationOutput['warnings'] = + $validationResult->getDescriptiveWarnings( $this->getContext() ); } - } - public function getWarnings( MessageHandle $handle, $translation ) { - if ( $translation === '' ) { - return []; - } + $this->getResult()->addValue( null, 'validation', $validationOutput ); + } + private function validateTranslation( MessageHandle $handle, $translation ) { if ( $handle->isDoc() || !$handle->isValid() ) { - return []; + return null; } - $checker = $handle->getGroup()->getChecker(); - if ( !$checker ) { - return []; + $messageValidator = $handle->getGroup()->getValidator(); + if ( !$messageValidator ) { + return null; } $definition = $this->getDefinition( $handle ); $message = new FatMessage( $handle->getKey(), $definition ); $message->setTranslation( $translation ); - $checks = $checker->checkMessage( $message, $handle->getCode() ); - if ( $checks === [] ) { - return []; - } + $validationResult = $messageValidator->validateMessage( $message, $handle->getCode() ); - return $checks; + return $validationResult; } private function getDefinition( MessageHandle $handle ) { $group = $handle->getGroup(); - if ( method_exists( $group, 'getMessageContent' ) ) { + if ( is_callable( [ $group, 'getMessageContent' ] ) ) { + // @phan-suppress-next-line PhanUndeclaredMethod return $group->getMessageContent( $handle ); } else { return $group->getMessage( $handle->getKey(), $group->getSourceLanguage() ); diff --git a/MLEB/Translate/api/ApiTranslationReview.php b/MLEB/Translate/api/ApiTranslationReview.php index d8fb8045..d7d51ebe 100644 --- a/MLEB/Translate/api/ApiTranslationReview.php +++ b/MLEB/Translate/api/ApiTranslationReview.php @@ -6,6 +6,9 @@ * @license GPL-2.0-or-later */ +use MediaWiki\MediaWikiServices; +use MediaWiki\Revision\RevisionRecord; + /** * API module for marking translations as reviewed * @@ -19,12 +22,14 @@ class ApiTranslationReview extends ApiBase { $params = $this->extractRequestParams(); - $revision = Revision::newFromId( $params['revision'] ); - if ( !$revision ) { + $revRecord = MediaWikiServices::getInstance() + ->getRevisionLookup() + ->getRevisionById( $params['revision'] ); + if ( !$revRecord ) { $this->dieWithError( [ 'apierror-nosuchrevid', $params['revision'] ], 'invalidrevision' ); } - $error = self::getReviewBlockers( $this->getUser(), $revision ); + $error = self::getReviewBlockers( $this->getUser(), $revRecord ); switch ( $error ) { case '': // Everything is okay @@ -48,15 +53,18 @@ class ApiTranslationReview extends ApiBase { $this->dieWithError( [ 'apierror-unknownerror', $error ], $error ); } - $ok = self::doReview( $this->getUser(), $revision ); + $ok = self::doReview( $this->getUser(), $revRecord ); if ( !$ok ) { $this->addWarning( 'apiwarn-translate-alreadyreviewedbyyou' ); } + $prefixedText = MediaWikiServices::getInstance() + ->getTitleFormatter() + ->getPrefixedText( $revRecord->getPageAsLinkTarget() ); $output = [ 'review' => [ - 'title' => $revision->getTitle()->getPrefixedText(), - 'pageid' => $revision->getPage(), - 'revision' => $revision->getId() + 'title' => $prefixedText, + 'pageid' => $revRecord->getPageId(), + 'revision' => $revRecord->getId() ] ]; $this->getResult()->addValue( null, $this->getModuleName(), $output ); @@ -65,17 +73,17 @@ class ApiTranslationReview extends ApiBase { /** * Executes the real stuff. No checks done! * @param User $user - * @param Revision $revision + * @param RevisionRecord $revRecord * @param null|string $comment * @return bool whether the action was recorded. */ - public static function doReview( User $user, Revision $revision, $comment = null ) { + public static function doReview( User $user, RevisionRecord $revRecord, $comment = null ) { $dbw = wfGetDB( DB_MASTER ); $table = 'translate_reviews'; $row = [ 'trr_user' => $user->getId(), - 'trr_page' => $revision->getPage(), - 'trr_revision' => $revision->getId(), + 'trr_page' => $revRecord->getPageId(), + 'trr_revision' => $revRecord->getId(), ]; $options = [ 'IGNORE' ]; $dbw->insert( $table, $row, __METHOD__, $options ); @@ -84,14 +92,14 @@ class ApiTranslationReview extends ApiBase { return false; } - $title = $revision->getTitle(); + $title = $revRecord->getPageAsLinkTarget(); $entry = new ManualLogEntry( 'translationreview', 'message' ); $entry->setPerformer( $user ); $entry->setTarget( $title ); $entry->setComment( $comment ); $entry->setParameters( [ - '4::revision' => $revision->getId(), + '4::revision' => $revRecord->getId(), ] ); $logid = $entry->insert(); @@ -106,11 +114,11 @@ class ApiTranslationReview extends ApiBase { /** * Validates review action by checking permissions and other things. * @param User $user - * @param Revision $revision + * @param RevisionRecord $revRecord * @return string Error key or empty string if review is allowed. * @since 2012-09-24 */ - public static function getReviewBlockers( User $user, Revision $revision ) { + public static function getReviewBlockers( User $user, RevisionRecord $revRecord ) { if ( !$user->isAllowed( self::$right ) ) { return 'permissiondenied'; } @@ -119,13 +127,13 @@ class ApiTranslationReview extends ApiBase { return 'blocked'; } - $title = $revision->getTitle(); + $title = $revRecord->getPageAsLinkTarget(); $handle = new MessageHandle( $title ); if ( !$handle->isValid() ) { return 'unknownmessage'; } - if ( $revision->getUser() === $user->getId() ) { + if ( $user->equals( $revRecord->getUser() ) ) { return 'owntranslation'; } diff --git a/MLEB/Translate/api/ApiTranslationStash.php b/MLEB/Translate/api/ApiTranslationStash.php index dad11719..91d176a9 100644 --- a/MLEB/Translate/api/ApiTranslationStash.php +++ b/MLEB/Translate/api/ApiTranslationStash.php @@ -51,6 +51,7 @@ class ApiTranslationStash extends ApiBase { $stash->addTranslation( $translation ); } + $output = []; if ( $action === 'query' ) { $output['translations'] = []; diff --git a/MLEB/Translate/composer.json b/MLEB/Translate/composer.json index 82f49cc7..243054d2 100644 --- a/MLEB/Translate/composer.json +++ b/MLEB/Translate/composer.json @@ -24,7 +24,22 @@ { "name": "Siebrand Mazeland", "email": "siebrand@kitano.nl", - "role": "Developer" + "role": "Ex-maintainer, ex-product manager" + }, + { + "name": "Santhosh Thottingal", + "email": "santhosh.thottingal@gmail.com", + "role": "Ex-developer" + }, + { + "name": "Amir E. Aharoni", + "email": "amir.aharoni@mail.huji.ac.il", + "role": "Ex-developer" + }, + { + "name": "Abijeet Patro", + "email": "abijeetpatro@gmail.com", + "role": "Maintainer" } ], "support": { @@ -34,17 +49,17 @@ "wiki": "https://www.mediawiki.org/wiki/Extension:Translate" }, "require": { - "php": ">=5.4", + "php": ">=7.2", "composer/installers": ">=1.0.1", - "mediawiki/universal-language-selector": "*", - "mustangostang/spyc": "0.6.2", + "mustangostang/spyc": "^0.6.3", "davefx/phplot": "6.2.1" }, "require-dev": { - "jakub-onderka/php-parallel-lint": "1.0.0", - "mediawiki/mediawiki-codesniffer": "19.1.0", - "jakub-onderka/php-console-highlighter": "0.3.2", - "mediawiki/minus-x": "0.3.1" + "mediawiki/mediawiki-codesniffer": "31.0.0", + "mediawiki/mediawiki-phan-config": "0.10.2", + "mediawiki/minus-x": "1.1.0", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0" }, "suggest": { "mediawiki/babel": "Users can easily indicate their language proficiency on their user page", @@ -53,16 +68,17 @@ }, "scripts": { "fix": [ - "phpcbf", - "minus-x fix ." + "minus-x fix .", + "phpcbf" ], "test": [ - "parallel-lint . --exclude vendor --exclude node_modules --exclude extensions", + "parallel-lint . --exclude vendor --exclude node_modules", "phpcs -p -s", "minus-x check ." + ], + "quicktest": [ + "parallel-lint . --exclude vendor --exclude node_modules --no-progress", + "phpcs -p -s --cache" ] - }, - "extra": { - "phan-taint-check-plugin": "1.5.0" } } diff --git a/MLEB/Translate/data/group-yaml-schema.yaml b/MLEB/Translate/data/group-yaml-schema.yaml index 445a7ab9..f6d26a64 100644 --- a/MLEB/Translate/data/group-yaml-schema.yaml +++ b/MLEB/Translate/data/group-yaml-schema.yaml @@ -1,3 +1,4 @@ +# HOW-TO: https://github.com/romaricdrigon/MetaYaml#how-to-write-a-schema root: _type: array _children: @@ -39,25 +40,65 @@ root: class: _type: text _not_empty: true - CHECKER: - _type: array - _children: - class: - _type: text - _not_empty: true - checks: - _type: prototype - _prototype: - _type: text INSERTABLES: - _type: array - _children: - class: # for supplying one class - _type: text - classes: # for supplying multiple + _type: choice + _choices: + 1: _type: prototype _prototype: + _type: array + _children: + class: + _type: text + params: + _type: choice + _choices: + 1: + _type: array + _children: [] + _ignore_extra_keys: true + 2: + _type: text + 2: + _type: array + _children: + class: # for supplying one class + _type: text + classes: # for supplying multiple + _type: prototype + _prototype: + _type: text + VALIDATORS: + _type: prototype + _prototype: + _type: array + _children: + id: + _type: text + _not_empty: true + _description: ID of a pre-defined validator. Required if "class" is not specified + class: _type: text + _not_empty: true + _description: Custom validator class. Required if "id" is not specified + enforce: + _type: boolean + insertable: + _type: boolean + params: + _type: choice + _choices: + 1: + _type: array + _children: [] + _ignore_extra_keys: true + 2: + _type: text + keymatch: + _type: array + _description: Specify the message keys for which this validation should be run + _children: [] + _ignore_extra_keys: true TAGS: _type: prototype _prototype: diff --git a/MLEB/Translate/data/plural-cldr.json b/MLEB/Translate/data/plural-cldr.json new file mode 100644 index 00000000..72d31343 --- /dev/null +++ b/MLEB/Translate/data/plural-cldr.json @@ -0,0 +1,884 @@ +{ + "supplemental": { + "version": { + "_number": "$Revision: 14885 $", + "_unicodeVersion": "12.1.0", + "_cldrVersion": "35.1" + }, + "plurals-type-cardinal": { + "af": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ak": { + "pluralRule-count-one": "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "am": { + "pluralRule-count-one": "i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ar": { + "pluralRule-count-zero": "n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000", + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-few": "n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …", + "pluralRule-count-many": "n % 100 = 11..99 @integer 11~26, 111, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …", + "pluralRule-count-other": " @integer 100~102, 200~202, 300~302, 400~402, 500~502, 600, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ars": { + "pluralRule-count-zero": "n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000", + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-few": "n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …", + "pluralRule-count-many": "n % 100 = 11..99 @integer 11~26, 111, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …", + "pluralRule-count-other": " @integer 100~102, 200~202, 300~302, 400~402, 500~502, 600, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "as": { + "pluralRule-count-one": "i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "asa": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ast": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "az": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "be": { + "pluralRule-count-one": "n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …", + "pluralRule-count-few": "n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …", + "pluralRule-count-many": "n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-other": " @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …" + }, + "bem": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "bez": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "bg": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "bh": { + "pluralRule-count-one": "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "bm": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "bn": { + "pluralRule-count-one": "i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "bo": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "br": { + "pluralRule-count-one": "n % 10 = 1 and n % 100 != 11,71,91 @integer 1, 21, 31, 41, 51, 61, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 81.0, 101.0, 1001.0, …", + "pluralRule-count-two": "n % 10 = 2 and n % 100 != 12,72,92 @integer 2, 22, 32, 42, 52, 62, 82, 102, 1002, … @decimal 2.0, 22.0, 32.0, 42.0, 52.0, 62.0, 82.0, 102.0, 1002.0, …", + "pluralRule-count-few": "n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99 @integer 3, 4, 9, 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 1003, … @decimal 3.0, 4.0, 9.0, 23.0, 24.0, 29.0, 33.0, 34.0, 103.0, 1003.0, …", + "pluralRule-count-many": "n != 0 and n % 1000000 = 0 @integer 1000000, … @decimal 1000000.0, 1000000.00, 1000000.000, …", + "pluralRule-count-other": " @integer 0, 5~8, 10~20, 100, 1000, 10000, 100000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, …" + }, + "brx": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "bs": { + "pluralRule-count-one": "v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …", + "pluralRule-count-few": "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …", + "pluralRule-count-other": " @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ca": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ce": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ceb": { + "pluralRule-count-one": "v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9 @integer 0~3, 5, 7, 8, 10~13, 15, 17, 18, 20, 21, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.3, 0.5, 0.7, 0.8, 1.0~1.3, 1.5, 1.7, 1.8, 2.0, 2.1, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-other": " @integer 4, 6, 9, 14, 16, 19, 24, 26, 104, 1004, … @decimal 0.4, 0.6, 0.9, 1.4, 1.6, 1.9, 2.4, 2.6, 10.4, 100.4, 1000.4, …" + }, + "cgg": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "chr": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ckb": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "cs": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-few": "i = 2..4 and v = 0 @integer 2~4", + "pluralRule-count-many": "v != 0 @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-other": " @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …" + }, + "cy": { + "pluralRule-count-zero": "n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000", + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-few": "n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000", + "pluralRule-count-many": "n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000", + "pluralRule-count-other": " @integer 4, 5, 7~20, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "da": { + "pluralRule-count-one": "n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "de": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "dsb": { + "pluralRule-count-one": "v = 0 and i % 100 = 1 or f % 100 = 1 @integer 1, 101, 201, 301, 401, 501, 601, 701, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …", + "pluralRule-count-two": "v = 0 and i % 100 = 2 or f % 100 = 2 @integer 2, 102, 202, 302, 402, 502, 602, 702, 1002, … @decimal 0.2, 1.2, 2.2, 3.2, 4.2, 5.2, 6.2, 7.2, 10.2, 100.2, 1000.2, …", + "pluralRule-count-few": "v = 0 and i % 100 = 3..4 or f % 100 = 3..4 @integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal 0.3, 0.4, 1.3, 1.4, 2.3, 2.4, 3.3, 3.4, 4.3, 4.4, 5.3, 5.4, 6.3, 6.4, 7.3, 7.4, 10.3, 100.3, 1000.3, …", + "pluralRule-count-other": " @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "dv": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "dz": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ee": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "el": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "en": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "eo": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "es": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "et": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "eu": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "fa": { + "pluralRule-count-one": "i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ff": { + "pluralRule-count-one": "i = 0,1 @integer 0, 1 @decimal 0.0~1.5", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "fi": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "fil": { + "pluralRule-count-one": "v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9 @integer 0~3, 5, 7, 8, 10~13, 15, 17, 18, 20, 21, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.3, 0.5, 0.7, 0.8, 1.0~1.3, 1.5, 1.7, 1.8, 2.0, 2.1, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-other": " @integer 4, 6, 9, 14, 16, 19, 24, 26, 104, 1004, … @decimal 0.4, 0.6, 0.9, 1.4, 1.6, 1.9, 2.4, 2.6, 10.4, 100.4, 1000.4, …" + }, + "fo": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "fr": { + "pluralRule-count-one": "i = 0,1 @integer 0, 1 @decimal 0.0~1.5", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "fur": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "fy": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ga": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-few": "n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 5.0, 6.0, 3.00, 4.00, 5.00, 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 5.0000, 6.0000", + "pluralRule-count-many": "n = 7..10 @integer 7~10 @decimal 7.0, 8.0, 9.0, 10.0, 7.00, 8.00, 9.00, 10.00, 7.000, 8.000, 9.000, 10.000, 7.0000, 8.0000, 9.0000, 10.0000", + "pluralRule-count-other": " @integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "gd": { + "pluralRule-count-one": "n = 1,11 @integer 1, 11 @decimal 1.0, 11.0, 1.00, 11.00, 1.000, 11.000, 1.0000", + "pluralRule-count-two": "n = 2,12 @integer 2, 12 @decimal 2.0, 12.0, 2.00, 12.00, 2.000, 12.000, 2.0000", + "pluralRule-count-few": "n = 3..10,13..19 @integer 3~10, 13~19 @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 3.00", + "pluralRule-count-other": " @integer 0, 20~34, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "gl": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "gsw": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "gu": { + "pluralRule-count-one": "i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "guw": { + "pluralRule-count-one": "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "gv": { + "pluralRule-count-one": "v = 0 and i % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, …", + "pluralRule-count-two": "v = 0 and i % 10 = 2 @integer 2, 12, 22, 32, 42, 52, 62, 72, 102, 1002, …", + "pluralRule-count-few": "v = 0 and i % 100 = 0,20,40,60,80 @integer 0, 20, 40, 60, 80, 100, 120, 140, 1000, 10000, 100000, 1000000, …", + "pluralRule-count-many": "v != 0 @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-other": " @integer 3~10, 13~19, 23, 103, 1003, …" + }, + "ha": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "haw": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "he": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-two": "i = 2 and v = 0 @integer 2", + "pluralRule-count-many": "v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000, 100000, 1000000, …", + "pluralRule-count-other": " @integer 0, 3~17, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "hi": { + "pluralRule-count-one": "i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "hr": { + "pluralRule-count-one": "v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …", + "pluralRule-count-few": "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …", + "pluralRule-count-other": " @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "hsb": { + "pluralRule-count-one": "v = 0 and i % 100 = 1 or f % 100 = 1 @integer 1, 101, 201, 301, 401, 501, 601, 701, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …", + "pluralRule-count-two": "v = 0 and i % 100 = 2 or f % 100 = 2 @integer 2, 102, 202, 302, 402, 502, 602, 702, 1002, … @decimal 0.2, 1.2, 2.2, 3.2, 4.2, 5.2, 6.2, 7.2, 10.2, 100.2, 1000.2, …", + "pluralRule-count-few": "v = 0 and i % 100 = 3..4 or f % 100 = 3..4 @integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal 0.3, 0.4, 1.3, 1.4, 2.3, 2.4, 3.3, 3.4, 4.3, 4.4, 5.3, 5.4, 6.3, 6.4, 7.3, 7.4, 10.3, 100.3, 1000.3, …", + "pluralRule-count-other": " @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "hu": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "hy": { + "pluralRule-count-one": "i = 0,1 @integer 0, 1 @decimal 0.0~1.5", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ia": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "id": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ig": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ii": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "in": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "io": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "is": { + "pluralRule-count-one": "t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1~1.6, 10.1, 100.1, 1000.1, …", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "it": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "iu": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-other": " @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "iw": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-two": "i = 2 and v = 0 @integer 2", + "pluralRule-count-many": "v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000, 100000, 1000000, …", + "pluralRule-count-other": " @integer 0, 3~17, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ja": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "jbo": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "jgo": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ji": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "jmc": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "jv": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "jw": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ka": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "kab": { + "pluralRule-count-one": "i = 0,1 @integer 0, 1 @decimal 0.0~1.5", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "kaj": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "kcg": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "kde": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "kea": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "kk": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "kkj": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "kl": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "km": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "kn": { + "pluralRule-count-one": "i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ko": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ks": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ksb": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ksh": { + "pluralRule-count-zero": "n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000", + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ku": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "kw": { + "pluralRule-count-zero": "n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000", + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n % 100 = 2,22,42,62,82 or n%1000 = 0 and n%100000=1000..20000,40000,60000,80000 or n!=0 and n%1000000=100000@integer 2, 22, 42, 62, 82, 102, 122, 142, 1002, … @decimal 2.0, 22.0, 42.0, 62.0, 82.0, 102.0, 122.0, 142.0, 1002.0, …", + "pluralRule-count-few": "n % 100 = 3,23,43,63,83 @integer 3, 23, 43, 63, 83, 103, 123, 143, 1003, … @decimal 3.0, 23.0, 43.0, 63.0, 83.0, 103.0, 123.0, 143.0, 1003.0, …", + "pluralRule-count-many": "n != 1 and n % 100 = 1,21,41,61,81 @integer 21, 41, 61, 81, 101, 121, 141, 161, 1001, … @decimal 21.0, 41.0, 61.0, 81.0, 101.0, 121.0, 141.0, 161.0, 1001.0, …", + "pluralRule-count-other": " @integer 4~19, 100, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ky": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "lag": { + "pluralRule-count-zero": "n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000", + "pluralRule-count-one": "i = 0,1 and n != 0 @integer 1 @decimal 0.1~1.6", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "lb": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "lg": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "lkt": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ln": { + "pluralRule-count-one": "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "lo": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "lt": { + "pluralRule-count-one": "n % 10 = 1 and n % 100 != 11..19 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …", + "pluralRule-count-few": "n % 10 = 2..9 and n % 100 != 11..19 @integer 2~9, 22~29, 102, 1002, … @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 22.0, 102.0, 1002.0, …", + "pluralRule-count-many": "f != 0 @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …", + "pluralRule-count-other": " @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "lv": { + "pluralRule-count-zero": "n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-one": "n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.0, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …", + "pluralRule-count-other": " @integer 2~9, 22~29, 102, 1002, … @decimal 0.2~0.9, 1.2~1.9, 10.2, 100.2, 1000.2, …" + }, + "mas": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "mg": { + "pluralRule-count-one": "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "mgo": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "mk": { + "pluralRule-count-one": "v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.0, 1.2~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ml": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "mn": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "mo": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-few": "v != 0 or n = 0 or n % 100 = 2..19 @integer 0, 2~16, 102, 1002, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-other": " @integer 20~35, 100, 1000, 10000, 100000, 1000000, …" + }, + "mr": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ms": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "mt": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-few": "n = 0 or n % 100 = 2..10 @integer 0, 2~10, 102~107, 1002, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 1002.0, …", + "pluralRule-count-many": "n % 100 = 11..19 @integer 11~19, 111~117, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …", + "pluralRule-count-other": " @integer 20~35, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "my": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "nah": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "naq": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-other": " @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "nb": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "nd": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ne": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "nl": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "nn": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "nnh": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "no": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "nqo": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "nr": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "nso": { + "pluralRule-count-one": "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ny": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "nyn": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "om": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "or": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "os": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "pa": { + "pluralRule-count-one": "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "pap": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "pl": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-few": "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …", + "pluralRule-count-many": "v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …", + "pluralRule-count-other": " @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "prg": { + "pluralRule-count-zero": "n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-one": "n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.0, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …", + "pluralRule-count-other": " @integer 2~9, 22~29, 102, 1002, … @decimal 0.2~0.9, 1.2~1.9, 10.2, 100.2, 1000.2, …" + }, + "ps": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "pt": { + "pluralRule-count-one": "i = 0..1 @integer 0, 1 @decimal 0.0~1.5", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "pt-PT": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "rm": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ro": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-few": "v != 0 or n = 0 or n % 100 = 2..19 @integer 0, 2~16, 102, 1002, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-other": " @integer 20~35, 100, 1000, 10000, 100000, 1000000, …" + }, + "rof": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "root": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ru": { + "pluralRule-count-one": "v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …", + "pluralRule-count-few": "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …", + "pluralRule-count-many": "v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …", + "pluralRule-count-other": " @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "rwk": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sah": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "saq": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sc": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "scn": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sd": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sdh": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "se": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-other": " @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "seh": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ses": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sg": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sh": { + "pluralRule-count-one": "v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …", + "pluralRule-count-few": "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …", + "pluralRule-count-other": " @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "shi": { + "pluralRule-count-one": "i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04", + "pluralRule-count-few": "n = 2..10 @integer 2~10 @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00", + "pluralRule-count-other": " @integer 11~26, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~1.9, 2.1~2.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "si": { + "pluralRule-count-one": "n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.00, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0.9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sk": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-few": "i = 2..4 and v = 0 @integer 2~4", + "pluralRule-count-many": "v != 0 @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-other": " @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …" + }, + "sl": { + "pluralRule-count-one": "v = 0 and i % 100 = 1 @integer 1, 101, 201, 301, 401, 501, 601, 701, 1001, …", + "pluralRule-count-two": "v = 0 and i % 100 = 2 @integer 2, 102, 202, 302, 402, 502, 602, 702, 1002, …", + "pluralRule-count-few": "v = 0 and i % 100 = 3..4 or v != 0 @integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-other": " @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …" + }, + "sma": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-other": " @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "smi": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-other": " @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "smj": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-other": " @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "smn": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-other": " @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sms": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-two": "n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000", + "pluralRule-count-other": " @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sn": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "so": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sq": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sr": { + "pluralRule-count-one": "v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …", + "pluralRule-count-few": "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …", + "pluralRule-count-other": " @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ss": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ssy": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "st": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sv": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "sw": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "syr": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ta": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "te": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "teo": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "th": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ti": { + "pluralRule-count-one": "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "tig": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "tk": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "tl": { + "pluralRule-count-one": "v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9 @integer 0~3, 5, 7, 8, 10~13, 15, 17, 18, 20, 21, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.3, 0.5, 0.7, 0.8, 1.0~1.3, 1.5, 1.7, 1.8, 2.0, 2.1, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", + "pluralRule-count-other": " @integer 4, 6, 9, 14, 16, 19, 24, 26, 104, 1004, … @decimal 0.4, 0.6, 0.9, 1.4, 1.6, 1.9, 2.4, 2.6, 10.4, 100.4, 1000.4, …" + }, + "tn": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "to": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "tr": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ts": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "tzm": { + "pluralRule-count-one": "n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0", + "pluralRule-count-other": " @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ug": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "uk": { + "pluralRule-count-one": "v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …", + "pluralRule-count-few": "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …", + "pluralRule-count-many": "v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …", + "pluralRule-count-other": " @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ur": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "uz": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "ve": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "vi": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "vo": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "vun": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "wa": { + "pluralRule-count-one": "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "wae": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "wo": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "xh": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "xog": { + "pluralRule-count-one": "n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "yi": { + "pluralRule-count-one": "i = 1 and v = 0 @integer 1", + "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "yo": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "yue": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "zh": { + "pluralRule-count-other": " @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + }, + "zu": { + "pluralRule-count-one": "i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04", + "pluralRule-count-other": " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" + } + } + } +} diff --git a/MLEB/Translate/extension-wip.json b/MLEB/Translate/extension-wip.json deleted file mode 100644 index b8c5a723..00000000 --- a/MLEB/Translate/extension-wip.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "Translate", - "type": "specialpage", - "author": [ - "Niklas Laxström", - "Santhosh Thottingal", - "Siebrand Mazeland", - "..." - ], - "version": "2018-11-05", - "url": "https://www.mediawiki.org/wiki/Extension:Translate", - "descriptionmsg": "translate-desc", - "license-name": "GPL-2.0-or-later", - "requires": { - "MediaWiki": ">= 1.30.0" - }, - "callback": "TranslateHooks::setupTranslate", - "load_composer_autoloader": true, - "manifest_version": 2, - "AutoloadClasses": { - "TranslateHooks": "TranslateHooks.php" - }, - "JobClasses": { - "MessageGroupStatesUpdaterJob": "MessageGroupStatesUpdaterJob", - "MessageGroupStatsRebuildJob": "MessageGroupStatsRebuildJob", - "MessageIndexRebuildJob": "MessageIndexRebuildJob", - "MessageUpdateJob": "MessageUpdateJob", - "TTMServerMessageUpdateJob": "TTMServerMessageUpdateJob" - }, - "LogTypes": [ - "translationreview" - ], - "LogActionsHandlers": { - "translationreview/message": "TranslateLogFormatter", - "translationreview/group": "TranslateLogFormatter" - }, - "AvailableRights": [ - "translate", - "translate-import", - "translate-manage", - "translate-messagereview", - "translate-groupreview" - ], - "GrantPermissions": { - "editpage": { - "translate": true - } - } -} diff --git a/MLEB/Translate/extension.json b/MLEB/Translate/extension.json new file mode 100644 index 00000000..9b04d583 --- /dev/null +++ b/MLEB/Translate/extension.json @@ -0,0 +1,1035 @@ +{ + "name": "Translate", + "type": "specialpage", + "author": [ + "Niklas Laxström", + "Siebrand Mazeland", + "Santhosh Thottingal", + "Amir E. Aharoni", + "Abijeet Patro", + "..." + ], + "version": "2020-07-20 [https://www.mediawiki.org/wiki/MLEB MLEB 2020.07]", + "url": "https://www.mediawiki.org/wiki/Extension:Translate", + "descriptionmsg": "translate-desc", + "license-name": "GPL-2.0-or-later", + "requires": { + "MediaWiki": ">= 1.33.0", + "extensions": { + "UniversalLanguageSelector": "*" + } + }, + "callback": "TranslateHooks::setupTranslate", + "load_composer_autoloader": true, + "ServiceWiringFiles": [ + "src/ServiceWiring.php" + ], + "manifest_version": 2, + "namespaces": [ + { + "id": 1198, + "constant": "NS_TRANSLATIONS", + "name": "Translations" + }, + { + "id": 1199, + "constant": "NS_TRANSLATIONS_TALK", + "name": "Translations_talk" + } + ], + "ExtensionMessagesFiles": { + "TranslateAlias": "Translate.alias.php", + "TranslateMagic": "Translate.i18n.magic.php" + }, + "MessagesDirs": { + "PageTranslation": [ + "i18n/pagetranslation" + ], + "Translate": [ + "i18n/core" + ], + "TranslateApi": [ + "i18n/api" + ], + "TranslateSandbox": [ + "i18n/sandbox" + ], + "TranslateSearch": [ + "i18n/search" + ] + }, + "AutoloadClasses": { + "AggregateMessageGroup": "messagegroups/AggregateMessageGroup.php", + "AggregateMessageGroupLoader": "messagegroups/loaders/AggregateMessageGroupLoader.php", + "AmdFFS": "ffs/AmdFFS.php", + "AndroidXmlFFS": "ffs/AndroidXmlFFS.php", + "AnotherMockTranslateValidator": "tests/phpunit/mocks/MockValidators.php", + "ApertiumWebService": "webservices/ApertiumWebService.php", + "ApiAggregateGroups": "api/ApiAggregateGroups.php", + "ApiGroupReview": "api/ApiGroupReview.php", + "ApiManageMessageGroups": "api/ApiManageMessageGroups.php", + "ApiQueryLanguageStats": "api/ApiQueryLanguageStats.php", + "ApiQueryManageMessageGroups": "api/ApiQueryManageMessageGroups.php", + "ApiQueryMessageCollection": "api/ApiQueryMessageCollection.php", + "ApiQueryMessageGroups": "api/ApiQueryMessageGroups.php", + "ApiQueryMessageGroupStats": "api/ApiQueryMessageGroupStats.php", + "ApiQueryMessageTranslations": "api/ApiQueryMessageTranslations.php", + "ApiSearchTranslations": "api/ApiSearchTranslations.php", + "ApiStatsQuery": "api/ApiStatsQuery.php", + "ApiTranslateSandbox": "api/ApiTranslateSandbox.php", + "ApiTranslationAids": "api/ApiTranslationAids.php", + "ApiTranslationCheck": "api/ApiTranslationCheck.php", + "ApiTranslationReview": "api/ApiTranslationReview.php", + "ApiTranslationStash": "api/ApiTranslationStash.php", + "ApiTTMServer": "api/ApiTTMServer.php", + "AppleFFS": "ffs/AppleFFS.php", + "AppleInfoPlistFfs": "ffs/AppleInfoPlistFfs.php", + "ArrayFlattener": "utils/ArrayFlattener.php", + "BaseValidatorTestCase": "tests/phpunit/unit/MessageValidator/Validators/BaseValidatorTestCase.php", + "CachedMessageGroupLoader": "messagegroups/loaders/CachedMessageGroupLoader.php", + "CachedMessageIndex": "utils/MessageIndex.php", + "CaighdeanWebService": "webservices/CaighdeanWebService.php", + "CDBMessageIndex": "utils/MessageIndex.php", + "CombinedInsertablesSuggester": "insertables/CombinedInsertablesSuggester.php", + "CrossLanguageTranslationSearchQuery": "ttmserver/CrossLanguageTranslationSearchQuery.php", + "CurrentTranslationAid": "translationaids/CurrentTranslationAid.php", + "CxserverWebService": "webservices/CxserverWebService.php", + "DatabaseMessageIndex": "utils/MessageIndex.php", + "DatabaseTTMServer": "ttmserver/DatabaseTTMServer.php", + "DocumentationAid": "translationaids/DocumentationAid.php", + "DtdFFS": "ffs/DtdFFS.php", + "ElasticSearchTTMServer": "ttmserver/ElasticSearchTTMServer.php", + "ExternalMessageSourceStateComparator": "utils/ExternalMessageSourceStateComparator.php", + "ExternalMessageSourceStateImporter": "utils/ExternalMessageSourceStateImporter.php", + "FakeTTMServer": "ttmserver/FakeTTMServer.php", + "FatMessage": "Message.php", + "FCFontFinder": "utils/FCFontFinder.php", + "FFS": "ffs/FFS.php", + "FileBasedMessageGroup": "messagegroups/FileBasedMessageGroup.php", + "FileBasedMessageGroupLoader": "messagegroups/loaders/FileBasedMessageGroupLoader.php", + "FlatPhpFFS": "ffs/FlatPhpFFS.php", + "FuzzyLikeThis": "ttmserver/FuzzyLikeThis.php", + "GettextDocumentationAid": "translationaids/GettextDocumentationAid.php", + "GettextFFS": "ffs/GettextFFS.php", + "GettextPluralException": "ffs/GettextPluralException.php", + "GoogleTranslateWebService": "webservices/GoogleTranslateWebService.php", + "HashMessageIndex": "utils/MessageIndex.php", + "HTMLJsSelectToInputField": "utils/HTMLJsSelectToInputField.php", + "HtmlTagInsertablesSuggester": "insertables/HtmlTagInsertablesSuggester.php", + "IniFFS": "ffs/IniFFS.php", + "InOtherLanguagesAid": "translationaids/InOtherLanguagesAid.php", + "Insertable": "insertables/Insertable.php", + "InsertablesAid": "translationaids/InsertablesAid.php", + "InsertablesSuggester": "insertables/InsertablesSuggester.php", + "JavaFFS": "ffs/JavaFFS.php", + "JavaScriptFFS": "ffs/JavaScriptFFS.php", + "JsonFFS": "ffs/JsonFFS.php", + "JsSelectToInput": "utils/JsSelectToInput.php", + "MachineTranslationAid": "translationaids/MachineTranslationAid.php", + "MediaWikiExtensionMessageGroup": "messagegroups/MediaWikiExtensionMessageGroup.php", + "MediaWikiInsertablesSuggester": "insertables/MediaWikiInsertablesSuggester.php", + "MessageChangeStorage": "utils/MessageChangeStorage.php", + "MessageCollection": "MessageCollection.php", + "MessageDefinitionAid": "translationaids/MessageDefinitionAid.php", + "MessageDefinitions": "MessageCollection.php", + "MessageGroup": "messagegroups/MessageGroup.php", + "MessageGroupBase": "messagegroups/MessageGroupBase.php", + "MessageGroupCache": "utils/MessageGroupCache.php", + "MessageGroupConfigurationParser": "MessageGroupConfigurationParser.php", + "MessageGroupLoader": "messagegroups/loaders/MessageGroupLoader.php", + "MessageGroupOld": "messagegroups/MessageGroupOld.php", + "MessageGroups": "MessageGroups.php", + "MessageGroupStates": "utils/MessageGroupStates.php", + "MessageGroupStatesUpdaterJob": "utils/MessageGroupStatesUpdaterJob.php", + "MessageGroupStats": "utils/MessageGroupStats.php", + "MessageGroupStatsRebuildJob": "utils/MessageGroupStatsRebuildJob.php", + "MessageGroupWANCache": "utils/MessageGroupWANCache.php", + "MessageHandle": "utils/MessageHandle.php", + "MessageIndex": "utils/MessageIndex.php", + "MessageIndexException": "utils/MessageIndexException.php", + "MessageIndexRebuildJob": "utils/MessageIndexRebuildJob.php", + "MessageUpdateJob": "utils/MessageUpdateJob.php", + "MessageValidator": "MessageValidator.php", + "MessageWebImporter": "utils/MessageWebImporter.php", + "MetaYamlSchemaExtender": "MetaYamlSchemaExtender.php", + "MicrosoftWebService": "webservices/MicrosoftWebService.php", + "MockCacheMessageGroupLoader": "tests/phpunit/mocks/MockCacheMessageGroupLoader.php", + "MockFileBasedMessageGroup": "tests/phpunit/mocks/MockFileBasedMessageGroup.php", + "MockMessageCollectionForExport": "tests/phpunit/mocks/MockMessageCollectionForExport.php", + "MockTranslateValidator": "tests/phpunit/mocks/MockValidators.php", + "MockWikiMessageGroup": "tests/phpunit/mocks/MockWikiMessageGroup.php", + "MockWikiValidationMessageGroup": "tests/phpunit/mocks/MockWikiMessageGroup.php", + "NumericalParameterInsertablesSuggester": "insertables/NumericalParameterInsertablesSuggester.php", + "PageTranslationHooks": "tag/PageTranslationHooks.php", + "PageTranslationLogFormatter": "tag/PageTranslationLogFormatter.php", + "PHPVariableLoader": "utils/PHPVariableLoader.php", + "PremadeIntuitionTextdomains": "ffs/PremadeIntuitionTextdomains.php", + "PremadeMediawikiExtensionGroups": "ffs/PremadeMediawikiExtensionGroups.php", + "QueryAggregator": "webservices/QueryAggregator.php", + "QueryAggregatorAware": "webservices/QueryAggregatorAware.php", + "QueryAggregatorAwareTranslationAid": "translationaids/QueryAggregatorAwareTranslationAid.php", + "ReadableTTMServer": "ttmserver/Interfaces.php", + "RecentAdditionsMessageGroup": "messagegroups/RecentAdditionsMessageGroup.php", + "RecentMessageGroup": "messagegroups/RecentMessageGroup.php", + "RegexInsertablesSuggester": "insertables/RegexInsertablesSuggester.php", + "RemoteTTMServer": "ttmserver/RemoteTTMServer.php", + "RemoteTTMServerWebService": "webservices/RemoteTTMServerWebService.php", + "RESTBaseWebService": "webservices/RESTBaseWebService.php", + "ReviewPerLanguageStats": "specials/SpecialTranslationStats.php", + "RevTag": "utils/RevTag.php", + "SandboxMessageGroup": "messagegroups/SandboxMessageGroup.php", + "SearchableTTMServer": "ttmserver/Interfaces.php", + "SerializedMessageIndex": "utils/MessageIndex.php", + "SimpleFFS": "ffs/SimpleFFS.php", + "SpecialAggregateGroups": "specials/SpecialAggregateGroups.php", + "SpecialExportTranslations": "specials/SpecialExportTranslations.php", + "SpecialImportTranslations": "specials/SpecialImportTranslations.php", + "SpecialLanguageStats": "specials/SpecialLanguageStats.php", + "SpecialManageGroups": "specials/SpecialManageGroups.php", + "SpecialManageTranslatorSandbox": "specials/SpecialManageTranslatorSandbox.php", + "SpecialMessageGroupStats": "specials/SpecialMessageGroupStats.php", + "SpecialPageMigration": "tag/SpecialPageMigration.php", + "SpecialPagePreparation": "tag/SpecialPagePreparation.php", + "SpecialPageTranslation": "tag/SpecialPageTranslation.php", + "SpecialPageTranslationDeletePage": "tag/SpecialPageTranslationDeletePage.php", + "SpecialPageTranslationMovePage": "tag/SpecialPageTranslationMovePage.php", + "SpecialSearchTranslations": "specials/SpecialSearchTranslations.php", + "SpecialSupportedLanguages": "specials/SpecialSupportedLanguages.php", + "SpecialTranslate": "specials/SpecialTranslate.php", + "SpecialTranslations": "specials/SpecialTranslations.php", + "SpecialTranslationStash": "specials/SpecialTranslationStash.php", + "SpecialTranslationStats": "specials/SpecialTranslationStats.php", + "StashedTranslation": "stash/StashedTranslation.php", + "StatsBar": "utils/StatsBar.php", + "StatsTable": "utils/StatsTable.php", + "StringMangler": "stringmangler/StringMangler.php", + "StringMatcher": "stringmangler/StringMatcher.php", + "SupportAid": "translationaids/SupportAid.php", + "ThinMessage": "Message.php", + "TMessage": "Message.php", + "TPException": "tag/TPException.php", + "TPParse": "tag/TPParse.php", + "TPSection": "tag/TPSection.php", + "TranslatablePage": "tag/TranslatablePage.php", + "TranslatablePageInsertablesSuggester": "insertables/TranslatablePageInsertablesSuggester.php", + "TranslatablePageMessageGroupStore": "messagegroups/loaders/TranslatablePageMessageGroupStore.php", + "TranslatablePageMoveJob": "tag/TranslatablePageMoveJob.php", + "TranslatablePageTestTrait": "tests/phpunit/helpers/TranslatablePageTestTrait.php", + "TranslateCliLogger": "scripts/TranslateCliLogger.php", + "TranslateDeleteJob": "tag/TranslateDeleteJob.php", + "TranslateEditAddons": "TranslateEditAddons.php", + "TranslateHooks": "TranslateHooks.php", + "TranslateLogFormatter": "utils/TranslateLogFormatter.php", + "TranslateMetadata": "utils/TranslateMetadata.php", + "TranslatePerLanguageStats": "specials/SpecialTranslationStats.php", + "TranslatePreferences": "utils/TranslatePreferences.php", + "TranslateRcFilter": "utils/TranslateRcFilter.php", + "TranslateRegistrationStats": "specials/SpecialTranslationStats.php", + "TranslateRenderJob": "tag/TranslateRenderJob.php", + "TranslateSandbox": "utils/TranslateSandbox.php", + "TranslateSandboxEmailJob": "utils/TranslateSandboxEmailJob.php", + "TranslateStatsOutput": "scripts/TranslateStatsOutput.php", + "TranslateToolbox": "utils/TranslateToolbox.php", + "TranslateUtils": "TranslateUtils.php", + "TranslateYaml": "utils/TranslateYaml.php", + "TranslationAid": "translationaids/TranslationAid.php", + "TranslationAidDataProvider": "translationaids/TranslationAidDataProvider.php", + "TranslationHelperException": "utils/TranslationHelpers.php", + "TranslationHelpers": "utils/TranslationHelpers.php", + "TranslationQuery": "webservices/TranslationQuery.php", + "TranslationQueryResponse": "webservices/TranslationQueryResponse.php", + "TranslationStashStorage": "stash/TranslationStashStorage.php", + "TranslationStats": "utils/TranslationStats.php", + "TranslationStatsBase": "specials/SpecialTranslationStats.php", + "TranslationStatsInterface": "specials/SpecialTranslationStats.php", + "TranslationsUpdateJob": "tag/TranslationsUpdateJob.php", + "TranslationWebService": "webservices/TranslationWebService.php", + "TranslationWebServiceConfigurationException": "webservices/TranslationWebServiceConfigurationException.php", + "TranslationWebServiceException": "webservices/TranslationWebServiceException.php", + "TranslationWebServiceInvalidInputException": "webservices/TranslationWebServiceInvalidInputException.php", + "TTMServer": "ttmserver/TTMServer.php", + "TTMServerAid": "translationaids/TTMServerAid.php", + "TTMServerException": "ttmserver/Exceptions.php", + "TTMServerMessageUpdateJob": "ttmserver/TTMServerMessageUpdateJob.php", + "TuxMessageTable": "utils/TuxMessageTable.php", + "UnsupportedTranslationAid": "translationaids/UnsupportedTranslationAid.php", + "UpdatedDefinitionAid": "translationaids/UpdatedDefinitionAid.php", + "WikiMessageGroup": "messagegroups/WikiMessageGroup.php", + "WikiPageMessageGroup": "messagegroups/WikiPageMessageGroup.php", + "WorkflowStatesMessageGroup": "messagegroups/WorkflowStatesMessageGroup.php", + "WorkflowStatesMessageGroupLoader": "messagegroups/loaders/WorkflowStatesMessageGroupLoader.php", + "WritableTTMServer": "ttmserver/Interfaces.php", + "XliffFFS": "ffs/XliffFFS.php", + "YamlFFS": "ffs/YamlFFS.php", + "YandexWebService": "webservices/YandexWebService.php" + }, + "AutoloadNamespaces": { + "MediaWiki\\Extensions\\Translate\\": "src/" + }, + "TestAutoloadNamespaces": { + "MediaWiki\\Extensions\\Translate\\": "tests/phpunit/unit/" + }, + "Hooks": { + "LoadExtensionSchemaUpdates": "TranslateHooks::schemaUpdates", + "ParserTestTables": "TranslateHooks::parserTestTables", + "PageContentLanguage": "TranslateHooks::onPageContentLanguage", + "ResourceLoaderRegisterModules": "TranslateHooks::onResourceLoaderRegisterModules", + "EditPage::showEditForm:initial": "TranslateEditAddons::addTools", + "AlternateEdit": "TranslateEditAddons::suppressIntro", + "getUserPermissionsErrorsExpensive": "TranslateEditAddons::disallowLangTranslations", + "EditPageBeforeEditButtons": "TranslateEditAddons::buttonHack", + "LanguageGetTranslatedLanguageNames": "TranslateHooks::translateMessageDocumentationLanguage", + "TranslateSupportedLanguages": "TranslateHooks::translateMessageDocumentationLanguage", + "ArticlePrepareTextForEdit": "TranslateEditAddons::disablePreSaveTransform", + "ParserFirstCallInit": "TranslateHooks::setupTranslateParserFunction", + "UserGetReservedNames": "TranslateHooks::onUserGetReservedNames", + "LinksUpdate": "TranslateHooks::preventCategorization", + "Translate:newTranslation": "TranslateEditAddons::updateTransverTag", + "SkinTemplateNavigation::SpecialPage": [ + "SpecialTranslate::tabify", + "SpecialManageGroups::tabify" + ], + "GetPreferences": "TranslatePreferences::translationAssistLanguages", + "ChangesListSpecialPageQuery": "TranslateRcFilter::translationFilter", + "SpecialRecentChangesPanel": "TranslateRcFilter::translationFilterForm", + "ChangesListSpecialPageStructuredFilters": "TranslateRcFilter::onChangesListSpecialPageStructuredFilters", + "AbortEmailNotification": "TranslateHooks::onAbortEmailNotificationReview", + "ArticleDeleteComplete": "TTMServer::onDelete", + "TranslateEventMessageMembershipChange": "TTMServer::onGroupChange", + "ArticleContentOnDiff": "TranslateEditAddons::displayOnDiff", + "SpecialSearchProfiles": "TranslateHooks::searchProfile", + "SpecialSearchProfileForm": "TranslateHooks::searchProfileForm", + "SpecialSearchSetupEngine": "TranslateHooks::searchProfileSetupEngine", + "TitleIsAlwaysKnown": "TranslateHooks::onTitleIsAlwaysKnown", + "Translate:MessageGroupStats:isIncluded": [ + "TranslateHooks::hideDiscouragedFromStats", + "TranslateHooks::hideRestrictedFromStats" + ], + "MakeGlobalVariablesScript": "TranslateHooks::addConfig", + "TranslateEventTranslationReview": [ + "MessageGroupStats::clear", + "MessageGroupStatesUpdaterJob::onChange" + ], + "TranslateInitGroupLoaders": [ + "TranslatablePageMessageGroupStore::registerLoader", + "WorkflowStatesMessageGroupLoader::registerLoader", + "AggregateMessageGroupLoader::registerLoader", + "FileBasedMessageGroupLoader::registerLoader" + ], + "AdminLinks": "TranslateHooks::onAdminLinks", + "MergeAccountFromTo": "TranslateHooks::onMergeAccountFromTo", + "DeleteAccount": "TranslateHooks::onDeleteAccount", + "AbuseFilter-filterAction": "TranslateHooks::onAbuseFilterAlterVariables", + "AbuseFilterAlterVariables": "TranslateHooks::onAbuseFilterAlterVariables", + "AbuseFilter-computeVariable": "TranslateHooks::onAbuseFilterComputeVariable", + "AbuseFilter-builder": "TranslateHooks::onAbuseFilterBuilder", + "EditFilterMergedContent": "TranslateHooks::validateMessage" + }, + "SpecialPages": { + "Translate": "SpecialTranslate", + "Translations": "SpecialTranslations", + "TranslationStats": "SpecialTranslationStats", + "LanguageStats": "SpecialLanguageStats", + "MessageGroupStats": "SpecialMessageGroupStats", + "ImportTranslations": "SpecialImportTranslations", + "ExportTranslations": "SpecialExportTranslations", + "ManageMessageGroups": "SpecialManageGroups", + "SupportedLanguages": "SpecialSupportedLanguages", + "AggregateGroups": "SpecialAggregateGroups", + "SearchTranslations": "SpecialSearchTranslations" + }, + "APIListModules": { + "messagecollection": "ApiQueryMessageCollection" + }, + "APIMetaModules": { + "languagestats": "ApiQueryLanguageStats", + "managemessagegroups": "ApiQueryManageMessageGroups", + "messagegroups": "ApiQueryMessageGroups", + "messagegroupstats": "ApiQueryMessageGroupStats", + "messagetranslations": "ApiQueryMessageTranslations" + }, + "APIModules": { + "aggregategroups": "ApiAggregateGroups", + "groupreview": "ApiGroupReview", + "managemessagegroups": "ApiManageMessageGroups", + "translationaids": "ApiTranslationAids", + "translationreview": "ApiTranslationReview", + "translationcheck": "ApiTranslationCheck", + "ttmserver": "ApiTTMServer", + "searchtranslations": "ApiSearchTranslations" + }, + "JobClasses": { + "MessageGroupStatesUpdaterJob": "MessageGroupStatesUpdaterJob", + "MessageGroupStatsRebuildJob": "MessageGroupStatsRebuildJob", + "MessageIndexRebuildJob": "MessageIndexRebuildJob", + "MessageUpdateJob": "MessageUpdateJob", + "TTMServerMessageUpdateJob": "TTMServerMessageUpdateJob", + "UpdateTranslatorActivity": "\\MediaWiki\\Extensions\\Translate\\Statistics\\UpdateTranslatorActivityJob" + }, + "LogTypes": [ + "translationreview" + ], + "LogActionsHandlers": { + "translationreview/message": "TranslateLogFormatter", + "translationreview/group": "TranslateLogFormatter" + }, + "ResourceFileModulePaths": { + "localBasePath": "", + "remoteExtPath": "Translate" + }, + "ResourceModules": { + "ext.translate": { + "styles": "resources/css/ext.translate.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.base": { + "scripts": "resources/js/ext.translate.base.js", + "dependencies": [ + "mediawiki.api", + "mediawiki.util" + ], + "messages": [ + "translate-js-support-unsaved-warning" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.dropdownmenu": { + "styles": "resources/css/ext.translate.dropdownmenu.css", + "scripts": "resources/js/ext.translate.dropdownmenu.js", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.specialpages.styles": { + "styles": "resources/css/ext.translate.special.translations.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.loader": { + "styles": "resources/css/ext.translate.loader.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.messagetable": { + "scripts": "resources/js/ext.translate.messagetable.js", + "styles": "resources/css/ext.translate.messagetable.less", + "dependencies": [ + "ext.translate.base", + "ext.translate.loader", + "ext.translate.parsers", + "jquery.textchange", + "jquery.throttle-debounce", + "mediawiki.Uri", + "mediawiki.jqueryMsg", + "mediawiki.util" + ], + "messages": [ + "api-error-badtoken", + "api-error-emptypage", + "api-error-unknownerror", + "tpt-unknown-page", + "translate-edit-title", + "tux-edit", + "tux-empty-list-all", + "tux-empty-list-all-guide", + "tux-empty-list-other", + "tux-empty-list-other-action", + "tux-empty-list-other-guide", + "tux-empty-list-other-link", + "tux-empty-list-translated", + "tux-empty-list-translated-action", + "tux-empty-list-translated-guide", + "tux-empty-no-messages-to-display", + "tux-empty-no-outdated-messages", + "tux-empty-nothing-new-to-proofread", + "tux-empty-nothing-to-proofread", + "tux-empty-show-optional-messages", + "tux-empty-there-are-optional", + "tux-empty-you-can-help-providing", + "tux-empty-you-can-review-already-proofread", + "tux-message-filter-advanced-button", + "tux-message-filter-placeholder", + "tux-message-filter-result", + "tux-messagetable-loading-messages", + "tux-messagetable-more-messages", + "tux-status-fuzzy", + "tux-status-optional", + "tux-status-proofread", + "tux-status-translated" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.pagetranslation.uls": { + "scripts": "resources/js/ext.translate.pagetranslation.uls.js", + "dependencies": [ + "ext.uls.mediawiki", + "mediawiki.util" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.edit.documentation": { + "dependencies": [ + "oojs-ui-core", + "oojs-ui-widgets", + "oojs-ui-windows" + ], + "messages": [ + "tps-edit-sourcepage-ve-warning-title", + "tps-edit-sourcepage-ve-warning-text", + "tps-edit-sourcepage-ve-warning-button" + ], + "scripts": [ + "resources/js/ext.translate.edit.documentation.js" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.edit.documentation.styles": { + "styles": [ + "resources/css/ext.translate.edit.documentation.less" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.parsers": { + "scripts": "resources/js/ext.translate.parsers.js", + "dependencies": [ + "mediawiki.util" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.quickedit": { + "styles": "resources/css/ext.translate.quickedit.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.selecttoinput": { + "scripts": "resources/js/ext.translate.selecttoinput.js", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.aggregategroups.styles": { + "styles": "resources/css/ext.translate.special.aggregategroups.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.languagestats": { + "scripts": "resources/js/ext.translate.special.languagestats.js", + "messages": [ + "translate-langstats-collapse", + "translate-langstats-collapseall", + "translate-langstats-expand", + "translate-langstats-expandall" + ], + "dependencies": "jquery.tablesorter", + "targets": [ + "desktop" + ] + }, + "ext.translate.special.managegroups.styles": { + "styles": [ + "resources/css/ext.translate.special.managegroups.css" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.messagerenamedialog": { + "dependencies": [ + "oojs-ui-core", + "oojs-ui-widgets", + "oojs-ui-windows" + ], + "messages": [ + "translate-smg-rename-select", + "translate-smg-rename-cancel", + "translate-smg-rename-search", + "translate-smg-rename-select-err", + "translate-smg-rename-no-msg" + ], + "scripts": [ + "resources/js/ext.translate.messagerenamedialog.js" + ], + "styles": [ + "resources/css/ext.translate.messagerenamedialog.less" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.managetranslatorsandbox.styles": { + "styles": "resources/css/ext.translate.special.managetranslatorsandbox.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.pagemigration": { + "scripts": [ + "resources/js/jquery.ajaxdispatcher.js", + "resources/js/ext.translate.special.pagemigration.js" + ], + "dependencies": [ + "mediawiki.api", + "mediawiki.Title", + "mediawiki.ui", + "mediawiki.ui.button" + ], + "messages": [ + "pm-add-icon-hover-text", + "pm-delete-icon-hover-text", + "pm-extra-units-warning", + "pm-langcode-missing", + "pm-old-translations-missing", + "pm-page-does-not-exist", + "pm-pagename-missing", + "pm-pagetitle-invalid", + "pm-pagetitle-missing", + "pm-swap-icon-hover-text", + "pm-on-import-message-text", + "pm-on-save-message-text", + "pm-savepages-button-label", + "pm-cancel-button-label", + "tpt-unknown-page" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.pagemigration.styles": { + "styles": "resources/css/ext.translate.special.pagemigration.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.pagepreparation": { + "scripts": "resources/js/ext.translate.special.pagepreparation.js", + "dependencies": [ + "mediawiki.util", + "mediawiki.Title", + "mediawiki.diff.styles", + "mediawiki.api", + "mediawiki.jqueryMsg", + "mediawiki.ui" + ], + "messages": [ + "pp-already-prepared-message", + "pp-diff-error", + "pp-pagename-missing", + "pp-prepare-message", + "pp-save-button-label", + "pp-save-message" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.pagepreparation.styles": { + "styles": "resources/css/ext.translate.special.pagepreparation.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.pagetranslation.styles": { + "styles": "resources/css/ext.translate.special.pagetranslation.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.searchtranslations": { + "scripts": "resources/js/ext.translate.special.searchtranslations.js", + "dependencies": [ + "ext.translate.editor", + "ext.translate.groupselector", + "ext.uls.mediawiki", + "mediawiki.Uri", + "mediawiki.language" + ], + "messages": [ + "translate-search-more-groups-info", + "translate-search-more-languages-info" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.searchtranslations.styles": { + "styles": "resources/css/ext.translate.special.searchtranslations.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.supportedlanguages": { + "styles": "resources/css/ext.translate.special.supportedlanguages.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.translate": { + "scripts": [ + "resources/js/ext.translate.workflowselector.js", + "resources/js/ext.translate.special.translate.js" + ], + "styles": "resources/css/ext.translate.workflowselector.css", + "skinScripts": { + "vector": "resources/js/ext.translate.navitoggle.js" + }, + "skinStyles": { + "vector": "resources/css/ext.translate.navitoggle.css" + }, + "dependencies": [ + "ext.translate.base", + "ext.translate.dropdownmenu", + "ext.translate.editor", + "ext.translate.groupselector", + "ext.translate.messagetable", + "ext.translate.recentgroups", + "jquery.uls.data", + "mediawiki.Uri", + "mediawiki.api", + "mediawiki.jqueryMsg" + ], + "messages": [ + "tpt-discouraged-language-content", + "tpt-discouraged-language-force-content", + "tpt-discouraged-language-force-header", + "tpt-discouraged-language-header", + "tux-editor-proofreading-hide-own-translations", + "tux-editor-proofreading-show-own-translations", + "translate-workflow-set-doing", + "translate-workflow-state-", + "translate-workflowstatus" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.translate.styles": { + "styles": "resources/css/ext.translate.special.translate.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.translationstash": { + "scripts": "resources/js/ext.translate.special.translationstash.js", + "styles": "resources/css/ext.translate.special.translationstash.css", + "dependencies": [ + "ext.translate.editor", + "ext.translate.messagetable", + "ext.translate.translationstashstorage", + "ext.uls.mediawiki", + "mediawiki.api", + "mediawiki.language" + ], + "messages": [ + "translate-translationstash-skip-button-label", + "translate-translationstash-translations", + "tsb-limit-reached-body", + "tsb-limit-reached-title" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.special.translationstats": { + "scripts": "resources/js/ext.translate.special.translationstats.js", + "dependencies": [ + "mediawiki.widgets.datetime" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.statsbar": { + "styles": "resources/css/ext.translate.statsbar.css", + "scripts": "resources/js/ext.translate.statsbar.js", + "messages": [ + "translate-statsbar-tooltip", + "translate-statsbar-tooltip-with-fuzzy" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.statstable": { + "styles": "resources/css/ext.translate.statstable.less", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.tabgroup": { + "styles": "resources/css/ext.translate.tabgroup.css", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.tag.languages": { + "styles": "resources/css/ext.translate.tag.languages.less", + "targets": [ + "desktop", + "mobile" + ] + }, + "ext.translate.translationstashstorage": { + "scripts": "resources/js/ext.translate.translationstashstorage.js", + "dependencies": [ + "mediawiki.api" + ], + "targets": [ + "desktop", + "mobile" + ] + }, + "jquery.textchange": { + "scripts": "resources/js/jquery.textchange.js", + "targets": [ + "desktop", + "mobile" + ] + } + }, + "QUnitTestModule": { + "localBasePath": "", + "remoteExtPath": "Translate", + "scripts": [ + "tests/qunit/ext.translate.parsers.test.js", + "tests/qunit/ext.translate.special.pagemigration.test.js" + ], + "dependencies": [ + "ext.translate.parsers", + "ext.translate.special.pagemigration" + ] + }, + "config": { + "PageTranslationLanguageList": { + "value": "tag-only", + "description": "How language list for translatable pages is shown. Allowed values:\n * tag-only: Only display languages with the tag.\n * sidebar-only: Display languages as interlanguage links only and ignore the tag even if present on the page.\n * sidebar-fallback: Display languages as interlanguage links if no tag is on the page.\n * sidebar-always: Display languages as interlanguage links and also in tag if it is present on the page.\n @since 2018.07", + "public": true + }, + "TranslateDocumentationLanguageCode": { + "value": false, + "description": "Language code for message documentation. Suggested values are qqq or info. If set to false (default), message documentation feature is disabled.", + "public": true + }, + "TranslateUserManagerName": { + "value": "TranslateUserManager", + "description": "Name of the system user that will be used to create the sandbox users in the system.", + "public": true + }, + "TranslateFuzzyBotName": { + "value": "FuzzyBot", + "description": "Name of the bot which will invalidate translations and do maintenance for page translation feature. Also used for importing messages from external sources.", + "public": true + }, + "TranslateLanguageFallbacks": { + "value": [], + "description": "Default values for list of languages to show translators as an aid when translating. Each user can override this setting in their preferences.\n\nExample: LanguageFallbacks['fi'] = 'sv' or LanguageFallbacks['sv'] = [ 'da', 'no', 'nn' ].", + "public": true + }, + "TranslateSupportUrl": { + "value": false, + "description": "Experimental support since 2011-03-11 for an 'Ask' help button. Might change into a hook later on. This is an array with keys page, url and params: page is a title of a local wiki page; url is an URL to use as is (e.g. an issue tracker submission form) which will override the page if set; params is an array of key-value pairs of request params -- each param value can contain the variable %MESSAGE% which will be replaced with the full page name.", + "public": true + }, + "TranslateSupportUrlNamespace": { + "value": [], + "description": "Like $wgTranslateSupportUrl, but for a specific namespace. Each $wgTranslateSupportUrl-like array needs to be the value assigned to the numerical ID of a namespace of the wiki. Since 2015-09.", + "public": true, + "merge_strategy": "array_plus" + }, + "TranslatePermissionUrl": { + "value": "Project:Translator", + "description": "When unprivileged users open a translation editor, they will see a message stating that a special permission is needed for translating messages. If this variable is defined, there is a button which will take the user to that page to ask for permission. The target needs to be reiterated with the second variable to have the same result with sandbox enabled where users can't enter the sandbox.", + "public": true + }, + "TranslateSecondaryPermissionUrl": { + "value": "Project:Translator", + "description": "…", + "public": true + }, + "EnablePageTranslation": { + "value": true, + "description": "Enable page translation feature.\n\nPage translation feature allows structured translation of wiki pages with simple markup and automatic tracking of changes. See https://www.mediawiki.org/wiki/Help:Extension:Translate/Page_translation_administration", + "public": true + }, + "TranslatePageTranslationULS": { + "value": false, + "description": "If set to true, when a user selects an interface language via ULS (Universal Language Selector), if the current page is a translatable page or a translation page then the user is also redirected to the corresponding translation page in the selected language.\n\n The language of the translation pages visited afterwards will still depend on the links followed (it will be the interface language only if the links use the Special:MyLanguage syntax).\n\nSince 2013-03-10.", + "public": true + }, + "TranslateKeepOutdatedTranslations": { + "value": true, + "description": "If set to true, when a translated page has some units marked as outdated, the outdated translation will be shown. If set to false, the original updated unit in the original language will be shown.\n\nChanging this setting requires the following script to be run to take effect on existing changes: scripts/refresh-translatable-pages.php\n\n Since 2016.12.", + "public": true + }, + "TranslateBlacklist": { + "value": [], + "description": "Two-dimensional array of languages that cannot be translated. Input can be exact group name, first part before '-' or '*' for all. Second dimension should be language code mapped to reason for disabling. Reason is parsed as wikitext.\n\nExample:\n'TranslateBlacklist': { '*': { 'en': 'English is the source language.' }, 'core': { 'mul': 'Not a real language.' }, 'ext': { 'mul': 'Not a real language.'} }", + "public": true + }, + "TranslateCheckBlacklist": { + "value": false, + "description": "File containing checks that are to be skipped. See https://gerrit.wikimedia.org/g/translatewiki/+/master/groups/check-blacklist.php for example.\nSince 2012-10-15.", + "public": true + }, + "TranslateAuthorBlacklist": { + "value": [], + "description": "Two-dimensional array of rules that blacklists certain authors from appearing in the exports. This is useful for keeping bots and people doing maintenance work in translations not to appear besides real translators everywhere.\n\nRules are arrays, where first element is type: white or black. Whitelisting always overrules blacklisting. Second element should be a valid pattern that can be given a preg_match(). It will be matched against string of format 'group-id;language;author name', without quotes.\n\nAs an example, this rule would ignore all authors whose name ends in a bot for all languages and all groups:\n'TranslateAuthorBlacklist': [ [ 'black', '/^.*;.*;.*Bot$/Ui' ] ]", + "public": true + }, + "TranslateMessageNamespaces": { + "value": [], + "description": "List of namespace that contain messages. No talk namespaces. See https://www.mediawiki.org/wiki/Help:Extension:Translate/Group_configuration", + "public": true + }, + "TranslateGroupRoot": { + "value": "/var/www/externals", + "description": "Location in the filesystem to which paths are relative in custom groups.", + "public": true + }, + "TranslateGroupFiles": { + "value": [], + "description": "The newest and recommended way of adding custom groups is YAML files.", + "public": true + }, + "TranslateWorkflowStates": { + "value": false, + "description": "List of possible message group review workflow states and properties for each state. The currently supported properties are 'color', the color that is used for displaying the state in the tables, and 'right', the additional right that is needed to set the state. Users who have the translate-groupreview right can set this in Special:Translate. The state is visible in Special:Translate, Special:MessageGroupStats and Special:LanguageStats. If the value is false, the workflow states feature is disabled. State name can be up to 32 characters maximum.\n\nExample:\n'TranslateWorkflowStates': {\n\n'new': { 'color': 'FF0000' },\n'needs_proofreading': { 'color': '0000FF' },\n'ready': { 'color': 'FFFF00'},\n'published': { 'color': '00FF00', 'right': 'centralnotice-admin' }\n}", + "public": true + }, + "TranslateGroupAliases": { + "value": [], + "description": "Map from deprecated group IDs to their current ID. Example value: { 'core': 'mediawiki-core' }", + "public": true + }, + "TranslateCacheDirectory": { + "value": "false", + "description": "Set location of cache files. Defaults to $wgCacheDirectory.", + "public": true + }, + "TranslateMessageIndex": { + "value": "DatabaseMessageIndex", + "description": "Configures how the message index is stored. Possible values are 'DatabaseMessageIndex', 'SerializedMessageIndex', and 'CDBMessageIndex'. The last two backends need $wgCacheDirectory to be functional.", + "public": true + }, + "TranslateDelayedMessageIndexRebuild": { + "value": false, + "description": "If you have lots of message groups, especially file based ones, and the message index rebuilding gets slow, set this to true to delay the rebuilding via JobQueue. This only makes sense if you have configured jobs to be processed outside of requests via cron or similar.", + "public": true + }, + "TranslatePHPlot": { + "value": false, + "description": "For Special:TranslationStats PHPlot is needed to produce graphs. Set this the location of phplot.php.", + "public": true + }, + "TranslatePHPlotFont": { + "value": "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf", + "description": "The default font for PHPlot for drawing text. Only used if the automatic best font selection fails. The automatic best font selector uses language code to call fc-match program. If you have open_basedir restriction or safe-mode, using the found font is likely to fail. In this case you need to change the code to use hard-coded font, or copy fonts to location PHP can access them, and make sure fc-match returns only those fonts.", + "public": true + }, + "TranslateUseSandbox": { + "value": false, + "description": "Whether to allow users to sign up via a sandbox. Sandboxed users cannot do much until approved and thus they can be get rid of easily. This only works with MediaWiki 1.27 and newer, and only if registration is configured to not use account creation providers which give REDIRECT or UI responses or require any other field than the default username/password/email.", + "public": true + }, + "TranslateSandboxPromotedGroup": { + "value": false, + "description": "To which group the translators are promoted. If left at false, they will just be removed from sandbox and become normal users.", + "public": true + }, + "TranslateSandboxLimit": { + "value": 20, + "description": "Maximum number of translations a user can make in the sandbox.", + "public": true + }, + "TranslateUsePreSaveTransform": { + "value": false, + "description": "Pre-save transform for message pages. MediaWiki does this by default (including for pages in the MediaWiki-namespace). By setting this to false it allows users to put untransformed syntax such as '~~~~' into a page without having them be transformed upon save.", + "public": true + }, + "TranslateRcFilterDefault": { + "value": "filter", + "description": "Default action for the RecentChanges filter, which makes it possible to filter translations away or show them only. Possible values: 'noaction', 'only', 'filter', 'site'.", + "public": true + }, + "TranslateYamlLibrary": { + "value": null, + "description": "Currently supported YAML drivers are phpyaml, spyc and syck.\n\nFor phpyaml see https://secure.php.net/manual/en/book.yaml.php.\nFor syck we're shelling out to perl. So you need at least perl 5.8 (find out what you have by running `perl -v`), and to install these modules from CPAN: YAML::Syck, PHP::Serialization, and File::Slurp.\n\nYou should be able to do this with: `for module in 'YAML::Syck' 'PHP::Serialization' 'File::Slurp'; do cpanp -i $module; done`\n\nFor the shell to work, you also need an en.UTF-8 locale installed on your system. add a line `en.UTF-8` to your /etc/locale.gen or uncomment an existing one and run locale-gen if you do not have it already.\n\nphpyaml is the fastest and based on libyaml so the output should be most compatible. spyc output format is least compatible. syck is slowest but almost as good as phpyaml. spyc needs to be installed using composer. See https://www.mediawiki.org/wiki/Composer", + "public": true + }, + "TranslateTranslationDefaultService": { + "value": true, + "description": "Name of the default translation memory service. This service must accept updates.\n\nIf left as the default `true`, the extension will fallback to TTMServer. If `$wgTranslateTranslationServices` is also unconfigured, built-in values will be used to configure the TTMServer.\n\nIf set to `false`, no translation memory will be used.", + "public": true + }, + "TranslateTranslationServices": { + "value": [], + "description": "Define various web services that provide translation suggestions.\n\nTranslation memories are documented in our main documentation. See https://www.mediawiki.org/wiki/Help:Extension:Translate/Translation_memories\n\nFor Apertium, you should get an API key. See http://wiki.apertium.org/wiki/Apertium_web_service\n\nYandex translation helper also provides langlimit option to limit total number of suggestions (set to 0 to get all possible translations) and langorder array to sort languages. Yandex translate engine is based on wordnet, generated from search index, so number of indexed websites should be a good heuristic to define the default language order.\n\nThe machine translation services are provided with the following information: server ip address; versions of MediaWiki and Translate extension; source text to translate; private API key if provided", + "public": true + } + }, + "DefaultUserOptions": { + "translate": 0, + "translate-editlangs": "default", + "translate-recent-groups": "" + }, + "AvailableRights": [ + "translate", + "translate-import", + "translate-manage", + "translate-messagereview", + "translate-groupreview" + ], + "GrantPermissions": { + "editpage": { + "translate": true + } + } +} \ No newline at end of file diff --git a/MLEB/Translate/ffs/AmdFFS.php b/MLEB/Translate/ffs/AmdFFS.php index bd759e8f..36c1677a 100644 --- a/MLEB/Translate/ffs/AmdFFS.php +++ b/MLEB/Translate/ffs/AmdFFS.php @@ -71,9 +71,9 @@ class AmdFFS extends SimpleFFS { // Take care of regular language bundles, as well as the root bundle. if ( isset( $messages['root'] ) ) { - $messages = $this->group->getMangler()->mangle( $messages['root'] ); + $messages = $this->group->getMangler()->mangleArray( $messages['root'] ); } else { - $messages = $this->group->getMangler()->mangle( $messages ); + $messages = $this->group->getMangler()->mangleArray( $messages ); } return [ @@ -91,7 +91,7 @@ class AmdFFS extends SimpleFFS { $messages = []; $mangler = $this->group->getMangler(); - /** @var ThinMessage $m */ + /** @var TMessage $m */ foreach ( $collection as $key => $m ) { $value = $m->translation(); if ( $value === null ) { diff --git a/MLEB/Translate/ffs/AndroidXmlFFS.php b/MLEB/Translate/ffs/AndroidXmlFFS.php index 2e947c61..82fd9cb1 100644 --- a/MLEB/Translate/ffs/AndroidXmlFFS.php +++ b/MLEB/Translate/ffs/AndroidXmlFFS.php @@ -13,6 +13,9 @@ * @ingroup FFS */ class AndroidXmlFFS extends SimpleFFS { + /** @var ArrayFlattener */ + private $flattener; + public function __construct( FileBasedMessageGroup $group ) { parent::__construct( $group ); $this->flattener = $this->getFlattener(); @@ -36,6 +39,9 @@ class AndroidXmlFFS extends SimpleFFS { $messages = []; $mangler = $this->group->getMangler(); + $regexBacktrackLimit = ini_get( 'pcre.backtrack_limit' ); + ini_set( 'pcre.backtrack_limit', 10 ); + /** @var SimpleXMLElement $element */ foreach ( $reader as $element ) { $key = (string)$element['name']; @@ -60,9 +66,11 @@ class AndroidXmlFFS extends SimpleFFS { $messages[$key] = $value; } + ini_set( 'pcre.backtrack_limit', $regexBacktrackLimit ); + return [ 'AUTHORS' => $this->scrapeAuthors( $data ), - 'MESSAGES' => $mangler->mangle( $messages ), + 'MESSAGES' => $mangler->mangleArray( $messages ), ]; } @@ -82,13 +90,24 @@ class AndroidXmlFFS extends SimpleFFS { return $authors; } - protected function readElementContents( $element ) { - return stripcslashes( (string)$element ); + protected function readElementContents( $element ): string { + $elementStr = (string)$element; + + // Convert string of format \uNNNN (eg: \u1234) to symbols + $converted = preg_replace_callback( + '/(? $m ) { $key = $mangler->unmangle( $key ); diff --git a/MLEB/Translate/ffs/AppleFFS.php b/MLEB/Translate/ffs/AppleFFS.php index 0465d7b7..6d50baca 100644 --- a/MLEB/Translate/ffs/AppleFFS.php +++ b/MLEB/Translate/ffs/AppleFFS.php @@ -20,8 +20,6 @@ class AppleFFS extends SimpleFFS { return [ '.strings' ]; } - // READ - /** * @param string $data * @return array Parsed data. @@ -34,10 +32,11 @@ class AppleFFS extends SimpleFFS { $value = ''; foreach ( $lines as $line ) { + $line = trim( $line ); if ( $linecontinuation ) { - $linecontinuation = false; - $valuecont = $line; - $value .= $valuecont; + if ( strpos( $line, '*/' ) !== false ) { + $linecontinuation = false; + } } else { if ( $line === '' ) { continue; @@ -60,12 +59,12 @@ class AppleFFS extends SimpleFFS { continue; } - list( $key, $value ) = self::readRow( $line ); + list( $key, $value ) = static::readRow( $line ); $messages[$key] = $value; } } - $messages = $this->group->getMangler()->mangle( $messages ); + $messages = $this->group->getMangler()->mangleArray( $messages ); return [ 'AUTHORS' => $authors, @@ -75,6 +74,7 @@ class AppleFFS extends SimpleFFS { /** * Parses non-empty strings file row to key and value. + * Can be overridden by child classes. * @param string $line * @throws MWException * @return array array( string $key, string $val ) @@ -93,8 +93,6 @@ class AppleFFS extends SimpleFFS { } } - // Write - /** * @param MessageCollection $collection * @return string @@ -124,7 +122,7 @@ class AppleFFS extends SimpleFFS { } $key = $mangler->unmangle( $key ); - $output .= self::writeRow( $key, $value ); + $output .= static::writeRow( $key, $value ); } if ( $output ) { @@ -138,6 +136,7 @@ class AppleFFS extends SimpleFFS { /** * Writes well-formed properties file row with key and value. + * Can be overridden by child classes. * @param string $key * @param string $value * @return string @@ -215,4 +214,24 @@ class AppleFFS extends SimpleFFS { return $output; } + + public static function getExtraSchema() { + $schema = [ + 'root' => [ + '_type' => 'array', + '_children' => [ + 'FILES' => [ + '_type' => 'array', + '_children' => [ + 'header' => [ + '_type' => 'text', + ], + ] + ] + ] + ] + ]; + + return $schema; + } } diff --git a/MLEB/Translate/ffs/AppleInfoPlistFfs.php b/MLEB/Translate/ffs/AppleInfoPlistFfs.php new file mode 100644 index 00000000..904c77e1 --- /dev/null +++ b/MLEB/Translate/ffs/AppleInfoPlistFfs.php @@ -0,0 +1,51 @@ +]*>,', $data, $matches ); - - $keys = $matches[1]; - $values = $matches[2]; - - $messages = []; - - $count = count( $matches[1] ); - for ( $i = 0; $i < $count; $i++ ) { - $messages[$keys[$i]] = str_replace( - [ '"', '"', ''' ], - [ '"', '"', "'" ], - $values[$i] ); - } - - $messages = $this->group->getMangler()->mangle( $messages ); + list( , $keys, $messages ) = $matches; + $messages = array_combine( + $keys, + array_map( + function ( $message ) { + return html_entity_decode( $message, ENT_QUOTES ); + }, + $messages + ) + ); + + $messages = $this->group->getMangler()->mangleArray( $messages ); return [ 'AUTHORS' => $authors, @@ -83,7 +75,11 @@ class DtdFFS extends SimpleFFS { $output .= "\n"; } - return $output ? $header . $output : false; + if ( $output ) { + return $header . $output; + } + + return false; } protected function doHeader( MessageCollection $collection ) { diff --git a/MLEB/Translate/ffs/FlatPhpFFS.php b/MLEB/Translate/ffs/FlatPhpFFS.php index ff8e6e4a..997a4088 100644 --- a/MLEB/Translate/ffs/FlatPhpFFS.php +++ b/MLEB/Translate/ffs/FlatPhpFFS.php @@ -18,8 +18,6 @@ class FlatPhpFFS extends SimpleFFS implements MetaYamlSchemaExtender { return [ '.php' ]; } - // READ - /** * @param string $data * @return array Parsed data. @@ -48,7 +46,7 @@ class FlatPhpFFS extends SimpleFFS implements MetaYamlSchemaExtender { $messages[$key] = $value; } - $messages = $this->group->getMangler()->mangle( $messages ); + $messages = $this->group->getMangler()->mangleArray( $messages ); return [ 'AUTHORS' => $authors, @@ -56,8 +54,6 @@ class FlatPhpFFS extends SimpleFFS implements MetaYamlSchemaExtender { ]; } - // WRITE - protected function writeReal( MessageCollection $collection ) { if ( isset( $this->extra['header'] ) ) { $output = $this->extra['header']; diff --git a/MLEB/Translate/ffs/GettextFFS.php b/MLEB/Translate/ffs/GettextFFS.php index f4ba0720..9174349a 100644 --- a/MLEB/Translate/ffs/GettextFFS.php +++ b/MLEB/Translate/ffs/GettextFFS.php @@ -9,11 +9,7 @@ * @file */ -/** - * Identifies Gettext plural exceptions. - */ -class GettextPluralException extends MWException { -} +use MediaWiki\Extensions\Translate\Utilities\GettextPlural; /** * New-style FFS class that implements support for gettext file format. @@ -127,15 +123,17 @@ class GettextFFS extends SimpleFFS implements MetaYamlSchemaExtender { /* At this stage we are only interested how many plurals forms we should * be expecting when parsing the rest of this file. */ $pluralCount = false; - if ( isset( $headers['Plural-Forms'] ) && - preg_match( '/nplurals=([0-9]+).*;/', $headers['Plural-Forms'], $matches ) - ) { - $pluralCount = $metadata['plural'] = $matches[1]; + if ( $potmode ) { + $pluralCount = 2; + } elseif ( isset( $headers['Plural-Forms'] ) ) { + $pluralCount = $metadata['plural'] = GettextPlural::getPluralCount( $headers['Plural-Forms'] ); } + $metadata['plural'] = $pluralCount; + // Then parse the messages foreach ( $sections as $section ) { - $item = self::parseGettextSection( $section, $pluralCount, $metadata ); + $item = self::parseGettextSection( $section, $pluralCount ); if ( $item === false ) { continue; } @@ -157,13 +155,15 @@ class GettextFFS extends SimpleFFS implements MetaYamlSchemaExtender { return [ 'MESSAGES' => $messages, - 'TEMPLATE' => $template, - 'METADATA' => $metadata, - 'HEADERS' => $headers + 'EXTRA' => [ + 'TEMPLATE' => $template, + 'METADATA' => $metadata, + 'HEADERS' => $headers, + ], ]; } - public static function parseGettextSection( $section, $pluralCount, &$metadata ) { + public static function parseGettextSection( $section, $pluralCount ) { if ( trim( $section ) === '' ) { return false; } @@ -201,7 +201,7 @@ class GettextFFS extends SimpleFFS implements MetaYamlSchemaExtender { if ( $match !== null ) { $pluralMessage = true; $plural = self::formatForWiki( $match ); - $item['id'] = "{{PLURAL:GETTEXT|{$item['id']}|$plural}}"; + $item['id'] = GettextPlural::flatten( [ $item['id'], $plural ] ); } if ( $pluralMessage ) { @@ -258,7 +258,7 @@ class GettextFFS extends SimpleFFS implements MetaYamlSchemaExtender { } if ( array_sum( array_map( 'strlen', $actualForms ) ) > 0 ) { - return '{{PLURAL:GETTEXT|' . implode( '|', $actualForms ) . '}}'; + return GettextPlural::flatten( $actualForms ); } else { return ''; } @@ -308,13 +308,7 @@ class GettextFFS extends SimpleFFS implements MetaYamlSchemaExtender { if ( $algorithm === 'simple' ) { $hash = substr( $hash, 0, 6 ); - if ( !is_callable( [ $lang, 'truncateForDatabase' ] ) ) { - // Backwards compatibility code; remove once MW 1.30 is - // no longer supported (aka once MW 1.33 is released) - $snippet = $lang->truncate( $item['id'], 30, '' ); - } else { - $snippet = $lang->truncateForDatabase( $item['id'], 30, '' ); - } + $snippet = $lang->truncateForDatabase( $item['id'], 30, '' ); $snippet = str_replace( ' ', '_', trim( $snippet ) ); } else { // legacy global $wgLegalTitleChars; @@ -322,13 +316,7 @@ class GettextFFS extends SimpleFFS implements MetaYamlSchemaExtender { $snippet = preg_replace( "/[^$wgLegalTitleChars]/", ' ', $snippet ); $snippet = preg_replace( "/[:&%\/_]/", ' ', $snippet ); $snippet = preg_replace( '/ {2,}/', ' ', $snippet ); - if ( !is_callable( [ $lang, 'truncateForDatabase' ] ) ) { - // Backwards compatibility code; remove once MW 1.30 is - // no longer supported (aka once MW 1.33 is released) - $snippet = $lang->truncate( $snippet, 30, '' ); - } else { - $snippet = $lang->truncateForDatabase( $snippet, 30, '' ); - } + $snippet = $lang->truncateForDatabase( $snippet, 30, '' ); $snippet = str_replace( ' ', '_', trim( $snippet ) ); } @@ -378,17 +366,23 @@ class GettextFFS extends SimpleFFS implements MetaYamlSchemaExtender { } protected function writeReal( MessageCollection $collection ) { - $pot = $this->read( 'en' ); - $template = $this->read( $collection->code ); + $pot = $this->read( 'en' )['EXTRA']; + $code = $collection->code; + $template = $this->read( $code )['EXTRA']; $pluralCount = false; - $output = $this->doGettextHeader( $collection, $template, $pluralCount ); + $output = $this->doGettextHeader( $collection, $template ); + + $pluralRule = GettextPlural::getPluralRule( $code ); + if ( !$pluralRule ) { + $pluralRule = GettextPlural::getPluralRule( 'en' ); + error_log( "Missing plural rule for code $code" ); + } + $pluralCount = GettextPlural::getPluralCount( $pluralRule ); /** @var TMessage $m */ foreach ( $collection as $key => $m ) { - $transTemplate = isset( $template['TEMPLATE'][$key] ) ? - $template['TEMPLATE'][$key] : []; - $potTemplate = isset( $pot['TEMPLATE'][$key] ) ? - $pot['TEMPLATE'][$key] : []; + $transTemplate = $template['TEMPLATE'][$key] ?? []; + $potTemplate = $pot['TEMPLATE'][$key] ?? []; $output .= $this->formatMessageBlock( $key, $m, $transTemplate, $potTemplate, $pluralCount ); } @@ -396,7 +390,7 @@ class GettextFFS extends SimpleFFS implements MetaYamlSchemaExtender { return $output; } - protected function doGettextHeader( MessageCollection $collection, $template, &$pluralCount ) { + protected function doGettextHeader( MessageCollection $collection, $template ) { global $wgSitename; $code = $collection->code; @@ -419,7 +413,7 @@ PHP; // Make sure there is no empty line before msgid $output = trim( $output ) . "\n"; - $specs = isset( $template['HEADERS'] ) ? $template['HEADERS'] : []; + $specs = $template['HEADERS'] ?? []; $timestamp = wfTimestampNow(); $specs['PO-Revision-Date'] = self::formatTime( $timestamp ); @@ -430,7 +424,7 @@ PHP; } $specs['Content-Type'] = 'text/plain; charset=UTF-8'; $specs['Content-Transfer-Encoding'] = '8bit'; - $specs['Language'] = TranslateUtils::bcp47( $this->group->mapCode( $code ) ); + $specs['Language'] = LanguageCode::bcp47( $this->group->mapCode( $code ) ); Hooks::run( 'Translate:GettextFFS:headerFields', [ &$specs, $this->group, $code ] ); $specs['X-Generator'] = $this->getGenerator(); @@ -439,16 +433,8 @@ PHP; $specs['X-Message-Group'] = $this->group->getId(); } - $plural = self::getPluralRule( $code ); - if ( $plural ) { - $specs['Plural-Forms'] = $plural; - } elseif ( !isset( $specs['Plural-Forms'] ) ) { - $specs['Plural-Forms'] = 'nplurals=2; plural=(n != 1);'; - } - - $match = []; - preg_match( '/nplurals=(\d+);/', $specs['Plural-Forms'], $match ); - $pluralCount = $match[1]; + $specs['Plural-Forms'] = GettextPlural::getPluralRule( $code ) + ?: GettextPlural::getPluralRule( 'en' ); $output .= 'msgid ""' . "\n"; $output .= 'msgstr ""' . "\n"; @@ -514,13 +500,13 @@ PHP; $flags[] = 'fuzzy'; } - if ( preg_match( '/{{PLURAL:GETTEXT/i', $msgid ) ) { - $forms = $this->splitPlural( $msgid, 2 ); + if ( GettextPlural::hasPlural( $msgid ) ) { + $forms = GettextPlural::unflatten( $msgid, 2 ); $content .= 'msgid ' . self::escape( $forms[0] ) . "\n"; $content .= 'msgid_plural ' . self::escape( $forms[1] ) . "\n"; try { - $forms = $this->splitPlural( $msgstr, $pluralCount ); + $forms = GettextPlural::unflatten( $msgstr, $pluralCount ); foreach ( $forms as $index => $form ) { $content .= "msgstr[$index] " . self::escape( $form ) . "\n"; } @@ -554,13 +540,7 @@ PHP; * @return mixed */ protected static function chainGetter( $key, $a, $b, $default ) { - if ( isset( $a[$key] ) ) { - return $a[$key]; - } elseif ( isset( $b[$key] ) ) { - return $b[$key]; - } else { - return $default; - } + return $a[$key] ?? $b[$key] ?? $default; } protected static function formatTime( $time ) { @@ -570,14 +550,14 @@ PHP; } protected function getPotTime() { - $defs = new MessageGroupCache( $this->group ); + $cache = $this->group->getMessageGroupCache( $this->group->getSourceLanguage() ); - return $defs->exists() ? $defs->getTimestamp() : wfTimestampNow(); + return $cache->exists() ? $cache->getTimestamp() : wfTimestampNow(); } protected function getGenerator() { return 'MediaWiki ' . SpecialVersion::getVersion() . - '; Translate ' . TRANSLATE_VERSION; + '; Translate ' . TranslateUtils::getVersion(); } protected function formatDocumentation( $key ) { @@ -616,65 +596,6 @@ PHP; return $line; } - /** - * Returns plural rule for Gettext. - * @param string $code Language code. - * @return string - */ - public static function getPluralRule( $code ) { - $rulefile = __DIR__ . '/../data/plural-gettext.txt'; - $rules = file_get_contents( $rulefile ); - foreach ( explode( "\n", $rules ) as $line ) { - if ( trim( $line ) === '' ) { - continue; - } - list( $rulecode, $rule ) = explode( "\t", $line ); - if ( $rulecode === $code ) { - return $rule; - } - } - - return ''; - } - - protected function splitPlural( $text, $forms ) { - if ( $forms === 1 ) { - return $text; - } - - $placeholder = TranslateUtils::getPlaceholder(); - # |/| is commonly used in KDE to support inflections - $text = str_replace( '|/|', $placeholder, $text ); - - $plurals = []; - $match = preg_match_all( '/{{PLURAL:GETTEXT\|(.*)}}/iUs', $text, $plurals ); - if ( !$match ) { - throw new GettextPluralException( "Failed to find plural in: $text" ); - } - - $splitPlurals = []; - for ( $i = 0; $i < $forms; $i++ ) { - # Start with the hole string - $pluralForm = $text; - # Loop over *each* {{PLURAL}} instance and replace - # it with the plural form belonging to this index - foreach ( $plurals[0] as $index => $definition ) { - $parsedFormsArray = explode( '|', $plurals[1][$index] ); - if ( !isset( $parsedFormsArray[$i] ) ) { - error_log( "Too few plural forms in: $text" ); - $pluralForm = ''; - } else { - $pluralForm = str_replace( $pluralForm, $definition, $parsedFormsArray[$i] ); - } - } - - $pluralForm = str_replace( $placeholder, '|/|', $pluralForm ); - $splitPlurals[$i] = $pluralForm; - } - - return $splitPlurals; - } - public function shouldOverwrite( $a, $b ) { $regex = '/^"(.+)-Date: \d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\+\d\d\d\d\\\\n"$/m'; @@ -710,4 +631,35 @@ PHP; return $schema; } + + public function isContentEqual( $a, $b ) { + if ( $a === $b ) { + return true; + } + + try { + $parsedA = GettextPlural::parsePluralForms( $a ); + $parsedB = GettextPlural::parsePluralForms( $b ); + + // if they have the different number of plural forms, just fail + if ( count( $parsedA[1] ) !== count( $parsedB[1] ) ) { + return false; + } + + } catch ( GettextPluralException $e ) { + // Something failed, invalid syntax? + return false; + } + + $expectedPluralCount = count( $parsedA[1] ); + + // GettextPlural::unflatten() will return an empty array when $expectedPluralCount is 0 + // So if they do not have translations and are different strings, they are not equal + if ( $expectedPluralCount === 0 ) { + return false; + } + + return GettextPlural::unflatten( $a, $expectedPluralCount ) + === GettextPlural::unflatten( $b, $expectedPluralCount ); + } } diff --git a/MLEB/Translate/ffs/GettextPluralException.php b/MLEB/Translate/ffs/GettextPluralException.php new file mode 100644 index 00000000..d1a15e0f --- /dev/null +++ b/MLEB/Translate/ffs/GettextPluralException.php @@ -0,0 +1,12 @@ + [ 'class' => 'FileBasedMessageGroup', 'namespace' => 8 ] ]; + $conf = [ 'BASIC' => [ 'class' => FileBasedMessageGroup::class, 'namespace' => 8 ] ]; /** * @var FileBasedMessageGroup $group */ $group = MessageGroupBase::factory( $conf ); + '@phan-var FileBasedMessageGroup $group'; - MediaWiki\suppressWarnings(); + Wikimedia\suppressWarnings(); $ffs = new self( $group ); $parsed = $ffs->readFromVariable( $data ); - MediaWiki\restoreWarnings(); + Wikimedia\restoreWarnings(); return (bool)count( $parsed['MESSAGES'] ); } @@ -57,7 +58,7 @@ class IniFFS extends SimpleFFS { $messages = parse_ini_string( $data ); if ( is_array( $messages ) ) { - $messages = $this->group->getMangler()->mangle( $messages ); + $messages = $this->group->getMangler()->mangleArray( $messages ); } else { $messages = null; } @@ -73,7 +74,7 @@ class IniFFS extends SimpleFFS { $mangler = $this->group->getMangler(); /** - * @var $m ThinMessage + * @var $m TMessage */ foreach ( $collection as $key => $m ) { $value = $m->translation(); diff --git a/MLEB/Translate/ffs/IntuitionTextdomains.php b/MLEB/Translate/ffs/IntuitionTextdomains.php deleted file mode 100644 index c3f637d2..00000000 --- a/MLEB/Translate/ffs/IntuitionTextdomains.php +++ /dev/null @@ -1,108 +0,0 @@ -idPrefix . $sanitizedName; - } - - if ( isset( $g['file'] ) ) { - $file = $g['file']; - } else { - // Canonical names for Intuition text-domains are lowercase - // eg. "MyTool" -> "mytool/en.json" - $file = "$sanitizedName/%CODE%.json"; - } - - if ( isset( $g['descmsg'] ) ) { - $descmsg = $g['descmsg']; - } else { - $descmsg = "$id-desc"; - } - - if ( isset( $g['url'] ) ) { - $url = $g['url']; - } else { - $url = false; - } - - $newgroup = [ - 'name' => 'Intuition - ' . $name, - 'file' => $file, - 'descmsg' => $descmsg, - 'url' => $url, - ]; - - // Prefix is required, if not customized use the sanitized name - if ( !isset( $g['prefix'] ) ) { - $g['prefix'] = "$sanitizedName-"; - } - - // All messages are prefixed with their groupname - $g['mangle'] = [ '*' ]; - - // Prevent E_NOTICE undefined index. - // PremadeMediawikiExtensionGroups::factory should probably check this better instead - if ( !isset( $g['ignored'] ) ) { - $g['ignored'] = []; - } - - if ( !isset( $g['optional'] ) ) { - $g['optional'] = []; - } - - $g['format'] = 'json'; - - $copyvars = [ - 'aliasfile', - 'desc', - 'format', - 'ignored', - 'magicfile', - 'mangle', - 'optional', - 'prefix', - 'var', - ]; - - foreach ( $copyvars as $var ) { - if ( isset( $g[$var] ) ) { - $newgroup[$var] = $g[$var]; - } - } - - $fixedGroups[$id] = $newgroup; - } - - return $fixedGroups; - } -} diff --git a/MLEB/Translate/ffs/JavaFFS.php b/MLEB/Translate/ffs/JavaFFS.php index 45d3d85f..350f48f9 100644 --- a/MLEB/Translate/ffs/JavaFFS.php +++ b/MLEB/Translate/ffs/JavaFFS.php @@ -31,8 +31,6 @@ class JavaFFS extends SimpleFFS implements MetaYamlSchemaExtender { } } - // READ - /** * @param string $data * @return array Parsed data. @@ -87,7 +85,7 @@ class JavaFFS extends SimpleFFS implements MetaYamlSchemaExtender { } } - $messages = $this->group->getMangler()->mangle( $messages ); + $messages = $this->group->getMangler()->mangleArray( $messages ); return [ 'AUTHORS' => $authors, @@ -95,8 +93,6 @@ class JavaFFS extends SimpleFFS implements MetaYamlSchemaExtender { ]; } - // Write - /** * @param MessageCollection $collection * @return string diff --git a/MLEB/Translate/ffs/JavaScriptFFS.php b/MLEB/Translate/ffs/JavaScriptFFS.php index e77724f2..8cc56671 100644 --- a/MLEB/Translate/ffs/JavaScriptFFS.php +++ b/MLEB/Translate/ffs/JavaScriptFFS.php @@ -41,12 +41,13 @@ abstract class JavaScriptFFS extends SimpleFFS { if ( $authors === $data ) { $authors = []; } else { - $authors = explode( "\n", $authors ); - $count = count( $authors ); - for ( $i = 0; $i < $count; $i++ ) { - // Each line should look like " * - Translatorname" - $authors[$i] = substr( $authors[$i], 6 ); - } + $authors = array_map( + function ( $author ) { + // Each line should look like " * - Translatorname" + return substr( $author, 6 ); + }, + explode( "\n", $authors ) + ); } /* Pre-processing of messages */ @@ -96,29 +97,15 @@ abstract class JavaScriptFFS extends SimpleFFS { /** * Concatenate separated strings. */ - $segment = str_replace( '"+', '" +', $segment ); - $segment = explode( '" +', $segment ); - $count = count( $segment ); - for ( $i = 0; $i < $count; $i++ ) { - $segment[$i] = ltrim( ltrim( $segment[$i] ), '"' ); - } - $segment = implode( $segment ); + $segment = preg_replace( '/"\s*\+\s*"/', '', $segment ); - /** - * Remove line breaks between message keys and messages. - */ - $segment = preg_replace( "#\:(\s+)[\\\"\']#", ': "', $segment ); - - /** - * Break in to key and message. - */ - $segments = explode( ': "', $segment ); + list( $key, $value ) = preg_split( '/:\s*[\'"]/', $segment, 2 ); /** * Strip excess whitespace from key and value, then quotation marks. */ - $key = trim( trim( $segments[0] ), "'\"" ); - $value = trim( trim( $segments[1] ), "'\"" ); + $key = trim( trim( $key ), "'\"" ); + $value = trim( trim( $value ), "'\"" ); /** * Unescape any JavaScript string syntax and append to message array. @@ -126,7 +113,7 @@ abstract class JavaScriptFFS extends SimpleFFS { $messages[$key] = self::unescapeJsString( $value ); } - $messages = $this->group->getMangler()->mangle( $messages ); + $messages = $this->group->getMangler()->mangleArray( $messages ); return [ 'AUTHORS' => $authors, @@ -235,52 +222,3 @@ abstract class JavaScriptFFS extends SimpleFFS { return strtr( $string, array_flip( self::$pairs ) ); } } - -/** - * File format support for Shapado, which uses JavaScript based format. - * @ingroup FFS - */ -class ShapadoJsFFS extends JavaScriptFFS { - - /** - * @param string $key - * - * @return string - */ - protected function transformKey( $key ) { - return $key; - } - - /** - * @param string $code - * @param string[] $authors - * @return string - */ - protected function header( $code, array $authors ) { - global $wgSitename; - - $name = TranslateUtils::getLanguageName( $code ); - $native = TranslateUtils::getLanguageName( $code, $code ); - $authorsList = $this->authorsList( $authors ); - - /** @cond doxygen_bug */ - return <<flattener->flatten( $messages ); } - $messages = $this->group->getMangler()->mangle( $messages ); + $messages = $this->group->getMangler()->mangleArray( $messages ); return [ 'MESSAGES' => $messages, @@ -77,26 +80,16 @@ class JsonFFS extends SimpleFFS { $messages = []; $template = $this->read( $collection->getLanguage() ); - $messages['@metadata'] = []; - if ( isset( $template['METADATA'] ) ) { - $messages['@metadata'] = $template['METADATA']; - } + $messages['@metadata'] = $template['METADATA'] ?? []; $authors = $collection->getAuthors(); - $authors = $this->filterAuthors( $authors, $collection->code ); - - if ( isset( $template['AUTHORS'] ) ) { - $authors = array_unique( array_merge( $template['AUTHORS'], $authors ) ); - } - - if ( $authors !== [] ) { - $messages['@metadata']['authors'] = array_values( $authors ); - } + $authors = $this->filterAuthors( $authors, $collection->getLanguage() ); + $messages['@metadata']['authors'] = array_values( $authors ); $mangler = $this->group->getMangler(); /** - * @var $m ThinMessage + * @var $m TMessage */ foreach ( $collection as $key => $m ) { $value = $m->translation(); @@ -133,8 +126,7 @@ class JsonFFS extends SimpleFFS { return null; } - $parseCLDRPlurals = isset( $this->extra['parseCLDRPlurals'] ) ? - $this->extra['parseCLDRPlurals'] : false; + $parseCLDRPlurals = $this->extra['parseCLDRPlurals'] ?? false; $flattener = new ArrayFlattener( $this->extra['nestingSeparator'], $parseCLDRPlurals ); return $flattener; diff --git a/MLEB/Translate/ffs/MediaWikiComplexMessages.php b/MLEB/Translate/ffs/MediaWikiComplexMessages.php deleted file mode 100644 index 0d7e2d6c..00000000 --- a/MLEB/Translate/ffs/MediaWikiComplexMessages.php +++ /dev/null @@ -1,768 +0,0 @@ - 'wikitable', - 'border' => '2', - 'cellpadding' => '4', - 'cellspacing' => '0', - 'style' => 'background-color: #F9F9F9; border: 1px #AAAAAA solid; border-collapse: collapse;', - ]; - - public function __construct( $langCode ) { - $this->language = $langCode; - - $language = Language::factory( $langCode ); - $this->targetHtmlCode = $language->getHtmlCode(); - $this->targetDir = $language->getDir(); - } - - public function getTitle() { - // Give grep a chance to find the usages: - // translate-magic-special, translate-magic-words, translate-magic-namespace - return wfMessage( 'translate-magic-' . $this->id )->text(); - } - - // Data retrieval - protected $init = false; - - public function getGroups() { - if ( !$this->init ) { - $saved = $this->getSavedData(); - foreach ( $this->data as &$group ) { - $this->getData( $group, $saved ); - } - $this->init = true; - } - - return $this->data; - } - - public function cleanData( $defs, $current ) { - foreach ( $current as $item => $values ) { - if ( !$this->elementsInArray ) { - break; - } - - if ( !isset( $defs[$item] ) ) { - unset( $current[$item] ); - continue; - } - - foreach ( $values as $index => $value ) { - if ( in_array( $value, $defs[$item], true ) ) { - unset( $current[$item][$index] ); - } - } - } - - return $current; - } - - public function mergeMagic( $defs, $current ) { - foreach ( $current as $item => &$values ) { - $newchain = $defs[$item]; - array_splice( $newchain, 1, 0, $values ); - $values = $newchain; - } - - return $current; - } - - public function getData( &$group, $savedData ) { - $defs = $this->readVariable( $group, 'en' ); - $code = $this->language; - - $current = $savedData + $this->readVariable( $group, $code ); - - // Clean up duplicates to definitions from saved data - $current = $this->cleanData( $defs, $current ); - - $chain = $current; - if ( $this->chainable ) { - foreach ( Language::getFallbacksFor( $code ) as $code ) { - $fbdata = $this->readVariable( $group, $code ); - if ( $this->firstMagic ) { - $fbdata = $this->cleanData( $defs, $fbdata ); - } - - $chain = array_merge_recursive( $chain, $fbdata ); - } - } - - if ( $this->firstMagic ) { - $chain = $this->mergeMagic( $defs, $chain ); - } - - $data = $group['data'] = [ $defs, $chain, $current ]; - - return $data; - } - - /** - * Gets data from request. Needs to be run before the form is displayed and - * validation. Not needed for export, which uses request directly. - * @param WebRequest $request - */ - public function loadFromRequest( WebRequest $request ) { - $saved = $this->parse( $this->formatForSave( $request ) ); - foreach ( $this->data as &$group ) { - $this->getData( $group, $saved ); - } - } - - /** - * Gets saved data from Mediawiki namespace - * @return Array - */ - protected function getSavedData() { - $data = TranslateUtils::getMessageContent( $this->databaseMsg, $this->language ); - - if ( !$data ) { - return []; - } else { - return $this->parse( $data ); - } - } - - protected function parse( $data ) { - $lines = array_map( 'trim', explode( "\n", $data ) ); - $array = []; - foreach ( $lines as $line ) { - if ( $line === '' || $line[0] === '#' || $line[0] === '<' ) { - continue; - } - - if ( strpos( $line, '=' ) === false ) { - continue; - } - - list( $name, $values ) = array_map( 'trim', explode( '=', $line, 2 ) ); - if ( $name === '' || $values === '' ) { - continue; - } - - $data = array_map( 'trim', explode( ',', $values ) ); - $array[$name] = $data; - } - - return $array; - } - - /** - * Return an array of keys that can be used to iterate over all keys - * @param string $group - * @return Array of keys for data - */ - protected function getIterator( $group ) { - $groups = $this->getGroups(); - - return array_keys( $groups[$group]['data'][self::LANG_MASTER] ); - } - - protected function val( $group, $type, $key ) { - $array = $this->getGroups(); - MediaWiki\suppressWarnings(); - $subarray = $array[$group]['data'][$type][$key]; - MediaWiki\restoreWarnings(); - if ( $this->elementsInArray ) { - if ( !$subarray || !count( $subarray ) ) { - return []; - } - } else { - if ( !$subarray ) { - return []; - } - } - - if ( !is_array( $subarray ) ) { - $subarray = [ $subarray ]; - } - - return $subarray; - } - - /** - * @param string $group - * @param string $code - * @return array - */ - protected function readVariable( $group, $code ) { - $file = $group['file']; - if ( !$group['code'] ) { - $file = str_ireplace( self::PLACEHOLDER, str_replace( '-', '_', ucfirst( $code ) ), $file ); - } - - ${$group['var']} = []; # Initialize - if ( file_exists( $file ) ) { - require $file; # Include - } - - if ( $group['code'] ) { - MediaWiki\suppressWarnings(); - $data = (array)${$group['var']} [$code]; - MediaWiki\restoreWarnings(); - } else { - $data = ${$group['var']}; - } - - return self::arrayMapRecursive( 'strval', $data ); - } - - public static function arrayMapRecursive( $callback, $data ) { - foreach ( $data as $index => $values ) { - if ( is_array( $values ) ) { - $data[$index] = self::arrayMapRecursive( $callback, $values ); - } else { - $data[$index] = call_user_func( $callback, $values ); - } - } - - return $data; - } - - // Data retrieval - - // Output - public function header( $title ) { - $colspan = [ 'colspan' => 3 ]; - $header = Xml::element( 'th', $colspan, $this->getTitle() . ' - ' . $title ); - $subheading[] = '' . wfMessage( 'translate-magic-cm-original' )->escaped() . ''; - $subheading[] = '' . wfMessage( 'translate-magic-cm-current' )->escaped() . ''; - $subheading[] = '' . wfMessage( 'translate-magic-cm-to-be' )->escaped() . ''; - - return '' . $header . '' . - '' . implode( "\n", $subheading ) . ''; - } - - public function output() { - $colspan = [ 'colspan' => 3 ]; - - $s = Xml::openElement( 'table', $this->tableAttributes ); - - foreach ( array_keys( $this->data ) as $group ) { - $s .= $this->header( $this->data[$group]['label'] ); - - foreach ( $this->getIterator( $group ) as $key ) { - $rowContents = ''; - - $value = $this->val( $group, self::LANG_MASTER, $key ); - if ( $this->firstMagic ) { - array_shift( $value ); - } - - $value = array_map( 'htmlspecialchars', $value ); - // Force ltr direction. The source is pretty much guaranteed to be English-based. - $rowContents .= '' . $this->formatElement( $value ) . ''; - - $value = $this->val( $group, self::LANG_CHAIN, $key ); - if ( $this->firstMagic ) { - array_shift( $value ); - } - - // Apply bidi-isolation to each value. - // The values can both RTL and LTR and mixing them in a comma list - // can mix things up. - foreach ( $value as &$currentTranslation ) { - $currentTranslation = Xml::element( 'bdi', null, $currentTranslation ); - } - $value = $this->highlight( $key, $value ); - $rowContents .= '' . $this->formatElement( $value ) . ''; - - $value = $this->val( $group, self::LANG_CURRENT, $key ); - $rowContents .= ''; - $rowContents .= $this->editElement( $key, $this->formatElement( $value ) ); - $rowContents .= ''; - - $s .= Xml::tags( 'tr', [ 'id' => "mw-sp-magic-$key" ], $rowContents ); - } - } - - $context = RequestContext::getMain(); - - if ( $context->getUser()->isAllowed( 'translate' ) ) { - $s .= '' . Xml::tags( 'td', $colspan, $this->getButtons() ) . ''; - } - - $s .= Xml::closeElement( 'table' ); - - return Xml::tags( - 'form', - [ - 'method' => 'post', - 'action' => $context->getRequest()->getRequestURL() - ], - $s - ); - } - - public function getButtons() { - return Xml::inputLabel( - wfMessage( 'translate-magic-cm-comment' )->text(), - 'comment', - 'sp-translate-magic-comment' - ) . - Xml::submitButton( - wfMessage( 'translate-magic-cm-save' )->text(), - [ 'name' => 'savetodb' ] - ); - } - - public function formatElement( $element ) { - if ( !count( $element ) ) { - return ''; - } - - if ( is_array( $element ) ) { - $element = array_map( 'trim', $element ); - $element = implode( ', ', $element ); - } - - return trim( $element ); - } - - protected function getKeyForEdit( $key ) { - return Sanitizer::escapeId( 'sp-translate-magic-cm-' . $this->id . $key ); - } - - public function editElement( $key, $contents ) { - return Xml::input( $this->getKeyForEdit( $key ), 40, $contents, [ - 'lang' => $this->targetHtmlCode, - 'dir' => $this->targetDir, - ] ); - } - - // Output - - // Save to database - - protected function getKeyForSave() { - return $this->databaseMsg . '/' . $this->language; - } - - /** - * @param WebRequest $request - * @return string - */ - protected function formatForSave( WebRequest $request ) { - $text = ''; - - // Do not replace spaces by underscores for magic words. See bug T48613 - $replaceSpace = $request->getVal( 'module' ) !== 'magic'; - - foreach ( array_keys( $this->data ) as $group ) { - foreach ( $this->getIterator( $group ) as $key ) { - $data = $request->getText( $this->getKeyForEdit( $key ) ); - // Make a nice array out of the submit with trimmed values. - $data = array_map( 'trim', explode( ',', $data ) ); - - if ( $replaceSpace ) { - // Normalise: Replace spaces with underscores. - $data = str_replace( ' ', '_', $data ); - } - - // Create final format. - $data = implode( ', ', $data ); - if ( $data !== '' ) { - $text .= "$key = $data\n"; - } - } - } - - return $text; - } - - /** - * @param WebRequest $request - * @throws MWException - */ - public function save( $request ) { - $title = Title::newFromText( 'MediaWiki:' . $this->getKeyForSave() ); - $page = WikiPage::factory( $title ); - - $data = "# DO NOT EDIT THIS PAGE DIRECTLY! Use [[Special:AdvancedTranslate]].\n
\n" .
-			$this->formatForSave( $request ) . "\n
"; - - $comment = $request->getText( - 'comment', - wfMessage( 'translate-magic-cm-updatedusing' )->inContentLanguage()->text() - ); - - $content = ContentHandler::makeContent( $data, $title ); - $status = $page->doEditContent( $content, $comment ); - - if ( $status === false || ( is_object( $status ) && !$status->isOK() ) ) { - throw new MWException( wfMessage( 'translate-magic-cm-savefailed' )->text() ); - } - - /* Reset outdated array */ - $this->init = false; - } - - // Save to database - - // Export - public function validate( array &$errors, $filter = false ) { - $used = []; - foreach ( array_keys( $this->data ) as $group ) { - if ( $filter !== false && !in_array( $group, (array)$filter, true ) ) { - continue; - } - - $this->validateEach( $errors, $group, $used ); - } - } - - protected function validateEach( array &$errors, $group, &$used ) { - foreach ( $this->getIterator( $group ) as $key ) { - $values = $this->val( $group, self::LANG_CURRENT, $key ); - $link = Xml::element( 'a', [ 'href' => "#mw-sp-magic-$key" ], $key ); - - if ( count( $values ) !== count( array_filter( $values ) ) ) { - $errors[] = "There is empty value in $link."; - } - - foreach ( $values as $v ) { - if ( isset( $used[$v] ) ) { - $otherkey = $used[$v]; - $first = Xml::element( - 'a', - [ 'href' => "#mw-sp-magic-$otherkey" ], - $otherkey - ); - $errors[] = "Translation $v is used more than once " . - "for $first and $link."; - } else { - $used[$v] = $key; - } - } - } - } - - public function export( $filter = false ) { - $text = ''; - $errors = []; - $this->validate( $errors, $filter ); - foreach ( $errors as $_ ) { - $text .= "#!!# $_\n"; - } - - foreach ( $this->getGroups() as $group => $data ) { - if ( $filter !== false && !in_array( $group, (array)$filter, true ) ) { - continue; - } - - $text .= $this->exportEach( $group, $data ); - } - - return $text; - } - - protected function exportEach( $group, $data ) { - $var = $data['var']; - $items = $data['data']; - - $extra = $data['code'] ? "['{$this->language}']" : ''; - - $out = ''; - - $indexKeys = []; - foreach ( array_keys( $items[self::LANG_MASTER] ) as $key ) { - $indexKeys[$key] = isset( $this->constants[$key] ) ? - $this->constants[$key] : - "'$key'"; - } - - $padTo = max( array_map( 'strlen', $indexKeys ) ) + 3; - - foreach ( $this->getIterator( $group ) as $key ) { - $temp = "\t{$indexKeys[$key]}"; - - while ( strlen( $temp ) <= $padTo ) { - $temp .= ' '; - } - - $from = self::LANG_CURRENT; - // Abuse of the firstMagic property, should use something proper - if ( $this->firstMagic ) { - $from = self::LANG_CHAIN; - } - - // Check for translations - $val = $this->val( $group, self::LANG_CURRENT, $key ); - if ( !$val || !count( $val ) ) { - continue; - } - - // Then get the data we really want - $val = $this->val( $group, $from, $key ); - - // Remove duplicated entries, causes problems with magic words - // Just to be sure, it should not be possible to save invalid data anymore - $val = array_unique( $val /* @todo SORT_REGULAR */ ); - - // So do empty elements... - foreach ( $val as $k => $v ) { - if ( $v === '' ) { - unset( $val[$k] ); - } - } - - // Another check - if ( !count( $val ) ) { - continue; - } - - $normalized = array_map( [ $this, 'normalize' ], $val ); - if ( $this->elementsInArray ) { - $temp .= '=> array( ' . implode( ', ', $normalized ) . ' ),'; - } else { - $temp .= '=> ' . implode( ', ', $normalized ) . ','; - } - $out .= $temp . "\n"; - } - - if ( $out !== '' ) { - $text = "# {$data['label']} \n"; - $text .= "\$$var$extra = array(\n" . $out . ");\n\n"; - - return $text; - } else { - return ''; - } - } - - /** - * Returns string with quotes that should be valid php - * @param string $data - * @throws MWException - * @return string - */ - protected function normalize( $data ) { - # Escape quotes - if ( !is_string( $data ) ) { - throw new MWException(); - } - $data = preg_replace( "/(?data['core'] = [ - 'label' => 'MediaWiki Core', - 'var' => 'specialPageAliases', - 'file' => Language::getMessagesFileName( self::PLACEHOLDER ), - 'code' => false, - ]; - - $groups = MessageGroups::singleton()->getGroups(); - foreach ( $groups as $g ) { - if ( !$g instanceof MediaWikiExtensionMessageGroup ) { - continue; - } - $conf = $g->getConfiguration(); - if ( !isset( $conf['FILES']['aliasFileSource'] ) ) { - continue; - } - $file = $g->replaceVariables( $conf['FILES']['aliasFileSource'], 'en' ); - if ( file_exists( $file ) ) { - $this->data[$g->getId()] = [ - 'label' => $g->getLabel(), - 'var' => 'specialPageAliases', - 'file' => $file, - 'code' => $code, - ]; - } - } - } - - public function highlight( $key, $values ) { - if ( count( $values ) ) { - if ( !isset( $values[0] ) ) { - throw new MWException( 'Something missing from values: ' . - print_r( $values, true ) ); - } - - $values[0] = "$values[0]"; - } - - return $values; - } - - protected function validateEach( array &$errors, $group, &$used ) { - parent::validateEach( $errors, $group, $used ); - foreach ( $this->getIterator( $group ) as $key ) { - $values = $this->val( $group, self::LANG_CURRENT, $key ); - - foreach ( $values as $_ ) { - MediaWiki\suppressWarnings(); - $title = SpecialPage::getTitleFor( $_ ); - MediaWiki\restoreWarnings(); - $link = Xml::element( 'a', [ 'href' => "#mw-sp-magic-$key" ], $key ); - if ( $title === null ) { - if ( $_ !== '' ) { - // Empty values checked elsewhere - $errors[] = "Translation $_ is invalid title in $link."; - } - } else { - $text = $title->getText(); - $dbkey = $title->getDBkey(); - if ( $text !== $_ && $dbkey !== $_ ) { - $errors[] = "Translation $_ for $link is not in " . - "normalised form, which is $text"; - } - } - } - } - } -} - -/** - * Adds support for translating magic words via Special:AdvancedTranslate. - * @todo Needs documentation. - */ -class MagicWordsCM extends ComplexMessages { - protected $id = SpecialMagic::MODULE_MAGIC; - protected $firstMagic = true; - protected $chainable = true; - protected $databaseMsg = 'sp-translate-data-MagicWords'; - - public function __construct( $code ) { - parent::__construct( $code ); - $this->data['core'] = [ - 'label' => 'MediaWiki Core', - 'var' => 'magicWords', - 'file' => Language::getMessagesFileName( self::PLACEHOLDER ), - 'code' => false, - ]; - - $groups = MessageGroups::singleton()->getGroups(); - foreach ( $groups as $g ) { - if ( !$g instanceof MediaWikiExtensionMessageGroup ) { - continue; - } - $conf = $g->getConfiguration(); - if ( !isset( $conf['FILES']['magicFileSource'] ) ) { - continue; - } - $file = $g->replaceVariables( $conf['FILES']['magicFileSource'], 'en' ); - if ( file_exists( $file ) ) { - $this->data[$g->getId()] = [ - 'label' => $g->getLabel(), - 'var' => 'magicWords', - 'file' => $file, - 'code' => $code, - ]; - } - } - } - - public function highlight( $key, $values ) { - if ( count( $values ) && $key === 'redirect' ) { - $values[0] = "$values[0]"; - } - - return $values; - } -} - -/** - * Adds support for translating namespace names via Special:AdvancedTranslate. - * @todo Needs documentation. - */ -class NamespaceCM extends ComplexMessages { - protected $id = SpecialMagic::MODULE_NAMESPACE; - protected $elementsInArray = false; - protected $databaseMsg = 'sp-translate-data-Namespaces'; - - public function __construct( $code ) { - parent::__construct( $code ); - $this->data['core'] = [ - 'label' => 'MediaWiki Core', - 'var' => 'namespaceNames', - 'file' => Language::getMessagesFileName( self::PLACEHOLDER ), - 'code' => false, - ]; - } - - protected $constants = [ - -2 => 'NS_MEDIA', - -1 => 'NS_SPECIAL', - 0 => 'NS_MAIN', - 1 => 'NS_TALK', - 2 => 'NS_USER', - 3 => 'NS_USER_TALK', - 4 => 'NS_PROJECT', - 5 => 'NS_PROJECT_TALK', - 6 => 'NS_FILE', - 7 => 'NS_FILE_TALK', - 8 => 'NS_MEDIAWIKI', - 9 => 'NS_MEDIAWIKI_TALK', - 10 => 'NS_TEMPLATE', - 11 => 'NS_TEMPLATE_TALK', - 12 => 'NS_HELP', - 13 => 'NS_HELP_TALK', - 14 => 'NS_CATEGORY', - 15 => 'NS_CATEGORY_TALK', - ]; - - protected function validateEach( array &$errors, $group, &$used ) { - parent::validateEach( $errors, $group, $used ); - foreach ( $this->getIterator( $group ) as $key ) { - $values = $this->val( $group, self::LANG_CURRENT, $key ); - - if ( count( $values ) > 1 ) { - $link = Xml::element( 'a', [ 'href' => "#mw-sp-magic-$key" ], $key ); - $errors[] = "Namespace $link can have only one translation. Replace the " . - 'translation with a new one, and notify staff about the change.'; - } - } - } -} diff --git a/MLEB/Translate/ffs/MediaWikiExtensions.php b/MLEB/Translate/ffs/MediaWikiExtensions.php deleted file mode 100644 index 123c5012..00000000 --- a/MLEB/Translate/ffs/MediaWikiExtensions.php +++ /dev/null @@ -1,372 +0,0 @@ -definitionFile = $def; - $this->path = $path; - } - - /** - * Whether to use the Configure extension to load extension home pages. - * - * @since 2012-03-22 - * @param bool $value Whether Configure should be used. - */ - public function setUseConfigure( $value ) { - $this->useConfigure = $value; - } - - /** - * How to prefix message group ids. - * - * @since 2012-03-22 - * @param string $value - */ - public function setGroupPrefix( $value ) { - $this->idPrefix = $value; - } - - /** - * Which namespace holds the messages. - * - * @since 2012-03-22 - * @param int $value - */ - public function setNamespace( $value ) { - $this->namespace = $value; - } - - /** - * Makes an group id from extension name - * @param string $name - * @return string - */ - public static function foldId( $name ) { - return preg_replace( '/\s+/', '', strtolower( $name ) ); - } - - /** - * Hook: TranslatePostInitGroups - * @param array &$list - * @param array &$deps - * @return true - */ - public function register( array &$list, array &$deps ) { - $groups = $this->parseFile(); - $groups = $this->processGroups( $groups ); - foreach ( $groups as $id => $g ) { - $list[$id] = $this->createMessageGroup( $id, $g ); - } - - $deps[] = new FileDependency( $this->definitionFile ); - - return true; - } - - /** - * Creates MediaWikiExtensionMessageGroup objects from parsed data. - * @param string $id unique group id already prefixed - * @param array $info array of group info - * @return MediaWikiExtensionMessageGroup - */ - protected function createMessageGroup( $id, $info ) { - $conf = []; - $conf['BASIC']['class'] = 'MediaWikiExtensionMessageGroup'; - $conf['BASIC']['id'] = $id; - $conf['BASIC']['namespace'] = $this->namespace; - $conf['BASIC']['label'] = $info['name']; - - if ( isset( $info['desc'] ) ) { - $conf['BASIC']['description'] = $info['desc']; - } else { - $conf['BASIC']['descriptionmsg'] = $info['descmsg']; - $conf['BASIC']['extensionurl'] = $info['url']; - } - - $conf['FILES']['class'] = 'JsonFFS'; - $conf['FILES']['sourcePattern'] = $this->path . '/' . $info['file']; - - // @todo Find a better way - if ( isset( $info['aliasfile'] ) ) { - $conf['FILES']['aliasFileSource'] = $this->path . '/' . $info['aliasfile']; - $conf['FILES']['aliasFile'] = $info['aliasfile']; - } - if ( isset( $info['magicfile'] ) ) { - $conf['FILES']['magicFileSource'] = $this->path . '/' . $info['magicfile']; - $conf['FILES']['magicFile'] = $info['magicfile']; - } - - if ( isset( $info['prefix'] ) ) { - $conf['MANGLER']['class'] = 'StringMatcher'; - $conf['MANGLER']['prefix'] = $info['prefix']; - $conf['MANGLER']['patterns'] = $info['mangle']; - - $mangler = new StringMatcher( $info['prefix'], $info['mangle'] ); - if ( isset( $info['ignored'] ) ) { - $info['ignored'] = $mangler->mangle( $info['ignored'] ); - } - if ( isset( $info['optional'] ) ) { - $info['optional'] = $mangler->mangle( $info['optional'] ); - } - } - - $conf['CHECKER']['class'] = 'MediaWikiMessageChecker'; - $conf['CHECKER']['checks'] = [ - 'pluralCheck', - 'pluralFormsCheck', - 'wikiParameterCheck', - 'wikiLinksCheck', - 'braceBalanceCheck', - 'pagenameMessagesCheck', - 'miscMWChecks', - ]; - - $conf['INSERTABLES']['class'] = 'MediaWikiInsertablesSuggester'; - - if ( isset( $info['optional'] ) ) { - $conf['TAGS']['optional'] = $info['optional']; - } - if ( isset( $info['ignored'] ) ) { - $conf['TAGS']['ignored'] = $info['ignored']; - } - - if ( isset( $info['languages'] ) ) { - $conf['LANGUAGES'] = [ - 'whitelist' => [], - 'blacklist' => [], - ]; - - foreach ( $info['languages'] as $tagSpec ) { - if ( preg_match( '/^([+-])?(.+)$/', $tagSpec, $m ) ) { - list( , $sign, $tag ) = $m; - if ( $sign === '+' ) { - $conf['LANGUAGES']['whitelist'][] = $tag; - } elseif ( $sign === '-' ) { - $conf['LANGUAGES']['blacklist'][] = $tag; - } else { - $conf['LANGUAGES']['blacklist'] = '*'; - $conf['LANGUAGES']['whitelist'][] = $tag; - } - } - } - } - - return MessageGroupBase::factory( $conf ); - } - - protected function parseFile() { - $defines = file_get_contents( $this->definitionFile ); - $linefeed = '(\r\n|\n)'; - $sections = array_map( - 'trim', - preg_split( "/$linefeed{2,}/", $defines, -1, PREG_SPLIT_NO_EMPTY ) - ); - $groups = []; - - foreach ( $sections as $section ) { - $lines = array_map( 'trim', preg_split( "/$linefeed/", $section ) ); - $newgroup = []; - - foreach ( $lines as $line ) { - if ( $line === '' || $line[0] === '#' ) { - continue; - } - - if ( strpos( $line, '=' ) === false ) { - if ( empty( $newgroup['name'] ) ) { - $newgroup['name'] = $line; - } else { - throw new MWException( 'Trying to define name twice: ' . $line ); - } - } else { - list( $key, $value ) = array_map( 'trim', explode( '=', $line, 2 ) ); - switch ( $key ) { - case 'aliasfile': - case 'desc': - case 'descmsg': - case 'file': - case 'id': - case 'magicfile': - case 'var': - $newgroup[$key] = $value; - break; - case 'optional': - case 'ignored': - case 'languages': - $values = array_map( 'trim', explode( ',', $value ) ); - if ( !isset( $newgroup[$key] ) ) { - $newgroup[$key] = []; - } - $newgroup[$key] = array_merge( $newgroup[$key], $values ); - break; - case 'prefix': - list( $prefix, $messages ) = array_map( - 'trim', - explode( '|', $value, 2 ) - ); - if ( isset( $newgroup['prefix'] ) && $newgroup['prefix'] !== $prefix ) { - throw new MWException( - "Only one prefix supported: {$newgroup['prefix']} !== $prefix" - ); - } - $newgroup['prefix'] = $prefix; - - if ( !isset( $newgroup['mangle'] ) ) { - $newgroup['mangle'] = []; - } - - $messages = array_map( 'trim', explode( ',', $messages ) ); - $newgroup['mangle'] = array_merge( $newgroup['mangle'], $messages ); - break; - default: - throw new MWException( 'Unknown key:' . $key ); - } - } - } - - if ( count( $newgroup ) ) { - if ( empty( $newgroup['name'] ) ) { - throw new MWException( "Name missing\n" . print_r( $newgroup, true ) ); - } - $groups[] = $newgroup; - } - } - - return $groups; - } - - protected function processGroups( $groups ) { - $configureData = $this->loadConfigureExtensionData(); - $fixedGroups = []; - foreach ( $groups as $g ) { - if ( !is_array( $g ) ) { - $g = [ $g ]; - } - - $name = $g['name']; - - if ( isset( $g['id'] ) ) { - $id = $g['id']; - } else { - $id = $this->idPrefix . preg_replace( '/\s+/', '', strtolower( $name ) ); - } - - if ( !isset( $g['file'] ) ) { - $file = preg_replace( '/\s+/', '', "$name/i18n/%CODE%.json" ); - } else { - $file = $g['file']; - } - - if ( isset( $g['descmsg'] ) ) { - $descmsg = $g['descmsg']; - } else { - $descmsg = str_replace( $this->idPrefix, '', $id ) . '-desc'; - } - - $configureId = self::foldId( $name ); - if ( isset( $configureData[$configureId]['url'] ) ) { - $url = $configureData[$configureId]['url']; - } else { - $url = false; - } - - $newgroup = [ - 'name' => $name, - 'file' => $file, - 'descmsg' => $descmsg, - 'url' => $url, - ]; - - $copyvars = [ - 'aliasfile', - 'desc', - 'ignored', - 'languages', - 'magicfile', - 'mangle', - 'optional', - 'prefix', - 'var', - ]; - - foreach ( $copyvars as $var ) { - if ( isset( $g[$var] ) ) { - $newgroup[$var] = $g[$var]; - } - } - - // Mark some fixed form optional messages automatically - if ( !isset( $newgroup['optional' ] ) ) { - $newgroup['optional'] = []; - } - - // Mark extension name and skin names optional. - $newgroup['optional'][] = '*-extensionname'; - $newgroup['optional'][] = 'skinname-*'; - - $fixedGroups[$id] = $newgroup; - } - - return $fixedGroups; - } - - protected function loadConfigureExtensionData() { - if ( !$this->useConfigure ) { - return []; - } - - global $wgAutoloadClasses; - - $postfix = 'Configure/load_txt_def/TxtDef.php'; - if ( !file_exists( "{$this->path}/$postfix" ) ) { - return []; - } - - $wgAutoloadClasses['TxtDef'] = "{$this->path}/$postfix"; - $tmp = TxtDef::loadFromFile( "{$this->path}/Configure/settings/Settings-ext.txt" ); - - return array_combine( - array_map( [ __CLASS__, 'foldId' ], array_keys( $tmp ) ), - array_values( $tmp ) - ); - } -} diff --git a/MLEB/Translate/ffs/PremadeIntuitionTextdomains.php b/MLEB/Translate/ffs/PremadeIntuitionTextdomains.php new file mode 100644 index 00000000..b1e494a1 --- /dev/null +++ b/MLEB/Translate/ffs/PremadeIntuitionTextdomains.php @@ -0,0 +1,104 @@ +idPrefix . $sanitizedName; + } + + if ( isset( $g['file'] ) ) { + $file = $g['file']; + } else { + // Canonical names for Intuition text-domains are lowercase + // eg. "MyTool" -> "mytool/en.json" + $file = "$sanitizedName/%CODE%.json"; + } + + if ( isset( $g['descmsg'] ) ) { + $descmsg = $g['descmsg']; + } else { + $descmsg = "$id-desc"; + } + + if ( isset( $g['url'] ) ) { + $url = $g['url']; + } else { + $url = false; + } + + $newgroup = [ + 'name' => 'Intuition - ' . $name, + 'file' => $file, + 'descmsg' => $descmsg, + 'url' => $url, + ]; + + // Prefix is required, if not customized use the sanitized name + if ( !isset( $g['prefix'] ) ) { + $g['prefix'] = "$sanitizedName-"; + } + + // All messages are prefixed with their groupname + $g['mangle'] = [ '*' ]; + + // Prevent E_NOTICE undefined index. + // PremadeMediawikiExtensionGroups::factory should probably check this better instead + if ( !isset( $g['ignored'] ) ) { + $g['ignored'] = []; + } + + if ( !isset( $g['optional'] ) ) { + $g['optional'] = []; + } + + $g['format'] = 'json'; + + $copyvars = [ + 'aliasfile', + 'desc', + 'format', + 'ignored', + 'magicfile', + 'mangle', + 'optional', + 'prefix', + 'var', + ]; + + foreach ( $copyvars as $var ) { + if ( isset( $g[$var] ) ) { + $newgroup[$var] = $g[$var]; + } + } + + $fixedGroups[$id] = $newgroup; + } + + return $fixedGroups; + } +} diff --git a/MLEB/Translate/ffs/PremadeMediawikiExtensionGroups.php b/MLEB/Translate/ffs/PremadeMediawikiExtensionGroups.php new file mode 100644 index 00000000..b57a2148 --- /dev/null +++ b/MLEB/Translate/ffs/PremadeMediawikiExtensionGroups.php @@ -0,0 +1,366 @@ +definitionFile = $def; + $this->path = $path; + } + + /** + * Whether to use the Configure extension to load extension home pages. + * + * @since 2012-03-22 + * @param bool $value Whether Configure should be used. + */ + public function setUseConfigure( $value ) { + $this->useConfigure = $value; + } + + /** + * How to prefix message group ids. + * + * @since 2012-03-22 + * @param string $value + */ + public function setGroupPrefix( $value ) { + $this->idPrefix = $value; + } + + /** + * Which namespace holds the messages. + * + * @since 2012-03-22 + * @param int $value + */ + public function setNamespace( $value ) { + $this->namespace = $value; + } + + /** + * Makes an group id from extension name + * @param string $name + * @return string + */ + public static function foldId( $name ) { + return preg_replace( '/\s+/', '', strtolower( $name ) ); + } + + /** + * Hook: TranslatePostInitGroups + * @param array &$list + * @param array &$deps + * @return true + */ + public function register( array &$list, array &$deps ) { + $groups = $this->parseFile(); + $groups = $this->processGroups( $groups ); + foreach ( $groups as $id => $g ) { + $list[$id] = $this->createMessageGroup( $id, $g ); + } + + $deps[] = new FileDependency( $this->definitionFile ); + + return true; + } + + /** + * Creates MediaWikiExtensionMessageGroup objects from parsed data. + * @param string $id unique group id already prefixed + * @param array $info array of group info + * @return MediaWikiExtensionMessageGroup + */ + protected function createMessageGroup( $id, $info ) { + $conf = []; + $conf['BASIC']['class'] = MediaWikiExtensionMessageGroup::class; + $conf['BASIC']['id'] = $id; + $conf['BASIC']['namespace'] = $this->namespace; + $conf['BASIC']['label'] = $info['name']; + + if ( isset( $info['desc'] ) ) { + $conf['BASIC']['description'] = $info['desc']; + } else { + $conf['BASIC']['descriptionmsg'] = $info['descmsg']; + $conf['BASIC']['extensionurl'] = $info['url']; + } + + $conf['FILES']['class'] = JsonFFS::class; + $conf['FILES']['sourcePattern'] = $this->path . '/' . $info['file']; + + // @todo Find a better way + if ( isset( $info['aliasfile'] ) ) { + $conf['FILES']['aliasFileSource'] = $this->path . '/' . $info['aliasfile']; + $conf['FILES']['aliasFile'] = $info['aliasfile']; + } + if ( isset( $info['magicfile'] ) ) { + $conf['FILES']['magicFileSource'] = $this->path . '/' . $info['magicfile']; + $conf['FILES']['magicFile'] = $info['magicfile']; + } + + if ( isset( $info['prefix'] ) ) { + $conf['MANGLER']['class'] = StringMatcher::class; + $conf['MANGLER']['prefix'] = $info['prefix']; + $conf['MANGLER']['patterns'] = $info['mangle']; + + $mangler = new StringMatcher( $info['prefix'], $info['mangle'] ); + if ( isset( $info['ignored'] ) ) { + $info['ignored'] = $mangler->mangleList( $info['ignored'] ); + } + if ( isset( $info['optional'] ) ) { + $info['optional'] = $mangler->mangleList( $info['optional'] ); + } + } + + $conf['VALIDATORS'] = [ + [ 'id' => 'BraceBalance' ], + [ 'id' => 'MediaWikiLink' ], + [ 'id' => 'MediaWikiPageName' ], + [ 'id' => 'MediaWikiParameter' ], + [ 'id' => 'MediaWikiPlural' ], + ]; + + $conf['INSERTABLES']['class'] = MediaWikiInsertablesSuggester::class; + + if ( isset( $info['optional'] ) ) { + $conf['TAGS']['optional'] = $info['optional']; + } + if ( isset( $info['ignored'] ) ) { + $conf['TAGS']['ignored'] = $info['ignored']; + } + + if ( isset( $info['languages'] ) ) { + $conf['LANGUAGES'] = [ + 'whitelist' => [], + 'blacklist' => [], + ]; + + foreach ( $info['languages'] as $tagSpec ) { + if ( preg_match( '/^([+-])?(.+)$/', $tagSpec, $m ) ) { + list( , $sign, $tag ) = $m; + if ( $sign === '+' ) { + $conf['LANGUAGES']['whitelist'][] = $tag; + } elseif ( $sign === '-' ) { + $conf['LANGUAGES']['blacklist'][] = $tag; + } else { + $conf['LANGUAGES']['blacklist'] = '*'; + $conf['LANGUAGES']['whitelist'][] = $tag; + } + } + } + } + + return MessageGroupBase::factory( $conf ); + } + + protected function parseFile() { + $defines = file_get_contents( $this->definitionFile ); + $linefeed = '(\r\n|\n)'; + $sections = array_map( + 'trim', + preg_split( "/$linefeed{2,}/", $defines, -1, PREG_SPLIT_NO_EMPTY ) + ); + $groups = []; + + foreach ( $sections as $section ) { + $lines = array_map( 'trim', preg_split( "/$linefeed/", $section ) ); + $newgroup = []; + + foreach ( $lines as $line ) { + if ( $line === '' || $line[0] === '#' ) { + continue; + } + + if ( strpos( $line, '=' ) === false ) { + if ( empty( $newgroup['name'] ) ) { + $newgroup['name'] = $line; + } else { + throw new MWException( 'Trying to define name twice: ' . $line ); + } + } else { + list( $key, $value ) = array_map( 'trim', explode( '=', $line, 2 ) ); + switch ( $key ) { + case 'aliasfile': + case 'desc': + case 'descmsg': + case 'file': + case 'id': + case 'magicfile': + case 'var': + $newgroup[$key] = $value; + break; + case 'optional': + case 'ignored': + case 'languages': + $values = array_map( 'trim', explode( ',', $value ) ); + if ( !isset( $newgroup[$key] ) ) { + $newgroup[$key] = []; + } + $newgroup[$key] = array_merge( $newgroup[$key], $values ); + break; + case 'prefix': + list( $prefix, $messages ) = array_map( + 'trim', + explode( '|', $value, 2 ) + ); + if ( isset( $newgroup['prefix'] ) && $newgroup['prefix'] !== $prefix ) { + throw new MWException( + "Only one prefix supported: {$newgroup['prefix']} !== $prefix" + ); + } + $newgroup['prefix'] = $prefix; + + if ( !isset( $newgroup['mangle'] ) ) { + $newgroup['mangle'] = []; + } + + $messages = array_map( 'trim', explode( ',', $messages ) ); + $newgroup['mangle'] = array_merge( $newgroup['mangle'], $messages ); + break; + default: + throw new MWException( 'Unknown key:' . $key ); + } + } + } + + if ( count( $newgroup ) ) { + if ( empty( $newgroup['name'] ) ) { + throw new MWException( "Name missing\n" . print_r( $newgroup, true ) ); + } + $groups[] = $newgroup; + } + } + + return $groups; + } + + protected function processGroups( $groups ) { + $configureData = $this->loadConfigureExtensionData(); + $fixedGroups = []; + foreach ( $groups as $g ) { + $name = $g['name']; + + if ( isset( $g['id'] ) ) { + $id = $g['id']; + } else { + $id = $this->idPrefix . preg_replace( '/\s+/', '', strtolower( $name ) ); + } + + if ( !isset( $g['file'] ) ) { + $file = preg_replace( '/\s+/', '', "$name/i18n/%CODE%.json" ); + } else { + $file = $g['file']; + } + + if ( isset( $g['descmsg'] ) ) { + $descmsg = $g['descmsg']; + } else { + $descmsg = str_replace( $this->idPrefix, '', $id ) . '-desc'; + } + + $configureId = self::foldId( $name ); + if ( isset( $configureData[$configureId]['url'] ) ) { + $url = $configureData[$configureId]['url']; + } else { + $url = false; + } + + $newgroup = [ + 'name' => $name, + 'file' => $file, + 'descmsg' => $descmsg, + 'url' => $url, + ]; + + $copyvars = [ + 'aliasfile', + 'desc', + 'ignored', + 'languages', + 'magicfile', + 'mangle', + 'optional', + 'prefix', + 'var', + ]; + + foreach ( $copyvars as $var ) { + if ( isset( $g[$var] ) ) { + $newgroup[$var] = $g[$var]; + } + } + + // Mark some fixed form optional messages automatically + if ( !isset( $newgroup['optional' ] ) ) { + $newgroup['optional'] = []; + } + + // Mark extension name and skin names optional. + $newgroup['optional'][] = '*-extensionname'; + $newgroup['optional'][] = 'skinname-*'; + + $fixedGroups[$id] = $newgroup; + } + + return $fixedGroups; + } + + protected function loadConfigureExtensionData() { + if ( !$this->useConfigure ) { + return []; + } + + global $wgAutoloadClasses; + + $postfix = 'Configure/load_txt_def/TxtDef.php'; + if ( !file_exists( "{$this->path}/$postfix" ) ) { + return []; + } + + $wgAutoloadClasses['TxtDef'] = "{$this->path}/$postfix"; + // @phan-suppress-next-line PhanUndeclaredClassMethod Autoloaded above + $tmp = TxtDef::loadFromFile( "{$this->path}/Configure/settings/Settings-ext.txt" ); + + return array_combine( + array_map( [ __CLASS__, 'foldId' ], array_keys( $tmp ) ), + array_values( $tmp ) + ); + } +} diff --git a/MLEB/Translate/ffs/SimpleFFS.php b/MLEB/Translate/ffs/SimpleFFS.php index 53bc9b71..743444b9 100644 --- a/MLEB/Translate/ffs/SimpleFFS.php +++ b/MLEB/Translate/ffs/SimpleFFS.php @@ -37,8 +37,8 @@ class SimpleFFS implements FFS { */ protected $extra; - const RECORD_SEPARATOR = "\0"; - const PART_SEPARATOR = "\0\0\0\0"; + private const RECORD_SEPARATOR = "\0"; + private const PART_SEPARATOR = "\0\0\0\0"; public function __construct( FileBasedMessageGroup $group ) { $this->setGroup( $group ); @@ -122,6 +122,9 @@ class SimpleFFS implements FFS { $input = Validator::cleanUp( $input ); + // Strip BOM mark + $input = ltrim( $input, "\u{FEFF}" ); + try { return $this->readFromVariable( $input ); } catch ( Exception $e ) { @@ -164,7 +167,7 @@ class SimpleFFS implements FFS { $messages[$key] = $message; } - $messages = $this->group->getMangler()->mangle( $messages ); + $messages = $this->group->getMangler()->mangleArray( $messages ); return [ 'AUTHORS' => $authors, @@ -271,7 +274,13 @@ class SimpleFFS implements FFS { * @param MessageCollection $collection */ protected function tryReadSource( $filename, MessageCollection $collection ) { - if ( get_class( $this->group->getFFS() ) !== get_class( $this ) ) { + $ffs = $this->group->getFFS(); + + if ( $ffs === null ) { + return; + } + + if ( get_class( $ffs ) !== get_class( $this ) ) { return; } diff --git a/MLEB/Translate/ffs/XliffFFS.php b/MLEB/Translate/ffs/XliffFFS.php index cef5d5bb..dfae7d3f 100644 --- a/MLEB/Translate/ffs/XliffFFS.php +++ b/MLEB/Translate/ffs/XliffFFS.php @@ -87,7 +87,7 @@ class XliffFFS extends SimpleFFS { } return [ - 'MESSAGES' => $mangler->mangle( $messages ), + 'MESSAGES' => $mangler->mangleArray( $messages ), ]; } @@ -115,10 +115,10 @@ class XliffFFS extends SimpleFFS { /** * Gets the html inside en element without the element itself. * - * @param DomElement $node + * @param DOMElement $node * @return string */ - public static function getInnerXml( DomElement $node ) { + public static function getInnerXml( DOMElement $node ) { $text = ''; foreach ( $node->childNodes as $child ) { $text .= $child->ownerDocument->saveXML( $child ); diff --git a/MLEB/Translate/ffs/YamlFFS.php b/MLEB/Translate/ffs/YamlFFS.php index 8d2096fa..240dd08e 100644 --- a/MLEB/Translate/ffs/YamlFFS.php +++ b/MLEB/Translate/ffs/YamlFFS.php @@ -8,6 +8,9 @@ * @ingroup FFS */ class YamlFFS extends SimpleFFS implements MetaYamlSchemaExtender { + /** @var ArrayFlattener */ + private $flattener; + /** * @param FileBasedMessageGroup $group */ @@ -31,15 +34,15 @@ class YamlFFS extends SimpleFFS implements MetaYamlSchemaExtender { $authors = $matches[1]; // Then messages. - $messages = TranslateYaml::loadString( $data ); + $messages = TranslateYaml::loadString( $data ) ?? []; // Some groups have messages under language code if ( isset( $this->extra['codeAsRoot'] ) ) { - $messages = array_shift( $messages ); + $messages = array_shift( $messages ) ?? []; } $messages = $this->flatten( $messages ); - $messages = $this->group->getMangler()->mangle( $messages ); + $messages = $this->group->getMangler()->mangleArray( $messages ); foreach ( $messages as &$value ) { $value = rtrim( $value, "\n" ); } @@ -134,13 +137,11 @@ class YamlFFS extends SimpleFFS implements MetaYamlSchemaExtender { * Obtains object used to flatten and unflatten arrays. In this implementation * we use the ArrayFlattener class which also supports CLDR pluralization rules. * - * @return object with flatten, unflatten methods + * @return ArrayFlattener with flatten, unflatten methods */ protected function getFlattener() { - $nestingSeparator = isset( $this->extra['nestingSeparator'] ) ? - $this->extra['nestingSeparator'] : '.'; - $parseCLDRPlurals = isset( $this->extra['parseCLDRPlurals'] ) ? - $this->extra['parseCLDRPlurals'] : false; + $nestingSeparator = $this->extra['nestingSeparator'] ?? '.'; + $parseCLDRPlurals = $this->extra['parseCLDRPlurals'] ?? false; // Instantiate helper class for flattening and unflattening nested arrays return new ArrayFlattener( $nestingSeparator, $parseCLDRPlurals ); diff --git a/MLEB/Translate/hooks.txt b/MLEB/Translate/hooks.txt index e026085c..62f31b1f 100644 --- a/MLEB/Translate/hooks.txt +++ b/MLEB/Translate/hooks.txt @@ -20,19 +20,10 @@ For a guide to PHP hooks, navigate to your root MediaWiki directory, and then find docs/hooks.txt. === JavaScript hooks === -JavaScript hooks for the Translate extension are a little different. To use -them, declare a dependency on ext.translate.hooks: +JavaScript hooks for the Translate extension use the standard mw.hook API provided +by MediaWiki. - $wgResourceModules['...'] = array( - 'scripts' => '...js', - 'dependencies' => array( 'ext.translate.hooks' ), - ); - -And then in that module use: - mw.translateHooks.add( name, hookFunction ); - -where name is a string, but hookFunction is not (unlike in the case of PHP hooks) -but rather a function reference. Return values from JavaScript hooks are ignored. +Hooks are prefixed with mw.translate as a convention. == Events and parameters == @@ -102,6 +93,9 @@ Post processing step to format in wiki array &$deps: List of dependencies as supported by DependecyWrapper class from MediaWiki array &$autoload: List of autoloaded classes. Key is the name of the class and value is filename. +;TranslateInitGroupLoaders: Hook to register new message group loaders that can then load MessageGroups for translation purpose. + array &$groupLoader: List of message group loader class names that implement the MessageGroupLoader + ;TranslatePrefillTranslation: Provides an opportunity for a new translation to start not from as a carte blanche (the default) but from some prefilled string string &$translation: The translation string as it stands MessageHandle $handle: The current MessageHandle object @@ -119,20 +113,27 @@ Post processing step to format in wiki ;TranslateTranslationAids: Make new translation aids available to any message group (which must choose an implementation in its getTranslationAids() method). array &$types: List of translation aid identifiers, numerically indexed +;Translate:modifyMessageGroupStates: Allow hooks to change workflow states depending on the group's ID. + string $groupId: ID of the current message group. + array &$conf: Workflow states, can be modified. + === JavaScript events === -;afterSubmit: Provides an opportunity to modify a Translate translation form immediately after it is submitted +;mw.translate.editor.afterSubmit: Provides an opportunity to modify a Translate translation form immediately after it is submitted jQuery form: The form that has just been submitted -;afterEditorShown: Provides an opportunity to manipulate the editing interface once it's shown +;mw.translate.editor.afterEditorShown: Provides an opportunity to manipulate the editing interface once it's shown jQuery translateEditor.$editor: The current translation-editing form -;beforeSubmit: Provides an opportunity to modify a Translate translation form immediately before it is submitted +;mw.translate.editor.beforeSubmit: Provides an opportunity to modify a Translate translation form immediately before it is submitted jQuery form: The form being submitted -;formatMessageBeforeTable: Provides an opportunity to manipulate the display of translation strings (messages) in the main table +;mw.translate.messagetable.formatMessageBeforeTable: Provides an opportunity to manipulate the display of translation strings (messages) in the main table object message: The message object, with a range of useful (and manipulable) properties -;showTranslationHelpers: Provides an opportunity to handle custom translation helpers +;mw.translate.editor.showTranslationHelpers: Provides an opportunity to handle custom translation helpers object result.helpers: JSON subset focusing on the helpers returned e.g. result.helpers.definition jQuery translateEditor.$editor: The current translation-editing form + +;wikipage.content: See this hook in MediaWiki core. Fired for message documentation in the translation editor. + jQuery $content diff --git a/MLEB/Translate/i18n/api/ar.json b/MLEB/Translate/i18n/api/ar.json index 99fce547..aed14838 100644 --- a/MLEB/Translate/i18n/api/ar.json +++ b/MLEB/Translate/i18n/api/ar.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ - "محمد أحمد عبد الفتاح", "Meno25", - "ديفيد" + "ديفيد", + "محمد أحمد عبد الفتاح" ] }, "apihelp-aggregategroups-description": "إدارة مجموعات الرسائل المجمعة.\n\nأنت يمكنك إضافة وإزالة مجموعات الرسائل المجمعة وجعل مجموعات الرسائل مقترنة أو غير مقترنة بها (واحدة كل مرة).", @@ -27,6 +27,12 @@ "apihelp-query+languagestats-param-language": "كود اللغة.", "apihelp-query+languagestats-example-1": "قائمة إحصاءات إكمال الترجمة للفنلندية", "apihelp-query+messagecollection-description": "استعلم MessageCollection حول الترجمات.", + "apihelp-query+managemessagegroups-summary": "إحضار عمليات إعادة تسمية محتملة لرسالة في مجموعة أثناء عمليات الاستيراد", + "apihelp-query+managemessagegroups-description": "إحضار عمليات إعادة تسمية محتملة لرسالة في مجموعة أثناء عمليات الاستيراد", + "apihelp-query+managemessagegroups-param-groupId": "معرف المجموعة", + "apihelp-query+managemessagegroups-param-messageKey": "مفتاح الرسالة", + "apihelp-query+managemessagegroups-param-changesetName": "تغيير اسم المجموعة - الافتراضي / غير المراقب / ميدياويكي إلخ", + "apihelp-query+managemessagegroups-example-1": "إحضار عمليات إعادة تسمية ممكنة للمفتاح المحدد في المجموعة المحددة", "apihelp-query+messagecollection-summary": "استعلام MessageCollection حول الترجمات.", "apihelp-query+messagecollection-param-group": "مجموعة الرسائل.", "apihelp-query+messagecollection-param-language": "كود اللغة.", @@ -57,6 +63,14 @@ "apihelp-query+messagetranslations-summary": "الاستعلام عن كل الترجمات لرسالة واحدة.", "apihelp-query+messagetranslations-param-title": "العنوان الكامل لرسالة معروفة.", "apihelp-query+messagetranslations-example-1": "قائمة بالترجمات في الويكي عن \"MediaWiki:January\"", + "apihelp-managemessagegroups-description": "أضف رسالة إعادة تسمية لرسالة موجودة أو رسالة جديدة في المجموعة أثناء الاستيراد", + "apihelp-managemessagegroups-summary": "أضف رسالة إعادة تسمية لرسالة موجودة أو رسالة جديدة في المجموعة أثناء الاستيراد", + "apihelp-managemessagegroups-param-groupId": "معرف المجموعة", + "apihelp-managemessagegroups-param-renameMessageKey": "مفتاح الرسالة المستهدفة تجري إعادة تسميته", + "apihelp-managemessagegroups-param-messageKey": "استبدال مفتاح الرسالة", + "apihelp-managemessagegroups-param-operation": "العملية التي يتعين القيام بها. القيم المحتملة - إعادة تسمية / جديد", + "apihelp-managemessagegroups-param-changesetName": "تغيير اسم المجموعة - الافتراضي / غير المراقب / ميدياويكي إلخ", + "apihelp-managemessagegroups-param-changesetModified": "الطابع الزمني ليونيكس عندما تم تعديل آخر مجموعة تغييرات، إذا تم تعديل مجموعة التغييرات بعد هذا، فسوف ترمي API خطأ.", "apihelp-translatesandbox-description": "سجل الدخول وأدر المستخدمين في الملعب.", "apihelp-translatesandbox-summary": "سجل الدخول وأدر المستخدمين في الملعب.", "apihelp-translatesandbox-param-do": "ما يجب فعله.", @@ -108,6 +122,7 @@ "apihelp-translationcheck-summary": "التحقق من صحة الترجمات.", "apihelp-translationcheck-param-title": "عنوان الصفحة بالنطاق ورمز اللغة.", "apihelp-translationcheck-param-translation": "ترجمة للتحقق.", + "apierror-translate-changeset-modified": "تم تعديل مجموعة التغييرات بواسطة مستخدم أو عملية أخرى، لا يمكن حفظ تغييراتك لأنها قد تتجاوز تغييراتها، يُرجَى تحديث الصفحة لرؤية آخر التغييرات.", "apierror-translate-duplicateaggregategroup": "مجموعة الرسائل موجودة بالفعل", "apierror-translate-fuzzymessage": "لا يمكن مراجعة الترجمات الضبابية", "apierror-translate-groupreviewdisabled": "مراجعة مجموعة الرسائل غير مستخدمة.", @@ -119,13 +134,20 @@ "apierror-translate-invalidupdate": "تحديث غير صالح", "apierror-translate-language-disabled": "الترجمة إلى $1 معطلة.", "apierror-translate-language-disabled-reason": "الترجمة إلى $1 معطلة:$2", - "apierror-translate-language-disabled-source": "لغة المصدر لهذه المجموعة هي $1; يُرجَى تحديد لغة أخرى للترجمة إليها.", "apierror-translate-nodynamicgroups": "مجموعات الرسائل الديناميكية غير مدعومة هنا", "apierror-translate-nomessagefortitle": "العنوان لا يتوافق مع رسالة قابلة للترجمة", "apierror-translate-notranslationservices": "لم يتم تكوين أية خدمات ترجمة عامة; يحتاج إداري الويكي إلى تعيين $wgTranslateTranslationServices بشكل مناسب قبل استخدام هذه الميزة.", "apierror-translate-owntranslation": "لا يمكن مراجعة الترجمات الخاصة", "apierror-translate-sandboxdisabled": "ميزة الملعب ليست قيد الاستخدام", "apierror-translate-sandbox-invalidppassword": "كلمة سر خاطئة", + "apierror-translate-smg-nochanges": "لا توجد تغييرات لمعالجتها.", "apierror-translate-unknownmessage": "رسالة غير معروفة", - "apiwarn-translate-alreadyreviewedbyyou": "تم تعليمها كمراجعة من قبلك" + "apierror-translate-invalid-changeset-name": "تم تمرير اسم ملف مجموعة التغييرات غير صالح - $1", + "apierror-translate-invalid-operation": "عملية غير صالحة: $1، قيم صالحة - $2.", + "apierror-translate-addition-key-invalid": "لم يتم العثور على مفتاح الرسالة الذي تم تمريره للإضافة في قائمة الرسائل التي تمت إعادة تسميتها للغة المصدر.", + "apierror-translate-rename-msg-new": "يمكن فقط إضافة الرسائل المعادة تسميتها كرسائل جديدة.", + "apierror-translate-rename-key-invalid": "لم يتم العثور على مفاتيح الرسائل التي تم تمريرها لإعادة التسمية في قائمة التغييرات للغة المصدر.", + "apierror-translate-rename-state-invalid": "تجب إضافة إحدى الرسائل التي تم تمريرها لإعادة التسمية مؤخرا وحذف الرسالة الأخر، الحالات الحالية، الإضافة: $1 والحذف: $2.", + "apiwarn-translate-alreadyreviewedbyyou": "تم تعليمها كمراجعة من قبلك", + "apiwarn-translate-language-disabled-source": "لغة المصدر لهذه المجموعة هي $1; يُرجَى تحديد لغة أخرى للترجمة إليها." } diff --git a/MLEB/Translate/i18n/api/ast.json b/MLEB/Translate/i18n/api/ast.json index 511ed458..4a2bede9 100644 --- a/MLEB/Translate/i18n/api/ast.json +++ b/MLEB/Translate/i18n/api/ast.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Xuacu", - "Fitoschido" + "Fitoschido", + "Xuacu" ] }, "apihelp-aggregategroups-description": "Xestionar grupos de mensaxes agregaos.\n\nPues amestar y desaniciar grupos de mensaxes agregaos y asociar o disociar grupos de mensaxes d'ellos (unu de cada vez).", @@ -118,7 +118,6 @@ "apierror-translate-invalidupdate": "Anovamientu inválidu", "apierror-translate-language-disabled": "La traducción a $1 ta desactivada", "apierror-translate-language-disabled-reason": "La traducción a $1 ta desactivada: $2", - "apierror-translate-language-disabled-source": "L'idioma orixinal d'esti grupu ye $1. Escueye otru idioma al que traducir.", "apierror-translate-nodynamicgroups": "Nun s'almiten equí los grupos de mensaxes dinámicos", "apierror-translate-nomessagefortitle": "El títulu nun casa con un mensaxe traducible", "apierror-translate-notranslationservices": "Nun se configuró nengún serviciu públicu de traducciones. L'alministrador de la wiki tien de configurar $wgTranslateTranslationServices afechiscamente pa poder utilizar esta función.", @@ -126,5 +125,6 @@ "apierror-translate-sandboxdisabled": "La función de zona de pruebes nun ta n'usu", "apierror-translate-sandbox-invalidppassword": "Contraseña inválida", "apierror-translate-unknownmessage": "Mensaxe desconocíu", - "apiwarn-translate-alreadyreviewedbyyou": "Yá ta marcada como revisada por ti" + "apiwarn-translate-alreadyreviewedbyyou": "Yá ta marcada como revisada por ti", + "apiwarn-translate-language-disabled-source": "L'idioma orixinal d'esti grupu ye $1. Escueye otru idioma al que traducir." } diff --git a/MLEB/Translate/i18n/api/be-tarask.json b/MLEB/Translate/i18n/api/be-tarask.json index 2c481705..b2255872 100644 --- a/MLEB/Translate/i18n/api/be-tarask.json +++ b/MLEB/Translate/i18n/api/be-tarask.json @@ -5,5 +5,6 @@ ] }, "apihelp-translationreview-description": "Пазначыць пераклады як правераныя.", - "apihelp-translationreview-summary": "Пазначыць пераклады як правераныя." + "apihelp-translationreview-summary": "Пазначыць пераклады як правераныя.", + "apierror-translate-nomessagefortitle": "Загаловак не адпавядае перакладному паведамленьню" } diff --git a/MLEB/Translate/i18n/api/bg.json b/MLEB/Translate/i18n/api/bg.json index 59c27fa4..2ce13a34 100644 --- a/MLEB/Translate/i18n/api/bg.json +++ b/MLEB/Translate/i18n/api/bg.json @@ -1,27 +1,61 @@ { "@metadata": { "authors": [ - "StanProg" + "StanProg", + "Vlad5250" ] }, + "apihelp-aggregategroups-summary": "Управление на обобщени групи съобщения.", + "apihelp-aggregategroups-param-aggregategroup": "ID на обобщената група съобщения.", "apihelp-aggregategroups-param-group": "ID на група съобщения.", + "apihelp-aggregategroups-param-groupname": "Название на обобщената групата съобщения.", + "apihelp-aggregategroups-param-groupdescription": "Описание на обобщената група съобщения.", + "apihelp-aggregategroups-example-1": "Асоцииране на група", + "apihelp-groupreview-description": "Задаване състояния на работния процес на групата съобщения.", + "apihelp-groupreview-summary": "Задаване състояния на работния процес на групата съобщения.", "apihelp-groupreview-param-group": "Група съобщения.", "apihelp-groupreview-param-language": "Езиков код.", - "apihelp-groupreview-example-1": "Отбелязване на състоянието на немския превод за групата съобщения „group-Example“ като готов", + "apihelp-groupreview-param-state": "Новото състояние на групата.", + "apihelp-groupreview-example-1": "Отбелязване на състоянието на немския превод за групата съобщения „група-Пример“ като готов", "apihelp-query+languagestats-param-language": "Езиков код.", "apihelp-query+messagecollection-param-group": "Група съобщения.", "apihelp-query+messagecollection-param-language": "Езиков код.", "apihelp-query+messagecollection-param-limit": "Колко съобщения да бъдат показани (след филтриране).", "apihelp-query+messagecollection-example-1": "Списък на поддържаните езици", + "apihelp-query+messagecollection-example-2": "Списък на задължителните дефиниции на съобщения за група „page-Example“", + "apihelp-query+messagecollection-example-4": "Повече информация за най-новите версии на превода за групата „page-Example“", + "apihelp-query+messagegroups-summary": "Връщане на информация за групи съобщения.", "apihelp-query+messagegroups-example-1": "Показване на групите съобщения", + "apihelp-query+messagegroupstats-description": "Заявка към статистиката на група съобщения.", + "apihelp-query+messagegroupstats-summary": "Заявка към статистиката на група съобщения.", "apihelp-query+messagegroupstats-param-group": "ID на група съобщения.", + "apihelp-query+messagetranslations-example-1": "Списък на преводи в уикито за „MediaWiki:January“", + "apihelp-translatesandbox-description": "Регистрация и управление на потребители в пясъчника.", + "apihelp-translatesandbox-summary": "Регистрация и управление на потребители в пясъчника.", + "apihelp-translatesandbox-param-username": "Потребителско име при създаване на потребителя.", + "apihelp-translatesandbox-param-password": "Парола при създаване на потребителя.", + "apihelp-translatesandbox-param-email": "Е-поща при създаване на потребителя.", "apihelp-translationreview-description": "Отбелязване на преводите като проверени.", + "apihelp-translationreview-summary": "Отбелязване на преводите като проверени.", + "apihelp-translationreview-example-1": "Оценка на редакция 1", "apihelp-translationstash-param-subaction": "Действие.", + "apihelp-translationstash-param-title": "Заглавие на страницата на преводната единица.", + "apihelp-translationstash-param-translation": "Превод, направен от потребителя.", "apihelp-translationstash-param-metadata": "JSON-обект.", "apihelp-searchtranslations-description": "Търсене на преводи.", "apihelp-searchtranslations-summary": "Търсене на преводи.", "apihelp-searchtranslations-param-limit": "Размер на резултата.", "apihelp-searchtranslations-example-1": "Показване на преводи на този език.", + "apihelp-translationcheck-summary": "Потвърждаване на преводи.", + "apihelp-translationcheck-param-translation": "Превод за потвърждение.", "apierror-translate-duplicateaggregategroup": "Групата съобщения вече съществува", - "apierror-translate-sandbox-invalidppassword": "Невалидна парола" + "apierror-translate-invalidgroup": "Групата не съществува или е невалидна", + "apierror-translate-invalidstate": "Заявеното състояние е невалидно.", + "apierror-translate-invalidlanguage": "Заявеният език е невалиден.", + "apierror-translate-invalidupdate": "Невалидно обновяване", + "apierror-translate-language-disabled": "Превеждането на $1 е деактивирано.", + "apierror-translate-language-disabled-reason": "Превеждането на $1 е деактивирано: $2", + "apierror-translate-owntranslation": "Не можете да проверявате свои преводи", + "apierror-translate-sandbox-invalidppassword": "Невалидна парола", + "apierror-translate-unknownmessage": "Неизвестно съобщение" } diff --git a/MLEB/Translate/i18n/api/bs.json b/MLEB/Translate/i18n/api/bs.json index a0d72d14..eaba88b9 100644 --- a/MLEB/Translate/i18n/api/bs.json +++ b/MLEB/Translate/i18n/api/bs.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Srdjan m" + "Srdjan m", + "Srđan" ] }, "apihelp-aggregategroups-description": "Upravljanje zbirnim grupama poruka.\n\nMožete dodavati i uklanjati zbirne grupe poruka i pridruživati ili odstranjivati iz zbirnih poruka (jednu po jednu).", @@ -111,12 +112,12 @@ "apierror-translate-invalidstate": "Traženo stanje nije ispravno.", "apierror-translate-invalidupdate": "Neispravno ažuriranje", "apierror-translate-language-disabled": "Prijevod na ovaj jezik je onemogućen", - "apierror-translate-language-disabled-source": "Izvorni jezik ove grupe je $1. Izaberite jezik na koji želite prevoditi.", "apierror-translate-nodynamicgroups": "Dinamičke grupe poruka ovdje nisu podržane", "apierror-translate-nomessagefortitle": "Naslov ne odgovara prevodivoj poruci", "apierror-translate-owntranslation": "Ne možete pregledati vlastite prijevode", "apierror-translate-sandboxdisabled": "Funkcija pijeska nije u upotrebi", "apierror-translate-sandbox-invalidppassword": "Neispravna lozinka", "apierror-translate-unknownmessage": "Nepoznata poruka", - "apiwarn-translate-alreadyreviewedbyyou": "Već ste je označili pregledanom" + "apiwarn-translate-alreadyreviewedbyyou": "Već ste je označili pregledanom", + "apiwarn-translate-language-disabled-source": "Izvorni jezik ove grupe je $1. Izaberite jezik na koji želite prevoditi." } diff --git a/MLEB/Translate/i18n/api/ca.json b/MLEB/Translate/i18n/api/ca.json index 774811b1..35bfbdc7 100644 --- a/MLEB/Translate/i18n/api/ca.json +++ b/MLEB/Translate/i18n/api/ca.json @@ -2,18 +2,33 @@ "@metadata": { "authors": [ "Alvaro Vidal-Abarca", - "Fitoschido" + "Fitoschido", + "Jlrb+" ] }, "apihelp-aggregategroups-example-1": "Associar un grup", "apihelp-groupreview-param-language": "Codi d'idioma.", "apihelp-query+languagestats-param-language": "Codi d'idioma.", + "apihelp-query+managemessagegroups-summary": "Cerca possibles rebateigs per a un missatge en un grup durant les importacions", + "apihelp-query+managemessagegroups-description": "Cerca possibles rebateigs per a un missatge en un grup durant les importacions", + "apihelp-query+managemessagegroups-param-groupId": "Id del grup", + "apihelp-query+managemessagegroups-param-messageKey": "Clau de missatge", + "apihelp-query+managemessagegroups-param-changesetName": "Canvia el nom del conjunt - Per defecte / No atès / Mediawiki etc.", + "apihelp-query+managemessagegroups-example-1": "Cerca possibles rebateigs per a la clau donada en el grup donat.", "apihelp-query+messagecollection-param-group": "Grup de missatges.", "apihelp-query+messagecollection-param-language": "Codi d'idioma.", "apihelp-query+messagecollection-param-limit": "Quantitat de missatges a mostrar (després de filtrar).", "apihelp-query+messagecollection-example-1": "Llista d'idiomes suportats", "apihelp-query+messagetranslations-description": "Consulta totes les traduccions per a un sol missatge.", "apihelp-query+messagetranslations-param-title": "El títol complet d'un missatge conegut.", + "apihelp-managemessagegroups-description": "Afegeix un missatge com a rebateig d'un missatge existent o d'un missatge nou en el grup durant les importacions", + "apihelp-managemessagegroups-summary": "Afegeix un missatge com a rebateig d'un missatge existent o d'un missatge nou en el grup durant les importacions", + "apihelp-managemessagegroups-param-groupId": "Id del grup", + "apihelp-managemessagegroups-param-renameMessageKey": "S'està rebatejant la clau de missatge objectiu", + "apihelp-managemessagegroups-param-messageKey": "Clau de missatge de substitució", + "apihelp-managemessagegroups-param-operation": "L'operació que ha de ser executada. Possibles valors - rebateja / nou", + "apihelp-managemessagegroups-param-changesetName": "Canvia el nom del conjunt - Per defecte / No atès / Mediawiki etc.", + "apihelp-managemessagegroups-param-changesetModified": "Segell de temps Unix de la darrera modificació del conjunt de canvis. Si el conjunt de canvis s'ha modificat posteriorment, l'API donarà error.", "apihelp-translatesandbox-param-do": "Què fer.", "apihelp-translatesandbox-param-username": "Nom d'usuari a l'hora de crear l'usuari.", "apihelp-translationaids-description": "Consulta totes les ajudes de traducció.", @@ -21,5 +36,13 @@ "apihelp-ttmserver-param-targetlanguage": "Un codi d'idioma de la proposta.", "apihelp-ttmserver-param-text": "El text per trobar suggeriments.", "apihelp-ttmserver-example-1": "Obtenir suggeriments per a la traducció de \"Ajuda\" de l'anglès al finès", - "apierror-translate-sandbox-invalidppassword": "La contrasenya no és vàlida" + "apierror-translate-changeset-modified": "Un altre usuari o procés ha modificat aquest conjunt de canvis. Els teus canvis no es poden desar perquè eliminaria els seus canvis. Refresca la pàgina per a veure els darrers canvis.", + "apierror-translate-sandbox-invalidppassword": "La contrasenya no és vàlida", + "apierror-translate-smg-nochanges": "No hi ha cap canvi per a processar.", + "apierror-translate-invalid-changeset-name": "Ha passat un conjunt de canvis amb nom no vàlid - $1", + "apierror-translate-invalid-operation": "Operació no vàlida: $1. Valors vàlids - $2.", + "apierror-translate-addition-key-invalid": "El missatge clau passat per a afegir no s'ha trobat en la llista de missatges de la llengua font.", + "apierror-translate-rename-msg-new": "Només els missatges rebatejats es poden afegir com a nous missatges", + "apierror-translate-rename-key-invalid": "No s'han trobat les claus de missatge passades per a rebateig en la llista de canvis per a la llengua font.", + "apierror-translate-rename-state-invalid": "Cal tornar a afegir un dels missatges acceptats per a rebateig i esborrar l'altre. Estats actuals - afegir: $1 i esborrar $2" } diff --git a/MLEB/Translate/i18n/api/ckb.json b/MLEB/Translate/i18n/api/ckb.json index 38e10556..8393c2a4 100644 --- a/MLEB/Translate/i18n/api/ckb.json +++ b/MLEB/Translate/i18n/api/ckb.json @@ -4,5 +4,5 @@ "Épine" ] }, - "apierror-translate-language-disabled-source": "سەرچاوەی زمانی ئەم گرووپە $1ە. تکایە زمانێکی تر ھەڵبژێرە بۆ وەرگێڕان بۆی." + "apiwarn-translate-language-disabled-source": "سەرچاوەی زمانی ئەم گرووپە $1ە. تکایە زمانێکی تر ھەڵبژێرە بۆ وەرگێڕان بۆی." } diff --git a/MLEB/Translate/i18n/api/cs.json b/MLEB/Translate/i18n/api/cs.json index 6cb2d230..52a8836b 100644 --- a/MLEB/Translate/i18n/api/cs.json +++ b/MLEB/Translate/i18n/api/cs.json @@ -1,12 +1,17 @@ { "@metadata": { "authors": [ - "Vks" + "Vks", + "Want" ] }, + "apihelp-groupreview-param-group": "Skupina zpráv.", + "apihelp-groupreview-param-language": "Kód jazyka.", + "apihelp-groupreview-param-state": "Nový stav pro skupinu.", "apihelp-query+languagestats-param-language": "Kód jazyka.", "apihelp-query+messagecollection-param-group": "Skupina zpráv.", "apihelp-query+messagecollection-param-language": "Kód jazyka.", + "apihelp-query+messagegroups-example-1": "Zobrazit skupinu zpráv", "apihelp-translationstash-param-subaction": "Akce.", "apihelp-translationstash-param-metadata": "JSON objekt." } diff --git a/MLEB/Translate/i18n/api/da.json b/MLEB/Translate/i18n/api/da.json index 67465d22..3e3b8160 100644 --- a/MLEB/Translate/i18n/api/da.json +++ b/MLEB/Translate/i18n/api/da.json @@ -8,6 +8,7 @@ "apihelp-groupreview-param-group": "Beskedgruppe.", "apihelp-groupreview-param-language": "Sprogkode.", "apihelp-query+languagestats-param-language": "Sprogkode.", + "apihelp-query+managemessagegroups-param-messageKey": "Beskednøgle", "apihelp-query+messagecollection-param-group": "Beskedgruppe.", "apihelp-query+messagecollection-param-language": "Sprogkode.", "apihelp-query+messagecollection-example-1": "Liste over understøttede sprog", diff --git a/MLEB/Translate/i18n/api/de.json b/MLEB/Translate/i18n/api/de.json index beeb6fa7..126c7d04 100644 --- a/MLEB/Translate/i18n/api/de.json +++ b/MLEB/Translate/i18n/api/de.json @@ -1,27 +1,38 @@ { "@metadata": { "authors": [ - "Metalhead64", "Colfin 96", "Ljonka", + "Metalhead64", "Predatorix" ] }, + "apihelp-aggregategroups-description": "Du kannst aggregierte Nachrichtengruppen hinzufügen und entfernen und Nachrichtengruppen damit verknüpfen oder davon trennen (eine nach der anderen).", "apihelp-aggregategroups-summary": "Verwaltet zusammengefasste Nachrichtengruppen.", + "apihelp-aggregategroups-extended-description": "Du kannst aggregierte Nachrichtengruppen hinzufügen und entfernen und Nachrichtengruppen damit verknüpfen oder davon trennen (eine nach der anderen).", "apihelp-aggregategroups-param-do": "Was mit der zusammengefassten Nachrichtengruppe getan werden soll.", "apihelp-aggregategroups-param-aggregategroup": "Kennung der zusammengefassten Nachrichtengruppe.", "apihelp-aggregategroups-param-group": "Nachrichtengruppenkennung.", "apihelp-aggregategroups-param-groupname": "Name der zusammengefassten Nachrichtengruppe.", "apihelp-aggregategroups-param-groupdescription": "Beschreibung der zusammengefassten Nachrichtengruppe.", "apihelp-aggregategroups-example-1": "Verknüpft eine Gruppe", + "apihelp-groupreview-description": "Nachrichtengruppen-Workflow-Status festlegen.", + "apihelp-groupreview-summary": "Nachrichtengruppen-Workflow-Status festlegen.", "apihelp-groupreview-param-group": "Nachrichtengruppe.", "apihelp-groupreview-param-language": "Sprachcode.", "apihelp-groupreview-param-state": "Der neue Status für die Gruppe.", + "apihelp-groupreview-example-1": "Markiere den Status der deutschen Übersetzung für die Nachrichtengruppe \"group-Example\" als fertig", "apihelp-query+languagestats-description": "Ruft Sprachstatistiken ab.", "apihelp-query+languagestats-summary": "Ruft Sprachstatistiken ab.", + "apihelp-query+languagestats-param-timelimit": "Maximale Zeit für die Berechnung fehlender Statistiken. Wenn Null, werden nur die zwischengespeicherten Ergebnisse von Anfang an zurückgegeben.", "apihelp-query+languagestats-param-language": "Sprachcode.", "apihelp-query+languagestats-example-1": "Listet Übersetzungsvervollständigungsstatistiken für Finnisch auf.", "apihelp-query+messagecollection-description": "Ruft die Nachrichtensammlung über Übersetzungen ab.", + "apihelp-query+managemessagegroups-summary": "Abrufen möglicher Umbenennungen für eine Nachricht in einer Gruppe während des Imports", + "apihelp-query+managemessagegroups-description": "Abrufen möglicher Umbenennungen für eine Nachricht in einer Gruppe während des Imports", + "apihelp-query+managemessagegroups-param-groupId": "Gruppen-ID", + "apihelp-query+managemessagegroups-param-messageKey": "Nachrichten-Schlüssel", + "apihelp-query+messagecollection-summary": "Ruft MessageCollection über Übersetzungen ab.", "apihelp-query+messagecollection-param-group": "Nachrichtengruppe.", "apihelp-query+messagecollection-param-language": "Sprachcode.", "apihelp-query+messagecollection-param-limit": "Wie viele Nachrichten angezeigt werden sollen (nach der Filterung).", @@ -31,6 +42,7 @@ "apihelp-query+messagecollection-example-3": "Listet optionale Nachrichten in Finnisch mit Markierungen für die Gruppe „page-Example“ auf", "apihelp-query+messagecollection-example-4": "Weitere Informationen über die aktuellsten Übersetzungsversionen für die Gruppe „page-Example“", "apihelp-query+messagegroups-summary": "Gibt Informationen über Nachrichtengruppen zurück.", + "apihelp-query+messagegroups-param-format": "Im Baumformat können Nachrichtengruppen an mehreren Orten im Baum vorhanden sein.", "apihelp-query+messagegroups-param-iconsize": "Bevorzugte Größe des Rastergruppensymbols.", "apihelp-query+messagegroups-example-1": "Nachrichtengruppen anzeigen", "apihelp-query+messagegroupstats-description": "Ruft Statistiken zu Nachrichtengruppen ab.", @@ -38,8 +50,12 @@ "apihelp-query+messagegroupstats-param-group": "Nachrichtengruppenkennung.", "apihelp-query+messagegroupstats-example-1": "Liste von Übersetzungs-Vollständigkeits-Statistiken für die Gruppe „page-Example“", "apihelp-query+messagetranslations-description": "Ruft alle Übersetzungen für eine einzelne Nachricht ab.", + "apihelp-query+messagetranslations-summary": "Ruft alle Übersetzungen für eine einzelne Nachricht ab.", "apihelp-query+messagetranslations-param-title": "Vollständiger Titel einer bekannten Nachricht.", "apihelp-query+messagetranslations-example-1": "Liste der Übersetzungen im Wiki für „MediaWiki:January“", + "apihelp-managemessagegroups-description": "Hinzufügen einer Nachricht als Umbenennung einer vorhandenen Nachricht oder einer neuen Nachricht in der Gruppe während des Imports", + "apihelp-managemessagegroups-summary": "Hinzufügen einer Nachricht als Umbenennung einer vorhandenen Nachricht oder einer neuen Nachricht in der Gruppe während des Imports", + "apihelp-managemessagegroups-param-groupId": "Gruppen-ID", "apihelp-translatesandbox-description": "Registriert und verwaltet Spielwiesenbenutzer.", "apihelp-translatesandbox-summary": "Registriert und verwaltet Spielwiesen-Benutzer.", "apihelp-translatesandbox-param-do": "Was ist zu tun?", @@ -53,6 +69,7 @@ "apihelp-translationaids-param-prop": "Die einzuschließenden Übersetzungshelfer.", "apihelp-translationaids-example-1": "Hilfen für [[MediaWiki:January/fi]] anzeigen", "apihelp-translationreview-description": "Markiert Übersetzungen als überprüft.", + "apihelp-translationreview-summary": "Markiert Übersetzungen als überprüft.", "apihelp-translationreview-param-revision": "Die zu überprüfende Versionsnummer.", "apihelp-translationreview-example-1": "Überprüft die Version 1", "apihelp-translationstash-description": "Fügt Übersetzungen dem Speicher hinzu.", @@ -64,6 +81,7 @@ "apihelp-translationstash-example-1": "Fügt eine Übersetzung zum Übersetzungsspeicher für [[MediaWiki:Jan/fi]] hinzu", "apihelp-translationstash-example-2": "Ruft den Speicher ab.", "apihelp-ttmserver-description": "Frage Vorschläge aus den gespeicherten Übersetzungen ab.", + "apihelp-ttmserver-summary": "Ruft Vorschläge von den Übersetzungsspeichern ab.", "apihelp-ttmserver-param-service": "Welche der verfügbaren Übersetzungsdienste verwendet werden sollen.", "apihelp-ttmserver-param-sourcelanguage": "Der Sprachcode des Quelltextes.", "apihelp-ttmserver-param-targetlanguage": "Der Sprachcode des Vorschlags.", @@ -82,6 +100,7 @@ "apihelp-searchtranslations-param-offset": "Versatz für die Übersetzungen.", "apihelp-searchtranslations-param-limit": "Größe des Ergebnisses.", "apihelp-searchtranslations-example-1": "Übersetzungen für die Sprache anzeigen.", + "apihelp-searchtranslations-example-2": "Zeigt nicht übersetzte Nachrichten an, die der Anfrage in der Quellsprache entsprechen.", "apihelp-translationcheck-summary": "Validiert Übersetzungen.", "apihelp-translationcheck-param-title": "Seitentitel mit Namensraum und Sprachcode.", "apihelp-translationcheck-param-translation": "Die zu validierende Übersetzung.", @@ -96,13 +115,17 @@ "apierror-translate-invalidupdate": "Ungültige Aktualisierung", "apierror-translate-language-disabled": "Übersetzungen nach $1 sind deaktiviert.", "apierror-translate-language-disabled-reason": "Übersetzungen nach $1 sind deaktiviert: $2", - "apierror-translate-language-disabled-source": "Die Quellsprache dieser Nachrichtengruppe ist $1. Bitte wähle eine andere Sprache zur Übersetzung aus.", "apierror-translate-nodynamicgroups": "Dynamische Nachrichtengruppen werden hier nicht unterstützt", "apierror-translate-nomessagefortitle": "Der Titel entspricht nicht einer übersetzbaren Nachricht", "apierror-translate-notranslationservices": "Es wurden keine öffentlichen Übersetzungsdienste konfiguriert. Der Administrator des Wikis muss $wgTranslateTranslationServices passend festlegen, bevor diese Funktion verwendet werden kann.", "apierror-translate-owntranslation": "Eigene Übersetzungen können nicht überprüft werden", "apierror-translate-sandboxdisabled": "Die Spielwiesenfunktion ist nicht in Verwendung", "apierror-translate-sandbox-invalidppassword": "Ungültiges Passwort", + "apierror-translate-smg-nochanges": "Es gibt keine zu verarbeitenden Änderungen.", "apierror-translate-unknownmessage": "Unbekannte Nachricht", - "apiwarn-translate-alreadyreviewedbyyou": "Von dir bereits als überprüft markiert" + "apierror-translate-rename-msg-new": "Nur umbenannte Nachrichten können als neue Nachrichten hinzugefügt werden.", + "apierror-translate-rename-key-invalid": "Die zur Umbenennung übergebenen Nachrichtenschlüssel wurden in der Liste der Änderungen für die Ausgangssprache nicht gefunden.", + "apierror-translate-rename-state-invalid": "Eine der zur Umbenennung übergebenen Nachrichten sollte neu hinzugefügt und die andere gelöscht werden. Aktuelle Zustände - Hinzufügen: $1 und Löschen: $2.", + "apiwarn-translate-alreadyreviewedbyyou": "Von dir bereits als überprüft markiert", + "apiwarn-translate-language-disabled-source": "Die Quellsprache dieser Nachrichtengruppe ist $1. Bitte wähle eine andere Sprache zur Übersetzung aus." } diff --git a/MLEB/Translate/i18n/api/diq.json b/MLEB/Translate/i18n/api/diq.json index dc570cb1..9e48428d 100644 --- a/MLEB/Translate/i18n/api/diq.json +++ b/MLEB/Translate/i18n/api/diq.json @@ -16,6 +16,7 @@ "apihelp-query+languagestats-param-language": "Kodê zıwani.", "apihelp-query+languagestats-example-1": "Lisya temam biyayışê istatistikané açarnayışanê Finki", "apihelp-query+messagecollection-description": "Heqdê MessagesCollection i persi", + "apihelp-query+managemessagegroups-param-messageKey": "Kılitê mesaci", "apihelp-query+messagecollection-param-group": "Gruba mesaca.", "apihelp-query+messagecollection-param-language": "Kodê zıwani.", "apihelp-translatesandbox-param-do": "Çıçi.", diff --git a/MLEB/Translate/i18n/api/en.json b/MLEB/Translate/i18n/api/en.json index cd4dd22a..8fa3b063 100644 --- a/MLEB/Translate/i18n/api/en.json +++ b/MLEB/Translate/i18n/api/en.json @@ -24,6 +24,12 @@ "apihelp-query+languagestats-param-language": "Language code.", "apihelp-query+languagestats-example-1": "List of translation completion statistics for Finnish", "apihelp-query+messagecollection-description": "Query MessageCollection about translations.", + "apihelp-query+managemessagegroups-summary": "Fetch possible renames for a message in a group during imports", + "apihelp-query+managemessagegroups-description": "Fetch possible renames for a message in a group during imports", + "apihelp-query+managemessagegroups-param-groupId": "Group Id", + "apihelp-query+managemessagegroups-param-messageKey": "Message key", + "apihelp-query+managemessagegroups-param-changesetName": "Change set name - Default / Unattended / Mediawiki etc.", + "apihelp-query+managemessagegroups-example-1": "Fetch possible renames for the given key in the given group.", "apihelp-query+messagecollection-summary": "Query MessageCollection about translations.", "apihelp-query+messagecollection-param-group": "Message group.", "apihelp-query+messagecollection-param-language": "Language code.", @@ -54,6 +60,14 @@ "apihelp-query+messagetranslations-summary": "Query all translations for a single message.", "apihelp-query+messagetranslations-param-title": "Full title of a known message.", "apihelp-query+messagetranslations-example-1": "List of translations in the wiki for \"MediaWiki:January\"", + "apihelp-managemessagegroups-description": "Add a message as a rename of an existing message or a new message in the group during imports", + "apihelp-managemessagegroups-summary": "Add a message as a rename of an existing message or a new message in the group during imports", + "apihelp-managemessagegroups-param-groupId": "Group Id", + "apihelp-managemessagegroups-param-renameMessageKey": "Target message key being renamed", + "apihelp-managemessagegroups-param-messageKey": "Replacement message key", + "apihelp-managemessagegroups-param-operation": "The operation to be performed. Possible values - rename / new", + "apihelp-managemessagegroups-param-changesetName": "Change set name - Default / Unattended / Mediawiki etc.", + "apihelp-managemessagegroups-param-changesetModified": "Unix timestamp of when the changeset was last modified. If the changeset has been modified after this the API will throw an error.", "apihelp-translatesandbox-description": "Signup and manage sandboxed users.", "apihelp-translatesandbox-summary": "Signup and manage sandboxed users.", "apihelp-translatesandbox-param-do": "What to do.", @@ -101,10 +115,11 @@ "apihelp-searchtranslations-param-limit": "Size of the result.", "apihelp-searchtranslations-example-1": "Show translations for the language.", "apihelp-searchtranslations-example-2": "Show untranslated messages matching the query in the source language.", - "apihelp-translationcheck-description": "Validate given translation input against message checkers.", + "apihelp-translationcheck-description": "Validate given translation input against configured message validators.", "apihelp-translationcheck-summary": "Validate translations.", "apihelp-translationcheck-param-title": "Page title with namespace and language code.", "apihelp-translationcheck-param-translation": "The translation to validate.", + "apierror-translate-changeset-modified": "The changeset has been modified by another user or process. Your changes cannot be saved as it might override their changes. Please refresh the page to see the latest changes.", "apierror-translate-duplicateaggregategroup": "Message group already exists", "apierror-translate-fuzzymessage": "Cannot review fuzzy translations", "apierror-translate-groupreviewdisabled": "Message group review not in use.", @@ -117,7 +132,6 @@ "apierror-translate-invalidupdate": "Invalid update", "apierror-translate-language-disabled": "Translation to $1 is disabled.", "apierror-translate-language-disabled-reason": "Translation to $1 is disabled: $2", - "apierror-translate-language-disabled-source": "The source language of this group is $1. Please select another language to translate into.", "apierror-translate-nodynamicgroups": "Dynamic message groups are not supported here", "apierror-translate-nomessagefortitle": "Title does not correspond to a translatable message", "apierror-translate-notranslationservices": "No public translation services have been configured. The wiki administrator needs to set $wgTranslateTranslationServices appropriately before this feature can be used.", @@ -125,6 +139,14 @@ "apierror-translate-sandboxdisabled": "Sandbox feature is not in use", "apierror-translate-sandbox-invalidparam": "$1", "apierror-translate-sandbox-invalidppassword": "Invalid password", + "apierror-translate-smg-nochanges": "There are no changes to process.", "apierror-translate-unknownmessage": "Unknown message", - "apiwarn-translate-alreadyreviewedbyyou": "Already marked as reviewed by you" + "apierror-translate-invalid-changeset-name": "Invalid changeset file name passed - $1", + "apierror-translate-invalid-operation": "Invalid operation: $1. Valid values - $2.", + "apierror-translate-addition-key-invalid": "Message key passed for addition was not found in the renamed message list for source language.", + "apierror-translate-rename-msg-new": "Only renamed messages can be added as new messages.", + "apierror-translate-rename-key-invalid": "Message keys passed for rename were not found in the list of changes for the source language.", + "apierror-translate-rename-state-invalid": "One of the message passed for rename should be newly added, and the other one deleted. Current states - addition: $1 and deletion: $2.", + "apiwarn-translate-alreadyreviewedbyyou": "Already marked as reviewed by you", + "apiwarn-translate-language-disabled-source": "The source language of this group is $1. Please select another language to translate into." } diff --git a/MLEB/Translate/i18n/api/eo.json b/MLEB/Translate/i18n/api/eo.json new file mode 100644 index 00000000..66befc1c --- /dev/null +++ b/MLEB/Translate/i18n/api/eo.json @@ -0,0 +1,33 @@ +{ + "@metadata": { + "authors": [ + "Mirin" + ] + }, + "apihelp-aggregategroups-param-group": "Identigilo de mesaĝgrupo.", + "apihelp-aggregategroups-example-1": "Asocii grupon", + "apihelp-groupreview-param-group": "Mesaĝgrupo.", + "apihelp-groupreview-param-language": "Lingvokodo.", + "apihelp-groupreview-param-state": "La nova staton de la grupo.", + "apihelp-query+languagestats-param-language": "Lingvokodo.", + "apihelp-query+messagecollection-param-group": "Mesaĝgrupo.", + "apihelp-query+messagecollection-param-language": "Lingvokodo.", + "apihelp-query+messagecollection-example-1": "Listo de subtenataj lingvoj", + "apihelp-query+messagegroups-param-iconsize": "Preferata grando de bildigita grupa ikono.", + "apihelp-query+messagegroups-example-1": "Montri mesaĝgrupojn", + "apihelp-query+messagegroupstats-param-group": "Identigilo de mesaĝgrupo.", + "apihelp-query+messagetranslations-param-title": "Kompleta titolo de konata mesaĝo.", + "apihelp-translatesandbox-param-do": "Kion fari.", + "apihelp-translationreview-description": "Marki tradukojn kiel reviziitajn.", + "apihelp-translationreview-summary": "Marki tradukojn kiel reviziitajn.", + "apihelp-translationstash-param-subaction": "Ago.", + "apihelp-translationstash-param-title": "Titolo de la paĝo de traduka unuo.", + "apihelp-translationstash-param-translation": "Traduko farita de la uzanto.", + "apihelp-translationstash-param-metadata": "JSON-objekto.", + "apihelp-searchtranslations-param-limit": "Grando de la rezulto.", + "apihelp-searchtranslations-example-1": "Montri tradukojn por la lingvo.", + "apierror-translate-invalidupdate": "Ne valida ĝisdatigo", + "apierror-translate-sandbox-invalidppassword": "Ne valida pasvorto", + "apierror-translate-unknownmessage": "Nekonata mesaĝo", + "apiwarn-translate-alreadyreviewedbyyou": "Jam markita kiel reviziita de vi" +} diff --git a/MLEB/Translate/i18n/api/es.json b/MLEB/Translate/i18n/api/es.json index c2b27a64..fcff1335 100644 --- a/MLEB/Translate/i18n/api/es.json +++ b/MLEB/Translate/i18n/api/es.json @@ -1,11 +1,12 @@ { "@metadata": { "authors": [ - "Macofe", - "Fitoschido", + "Canaan9801", "Csbotero", - "Lemondoge", "Dgstranz", + "Fitoschido", + "Lemondoge", + "Macofe", "Tiberius1701" ] }, @@ -26,6 +27,9 @@ "apihelp-query+languagestats-param-language": "Código de idioma.", "apihelp-query+languagestats-example-1": "Lista de estadísticas de traducciones completadas en finés.", "apihelp-query+messagecollection-description": "Consultar a MessageCollection acerca de las traducciones.", + "apihelp-query+managemessagegroups-param-groupId": "Identificador de grupo", + "apihelp-query+managemessagegroups-param-messageKey": "Clave de mensaje", + "apihelp-query+managemessagegroups-example-1": "Mostrar renombramientos posibles para la clave dada en el grupo dado.", "apihelp-query+messagecollection-param-group": "Grupo de mensajes.", "apihelp-query+messagecollection-param-language": "Código de idioma.", "apihelp-query+messagecollection-param-limit": "El número de mensajes que mostrar (después de filtrar).", @@ -45,6 +49,11 @@ "apihelp-query+messagetranslations-summary": "Consulta todas las traducciones de un solo mensaje.", "apihelp-query+messagetranslations-param-title": "Título completo de un mensaje conocido.", "apihelp-query+messagetranslations-example-1": "Lista de traducciones en el wiki de \"MediaWiki:January\"", + "apihelp-managemessagegroups-param-groupId": "Identificador de grupo", + "apihelp-managemessagegroups-param-renameMessageKey": "Se está renombrando la clave de mensaje específica", + "apihelp-managemessagegroups-param-messageKey": "Clave de mensaje de reemplazo", + "apihelp-managemessagegroups-param-operation": "La operación que se realizará. Valores posibles: rename, new", + "apihelp-managemessagegroups-param-changesetModified": "Una marca horaria de la última vez que el conjunto de cambios fue modificado. Si el conjunto de cambios ha sido modificado después, el API mostrará un error.", "apihelp-translatesandbox-description": "Registrar y gestionar usuarios aislados (en \"sandbox\").", "apihelp-translatesandbox-param-do": "Lo que hacer", "apihelp-translatesandbox-param-userid": "Identificadores de los usuarios que se gestionan. Usa 0 para las creaciones.", @@ -94,19 +103,23 @@ "apihelp-translationcheck-summary": "Validar traducciones.", "apihelp-translationcheck-param-title": "Título de página con espacio de nombres y código de idioma.", "apihelp-translationcheck-param-translation": "La traducción que validar.", + "apierror-translate-changeset-modified": "Otro usuario o proceso ha modificado el conjunto de cambios. No puede guardar tus cambios porque puede anular sus cambios. Por favor actualiza la página para ver los últimos cambios.", "apierror-translate-duplicateaggregategroup": "El grupo de mensajes ya existe", + "apierror-translate-fuzzymessage": "No se pueden revisar las traducciones imprecisas", "apierror-translate-invalidgroup": "El grupo no existe o no es válido", "apierror-translate-invalidstate": "El estado solicitado no es válido.", "apierror-translate-invalidlanguage": "El idioma solicitado no es válido.", "apierror-translate-invalidupdate": "Actualización no válida", "apierror-translate-language-disabled": "Se ha desactivado la traducción al $1.", "apierror-translate-language-disabled-reason": "Se ha desactivado la traducción al $1: $2", - "apierror-translate-language-disabled-source": "El idioma original de este grupo es el $1. Selecciona otro idioma al cual traducir.", "apierror-translate-nodynamicgroups": "No se admiten aquí los grupos de mensajes dinámicos", "apierror-translate-nomessagefortitle": "El título no se corresponde con un mensaje traducible", "apierror-translate-notranslationservices": "No se ha configurado ningún servicio público de traducciones. Los administradores del wiki deben configurar $wgTranslateTranslationServices adecuadamente para poder utilizar esta función.", "apierror-translate-owntranslation": "No se pueden revisar las traducciones propias", "apierror-translate-sandbox-invalidppassword": "La contraseña no es válida", + "apierror-translate-smg-nochanges": "No hay ningún cambio que procesar.", "apierror-translate-unknownmessage": "Mensaje desconocido", - "apiwarn-translate-alreadyreviewedbyyou": "Ya la marcaste como revisada" + "apierror-translate-invalid-changeset-name": "Ha pasado un conjunto de cambios de nombre de archivo no válido - $1", + "apiwarn-translate-alreadyreviewedbyyou": "Ya la marcaste como revisada", + "apiwarn-translate-language-disabled-source": "El idioma original de este grupo es el $1. Selecciona otro idioma al cual traducir." } diff --git a/MLEB/Translate/i18n/api/eu.json b/MLEB/Translate/i18n/api/eu.json index 126d3f7f..2fc1c108 100644 --- a/MLEB/Translate/i18n/api/eu.json +++ b/MLEB/Translate/i18n/api/eu.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Subi", - "Sator" + "Sator", + "Subi" ] }, "apihelp-aggregategroups-param-group": "Mezu-taldearen IDa", diff --git a/MLEB/Translate/i18n/api/fa.json b/MLEB/Translate/i18n/api/fa.json index d283d944..85b589a5 100644 --- a/MLEB/Translate/i18n/api/fa.json +++ b/MLEB/Translate/i18n/api/fa.json @@ -1,9 +1,10 @@ { "@metadata": { "authors": [ - "Reza1615", + "Alireza Ivaz", "Huji", - "Ladsgroup" + "Ladsgroup", + "Reza1615" ] }, "apihelp-aggregategroups-description": "مدیریت گروه‌های پیغام دسته‌جمعی.\n\nشما می توانید گروه‌های پیغام دسته‌جمعی را بیفزایید یا حذف کنید یا گروه‌های پیغام را به آن‌ها متصل یا جدا کنید (در هر زمان یکی).", @@ -20,6 +21,7 @@ "apihelp-query+languagestats-description": "کوئری آمار زبان", "apihelp-query+languagestats-summary": "کوئری آمار زبان", "apihelp-query+languagestats-param-language": "کد زبان.", + "apihelp-query+managemessagegroups-param-messageKey": "کلید پیام", "apihelp-query+messagecollection-param-group": "گروه پیغام‌ها.", "apihelp-query+messagecollection-param-language": "کد زبان.", "apihelp-query+messagecollection-example-1": "فهرست زبان‌های پشتیبانی شده", @@ -27,6 +29,7 @@ "apihelp-query+messagegroups-example-1": "نمایش گروه‌های پیام", "apihelp-query+messagegroupstats-param-group": "شناسهٔ گروه پیغام.", "apihelp-query+messagetranslations-param-title": "عنوان کامل یک پیام شناخته شده.", + "apihelp-managemessagegroups-param-groupId": "شناسۀ گروه", "apihelp-translatesandbox-param-do": "چه کاری برای انجام دادن هست.", "apihelp-translatesandbox-param-email": "رایانامه هنگام ایجاد حساب", "apihelp-translationreview-example-1": "بازبینی نسخه ۱", diff --git a/MLEB/Translate/i18n/api/fi.json b/MLEB/Translate/i18n/api/fi.json index 53fb1c69..727a5f64 100644 --- a/MLEB/Translate/i18n/api/fi.json +++ b/MLEB/Translate/i18n/api/fi.json @@ -44,12 +44,12 @@ "apierror-translate-invalidlanguage": "Pyydetty kieli ei kelpaa.", "apierror-translate-invalidupdate": "Virheellinen päivitys", "apierror-translate-language-disabled": "Kääntäminen kielelle $1 ei ole mahdollista.", - "apierror-translate-language-disabled-reason": "Käänätminen kielelle $1 ei ole mahdollista: $2", - "apierror-translate-language-disabled-source": "Tämän ryhmän lähdekieli on $1. Valitse toinen kieli käännöksille.", + "apierror-translate-language-disabled-reason": "Kääntäminen kielelle $1 ei ole mahdollista: $2", "apierror-translate-nodynamicgroups": "Dynaamisiä viestiryhmiä ei tueta täällä", - "apierror-translate-nomessagefortitle": "Otsikko ei vastaa käännettävää viesti", + "apierror-translate-nomessagefortitle": "Otsikko ei vastaa käännettävää viestiä", "apierror-translate-owntranslation": "Ei voida tarkistaa omia käännöksiä", "apierror-translate-sandboxdisabled": "Hiekkalaatikko-ominaisuus ei ole käytössä", "apierror-translate-sandbox-invalidppassword": "Virheellinen salasana", - "apierror-translate-unknownmessage": "Tuntematon viesti" + "apierror-translate-unknownmessage": "Tuntematon viesti", + "apiwarn-translate-language-disabled-source": "Tämän ryhmän lähdekieli on $1. Valitse toinen kieli käännöksille." } diff --git a/MLEB/Translate/i18n/api/fit.json b/MLEB/Translate/i18n/api/fit.json new file mode 100644 index 00000000..d4ffd4c7 --- /dev/null +++ b/MLEB/Translate/i18n/api/fit.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Pyscowicz" + ] + }, + "apierror-translate-nomessagefortitle": "Otsikko ei vastaa käänettävää viestiä" +} diff --git a/MLEB/Translate/i18n/api/fr.json b/MLEB/Translate/i18n/api/fr.json index e5fe1df9..d8da903a 100644 --- a/MLEB/Translate/i18n/api/fr.json +++ b/MLEB/Translate/i18n/api/fr.json @@ -1,86 +1,103 @@ { "@metadata": { "authors": [ + "ALDO CP", + "Derugon", "Djiboun", - "Pathe", - "TomT0m", + "Eneelk", "Gomoko", - "Wladek92", - "Sacamol", "Hpetit", - "Verdy p", - "Derugon", + "McDutchie", + "Pathe", + "Sacamol", + "Thibaut120094", + "TomT0m", "Urhixidur", - "ALDO CP" + "Verdy p", + "Wladek92" ] }, - "apihelp-aggregategroups-description": "Gérer les groupes d'agrégation de messages.\n\nVous pouvez ajouter et supprimer des agrégats de groupes de messages et les associer ou de les dissocier les uns des autres (un à la fois).", - "apihelp-aggregategroups-summary": "Gérer des groupes de messages aggrégés.", - "apihelp-aggregategroups-extended-description": "Vous pouvez ajouter et supprimer des groupes de messages agrégés et leur associer ou non des groupes de messages (un par un).", - "apihelp-aggregategroups-param-do": "Que faire avec le groupe de message agrégé.", - "apihelp-aggregategroups-param-aggregategroup": "ID du groupe de message agrégé.", + "apihelp-aggregategroups-description": "Gérer les groupes de messages agrégés.\n\nVous pouvez ajouter et supprimer des groupes de messages agrégés, les associer les uns aux autres ou les dissocier les uns des autres (un à la fois).", + "apihelp-aggregategroups-summary": "Gérer des groupes de messages agrégés.", + "apihelp-aggregategroups-extended-description": "Vous pouvez ajouter et supprimer des groupes de messages agrégés et leur associer ou dissocier des groupes de messages (un par un).", + "apihelp-aggregategroups-param-do": "Que faire avec le groupe de messages agrégés.", + "apihelp-aggregategroups-param-aggregategroup": "ID du groupe de messages agrégés.", "apihelp-aggregategroups-param-group": "ID du groupe de messages.", - "apihelp-aggregategroups-param-groupname": "Nom du groupe de message agrégé.", - "apihelp-aggregategroups-param-groupdescription": "Description du groupe de messages agrégé.", + "apihelp-aggregategroups-param-groupname": "Nom du groupe de messages agrégés.", + "apihelp-aggregategroups-param-groupdescription": "Description du groupe de messages agrégés.", "apihelp-aggregategroups-example-1": "Associer un groupe", "apihelp-groupreview-description": "Définir les états de transition du groupe de messages.", - "apihelp-groupreview-summary": "Définir les états de flux de travail du groupe de messages.", + "apihelp-groupreview-summary": "Définir les états de transition du groupe de messages.", "apihelp-groupreview-param-group": "Groupe de messages.", - "apihelp-groupreview-param-language": "Code de langue", + "apihelp-groupreview-param-language": "Code de langue.", "apihelp-groupreview-param-state": "Le nouvel état pour le groupe.", - "apihelp-groupreview-example-1": "Marquer l’état de la traduction allemande du groupe de messages « group-Example » comme prêt", - "apihelp-query+languagestats-description": "Demande les statistiques de langue.", - "apihelp-query+languagestats-summary": "Demander des statistiques de langue.", - "apihelp-query+languagestats-param-timelimit": "Temps Maximum pour calculer les statistiques manquantes. S'il vaut zéro, seuls les résultats mis en cache depuis le début sont retournés.", + "apihelp-groupreview-example-1": "Marquer l’état de la traduction allemande du groupe de messages « group-Example » comme prêt", + "apihelp-query+languagestats-description": "Demander les statistiques de langue.", + "apihelp-query+languagestats-summary": "Demander les statistiques de langue.", + "apihelp-query+languagestats-param-timelimit": "Durée maximale de calcul des statistiques manquantes. Si elle vaut zéro, seuls les résultats mis en cache depuis le début sont retournés.", "apihelp-query+languagestats-param-language": "Code de langue.", - "apihelp-query+languagestats-example-1": "Liste de statistiques des traductions terminées pour le finlandais", + "apihelp-query+languagestats-example-1": "Liste de statistiques des traductions terminées pour le finnois", "apihelp-query+messagecollection-description": "Requête MessageCollection sur les traductions.", + "apihelp-query+managemessagegroups-summary": "Récupérer les renommages possibles pour un message dans un groupe durant les importations", + "apihelp-query+managemessagegroups-description": "Récupérer les renommages possibles pour un message dans un groupe durant les importations", + "apihelp-query+managemessagegroups-param-groupId": "Id du groupe", + "apihelp-query+managemessagegroups-param-messageKey": "Clef du message", + "apihelp-query+managemessagegroups-param-changesetName": "Modifier le nom de l’ensemble : Défaut / Inattendu / MediaWiki / etc.", + "apihelp-query+managemessagegroups-example-1": "Récupérer les renommages possibles pour la clef donnée dans le groupe donné.", "apihelp-query+messagecollection-summary": "Rechercher des traductions dans MessageCollection.", - "apihelp-query+messagecollection-param-group": "Groupe du message.", + "apihelp-query+messagecollection-param-group": "Groupe de messages.", "apihelp-query+messagecollection-param-language": "Code de langue.", "apihelp-query+messagecollection-param-limit": "Combien de messages à afficher (après filtrage).", - "apihelp-query+messagecollection-param-offset": "Entier ou clé de décalage pour le début.", - "apihelp-query+messagecollection-param-filter": "Filtres sur les collections de messages. Utilisez ! pour nier la condition. Par exemple !floue signifie uniquement la liste de tous les messages non-floue . Les filtres sont appliqués dans l'ordre indiqué.\n;floue: messages avec étiquette fuzzy.\n;optionnel: messages qui doivent être traduits que si des changements sont nécessaires.\n;ignoré: messages qui ne sont jamais traduits.\n;possède traduction: messages qui ont une traduction peu importe si elle est floue ou pas.\n;traduit: messages qui ont une traduction qui n'est pas floue.\n;changé: messages qui ont été traduits ou changé depuis la dernière exportation.\n;examinateur:N: messages dont le numéro d'utilisateur N figure parmi les examinateurs.\n;dernier traducteur:N: messages dont le numéro d'utilisateur N est celui de la dernière personne qui a traduit.", - "apihelp-query+messagecollection-param-prop": "Quelles sont les propriétés à obtenir :\n;definition : la définition du message.\n;translation : traduction actuelle (sans la chaîne $1 si elle est présente, utiliser les étiquettes pour vérifier les traductions désuètes ou cassées).\n;tags : balises de message, comme optionnel, ignoré et flou.\n;properties : les propriétés d’un message, comme son état, la révision, le dernier traducteur. Peut varier entre les messages.\n;revision :Désuet ! Utiliser $2prop=propriétés.", + "apihelp-query+messagecollection-param-offset": "Entier ou clé de décalage du début.", + "apihelp-query+messagecollection-param-filter": "Filtres sur les collections de messages. Utilisez ! pour nier la condition. Par exemple !fuzzy signifie uniquement la liste de tous les messages non-flous. Les filtres sont appliqués dans l'ordre indiqué.\n; fuzzy\n: messages flous (approximatifs), c.-à-d. avec étiquette fuzzy.\n; optional\n: messages qui ne doivent être traduits que si des changements sont nécessaires.\n; ignored\n: messages qui ne sont jamais traduits.\n; hastranslation\n: messages qui ont une traduction peu importe si elle est floue ou pas.\n; translated\n: messages qui ont une traduction non floue.\n; changed\n: messages qui ont été traduits ou changés depuis la dernière exportation.\n; reviewer:N\n: messages dont l’utilisateur numéro N est l’un des relecteurs.\n; last-translator:N\n: messages dont l’utilisateur numéro N est le dernier traducteur.", + "apihelp-query+messagecollection-param-prop": "Quelles propriétés obtenir :\n; definition\n: la définition du message.\n; translation\n: la traduction actuelle (sans la chaîne $1 si elle est présente, utiliser les étiquettes pour vérifier les traductions désuètes ou cassées).\n; tags\n: les balises du message, telles que ''optional'' (facultatif), ''ignored'' (ignoré) et ''fuzzy'' (flou).\n; properties\n: les propriétés du message, telles que ''state'' (état), ''revision'' (révision), ''last-translator'' (dernier traducteur). Peut varier suivant les messages.\n; revision\n: Désuet ! utiliser $2prop=propriétés.", "apihelp-query+messagecollection-example-1": "Liste des langues prises en charge", - "apihelp-query+messagecollection-example-2": "Liste des définitions de messages non-facultatifs pour le groupe \"Exemple-de-page\"", - "apihelp-query+messagecollection-example-3": "Liste des messages facultatifs en finnois, avec les balises pour le groupe de la \"page d'exemple\"", - "apihelp-query+messagecollection-example-4": "Plus d'informations sur les dernières révisions de traduction pour le groupe de la \"page d'exemple\"", - "apihelp-query+messagegroups-description": "Retourne des informations sur les groupes de messages.\n\nNotez que le paramètre uselang concerne la sortie des éléments dépendants de la langue.", - "apihelp-query+messagegroups-summary": "Renvoie des informations concernant les groupes de messges.", - "apihelp-query+messagegroups-extended-description": "Soyez conscient que le paramètre « uselang » modifie la sortie de tous les éléments qui sont dépendants de la langue.", - "apihelp-query+messagegroups-param-depth": "Lors de l'utilisation sous forme d'arbre, limiter la profondeur à ces différents niveaux. La valeur 0 signifie qu'aucun des sous-groupes n'est présenté. Si la limite est atteinte, la sortie inclut un \"compteur de groupes\", qui indique le nombre d'enfants directs.", - "apihelp-query+messagegroups-param-filter": "Seulement les messages retournés avec l'Id correspondant à l'une ou plusieurs des entrées fournies (insensible à la casse, séparées par des canaux (pipes), caractère générique *).", - "apihelp-query+messagegroups-param-format": "Dans la présentation sous forme d'arbre, les groupes de messages peuvent exister en plusieurs endroits de l'arborescence.", - "apihelp-query+messagegroups-param-iconsize": "La taille préférée de l'icône pixellisée du groupe.", - "apihelp-query+messagegroups-param-prop": "Quelle information relative à la traduction obtenir :\n;id: contient l’ID du groupe.\n;label: contient l’étiquette du groupe.\n;description: contient la description du groupe.\n;class: contient le nom de classe du groupe.\n;namespace: contient l’espace de noms du groupe. Tous les groupes n’appartiennent pas forcément à un unique espace de noms.\n;exists: contient une propriété d’existence du groupe auto-calculée.\n;icon: contient des URLs vers l’icône du groupe.\n;priority: contient l’état de priorité (par ex., 'découragé').\n;prioritylangs: contient les langues préférées. S’il n’est pas renseigné, retourne false.\n;priorityforce: inclut l’état de priorité —prioritylangs est-il forcé ?\n;workflowstates: contient les états du processus pour le groupe de messages.", - "apihelp-query+messagegroups-param-root": "En utilisant le format arborescent, au lieu de démarrer depuis le plus haut niveau, partir du groupe de message fourni, qui doit être un groupe de message agrégé. En utilisant le format plat, seul le groupe spécifié est renvoyé.", - "apihelp-query+messagegroups-example-1": "Affiche les groupes de message", - "apihelp-query+messagegroupstats-description": "Demande de statistiques de groupe de message.", + "apihelp-query+messagecollection-example-2": "Liste des définitions de messages non-facultatifs pour le groupe « page-Example »", + "apihelp-query+messagecollection-example-3": "Liste des messages facultatifs en finnois, avec les balises pour le groupe « page-Example »", + "apihelp-query+messagecollection-example-4": "Plus d’informations sur les dernières révisions de traduction pour le groupe « page-Example »", + "apihelp-query+messagegroups-description": "Retourne des informations sur les groupes de messages.\n\nNotez que le paramètre uselang modifie la sortie des éléments qui dépendent de la langue.", + "apihelp-query+messagegroups-summary": "Renvoie des informations concernant les groupes de messages.", + "apihelp-query+messagegroups-extended-description": "Soyez conscient que le paramètre uselang modifie la sortie des éléments qui dépendent de la langue.", + "apihelp-query+messagegroups-param-depth": "Lors de l’utilisation sous forme d’arbre, limiter la profondeur à ces différents niveaux. La valeur 0 signifie qu’aucun des sous-groupes n’est présenté. Si la limite est atteinte, la sortie inclut une valeur « groupcount » qui indique le nombre d’enfants directs.", + "apihelp-query+messagegroups-param-filter": "Seuls seront retournés les messages avec un ID correspondant à l’une ou plusieurs des entrées fournies (insensibles à la casse, séparées par des barres verticale (|), caractère générique *).", + "apihelp-query+messagegroups-param-format": "Dans la présentation sous forme d’arbre, les groupes de messages peuvent exister en plusieurs endroits de l’arborescence.", + "apihelp-query+messagegroups-param-iconsize": "La taille préférée de l'icône pixelisée du groupe.", + "apihelp-query+messagegroups-param-prop": "Quelles informations relatives à la traduction obtenir :\n; id\n: indique l’ID du groupe.\n; label\n: indique l’étiquette du groupe.\n; description\n: indique la description du groupe.\n; class\n: indique le nom de classe du groupe.\n; namespace\n: indique l’espace de noms du groupe. Tous les groupes n’appartiennent pas forcément à un unique espace de noms.\n; exists\n: indique une propriété auto-calculée d’existence du groupe.\n; icon\n: indique des URL vers l’icône du groupe.\n; priority\n: indique l’état de priorité (par ex., 'découragé').\n; prioritylangs\n: indique les langues prioritaires. Si non renseigné, ceci retourne false.\n; priorityforce\n: indique l’état de priorité — les langues prioritaires sont-elles forcées ?\n; workflowstates\n: indique les états du processus pour le groupe de messages.", + "apihelp-query+messagegroups-param-root": "En utilisant le format arborescent, partir du groupe de message fourni qui doit être un groupe de messages agrégés, au lieu de démarrer depuis le plus haut niveau. En utilisant le format plat, seul le groupe spécifié est renvoyé.", + "apihelp-query+messagegroups-example-1": "Affiche les groupes de messages", + "apihelp-query+messagegroupstats-description": "Demande de statistiques de groupe de messages.", "apihelp-query+messagegroupstats-summary": "Demander les statistiques des groupes de messages.", "apihelp-query+messagegroupstats-param-timelimit": "Durée maximale pour calculer les statistiques manquantes. Si c’est zéro, seuls les résultats en cache depuis le début seront renvoyés.", - "apihelp-query+messagegroupstats-param-group": "Identifiant du groupe de message.", - "apihelp-query+messagegroupstats-example-1": "Liste des statistiques d’achèvement des traductions pour le groupe « page-Example »", - "apihelp-query+messagetranslations-description": "Demande l'ensemble des traductions pour un seul message.", - "apihelp-query+messagetranslations-summary": "Recherche toutes les traductions d'un unique message.", - "apihelp-query+messagetranslations-param-title": "Titre complet d'un message connu.", - "apihelp-query+messagetranslations-example-1": "Liste des traductions du wiki pour «MediaWiki:janvier»", + "apihelp-query+messagegroupstats-param-group": "Identifiant du groupe de messages.", + "apihelp-query+messagegroupstats-example-1": "Liste des statistiques d’achèvement des traductions pour le groupe « page-Example »", + "apihelp-query+messagetranslations-description": "Demande l’ensemble des traductions pour un seul message.", + "apihelp-query+messagetranslations-summary": "Recherche toutes les traductions d’un unique message.", + "apihelp-query+messagetranslations-param-title": "Titre complet d’un message connu.", + "apihelp-query+messagetranslations-example-1": "Liste des traductions du wiki pour «MediaWiki:January»", + "apihelp-managemessagegroups-description": "Ajouter un message comme renommage d’un message existant ou un nouveau message dans le groupe durant les importations", + "apihelp-managemessagegroups-summary": "Ajouter un message comme renommage d’un message existant ou un nouveau message dans le groupe durant les importations", + "apihelp-managemessagegroups-param-groupId": "Id du groupe", + "apihelp-managemessagegroups-param-renameMessageKey": "Clef du message cible à renommer", + "apihelp-managemessagegroups-param-messageKey": "Clef du message de remplacement", + "apihelp-managemessagegroups-param-operation": "L’opération à effectuer. Valeurs possibles : renommer / nouveau", + "apihelp-managemessagegroups-param-changesetName": "Modifier le nom de l’ensemble : Défaut / Inattendu / MediaWiki / etc.", + "apihelp-managemessagegroups-param-changesetModified": "Horodatage Unix du moment où l’ensemble de modifications a été modifié en dernier. S’il a été modifié après cela, l’API lèvera une erreur.", "apihelp-translatesandbox-description": "Inscrivez-vous et gérez les utilisateurs du bac à sable.", "apihelp-translatesandbox-summary": "Inscrivez-vous et gérez les utilisateurs du bac à sable.", "apihelp-translatesandbox-param-do": "Que faire.", "apihelp-translatesandbox-param-userid": "IDs des utilisateurs gérés. Utiliser 0 pour les créations.", - "apihelp-translatesandbox-param-username": "Nom d'utilisateur lors de la création d'un utilisateur.", - "apihelp-translatesandbox-param-password": "Mot de passe lors de la création d'un utilisateur.", + "apihelp-translatesandbox-param-username": "Nom d’utilisateur lors de la création d’un utilisateur.", + "apihelp-translatesandbox-param-password": "Mot de passe lors de la création d’un utilisateur.", "apihelp-translatesandbox-param-email": "Courriel lors de la création d’un utilisateur.", "apihelp-translationaids-description": "Recherche toutes les aides à la traduction.", "apihelp-translationaids-summary": "Rechercher toutes les aides à la traduction.", - "apihelp-translationaids-param-title": "Titre complet d'un message connu.", - "apihelp-translationaids-param-group": "Le groupe de messages auquel appartient le message. S'il est vide, alors le groupe principal est utilisé.", + "apihelp-translationaids-param-title": "Titre complet d’un message connu.", + "apihelp-translationaids-param-group": "Le groupe de messages auquel appartient le message. S’il est vide, alors le groupe principal est utilisé.", "apihelp-translationaids-param-prop": "Quelles aides à la traduction inclure.", "apihelp-translationaids-example-1": "Afficher les aides pour [[MediaWiki:January/fi]]", "apihelp-translationreview-description": "Marquer les traductions comme relues.", "apihelp-translationreview-summary": "Marquer les traductions relues.", - "apihelp-translationreview-param-revision": "Le numéro de révision à revoir.", + "apihelp-translationreview-param-revision": "Le numéro de révision à relire.", "apihelp-translationreview-example-1": "Relire la révision 1", "apihelp-translationstash-description": "Ajouter des traductions à la réserve.", "apihelp-translationstash-summary": "Mettre des traductions en réserve.", @@ -91,49 +108,57 @@ "apihelp-translationstash-param-username": "Facultativement, l’utilisateur dont il faut récupérer la réserve. Seuls les utilisateurs privilégiés peuvent faire cela.", "apihelp-translationstash-example-1": "Ajouter une traduction à la réserve pour [[MediaWiki:Jan/fi]]", "apihelp-translationstash-example-2": "Interroger la réserve", - "apihelp-ttmserver-description": "Rechercher des suggestions à partire de l'historique des traductions.", - "apihelp-ttmserver-summary": "Rechercher des suggestions à partir de l'historique des traductions.", + "apihelp-ttmserver-description": "Rechercher des suggestions à partir de l’historique des traductions.", + "apihelp-ttmserver-summary": "Rechercher des suggestions à partir de l’historique des traductions.", "apihelp-ttmserver-param-service": "Quels services de traduction disponibles utiliser.", "apihelp-ttmserver-param-sourcelanguage": "Le code de langue du texte de la source.", "apihelp-ttmserver-param-targetlanguage": "Le code de langue de la suggestion.", "apihelp-ttmserver-param-text": "Le texte pour lequel on cherche des suggestions.", - "apihelp-ttmserver-example-1": "Obtenir des suggestions pour la traduire \"Aide\" de l'anglais vers le finnois", + "apihelp-ttmserver-example-1": "Obtenir des suggestions pour traduire « Help » de l’anglais en finnois", "apihelp-searchtranslations-description": "Rechercher des traductions.", "apihelp-searchtranslations-summary": "Rechercher des traductions.", "apihelp-searchtranslations-param-service": "Quels services de traduction disponibles utiliser.", "apihelp-searchtranslations-param-query": "La chaîne à rechercher.", "apihelp-searchtranslations-param-sourcelanguage": "Le code de langue du texte de la source.", "apihelp-searchtranslations-param-language": "Le code de langue pour lequel rechercher la chaîne.", - "apihelp-searchtranslations-param-group": "L’id de groupe où rechercher la chaîne.", + "apihelp-searchtranslations-param-group": "L’ID de groupe où rechercher la chaîne.", "apihelp-searchtranslations-param-filter": "Filtre d’état de traduction de message.", - "apihelp-searchtranslations-param-match": "Correspondance avec n'importe quel ou tous les mots de la recherche.", - "apihelp-searchtranslations-param-case": "Cas de recherche insensible/sensible à la casse.", + "apihelp-searchtranslations-param-match": "Correspondance avec n’importe quel ou tous les mots de la recherche.", + "apihelp-searchtranslations-param-case": "Recherche insensible/sensible à la casse.", "apihelp-searchtranslations-param-offset": "Décalage pour les traductions.", "apihelp-searchtranslations-param-limit": "Taille du résultat.", "apihelp-searchtranslations-example-1": "Afficher les traductions pour la langue.", "apihelp-searchtranslations-example-2": "Afficher les messages non traduits correspondant à la demande dans la langue source.", - "apihelp-translationcheck-description": "Valider la saisie de la traduction fournie d’après les vérificateurs de message.", + "apihelp-translationcheck-description": "Valider la saisie de la traduction fournie d’après les validateurs de message configurés.", "apihelp-translationcheck-summary": "Valider les traductions.", "apihelp-translationcheck-param-title": "Titre de page avec espace de noms et code langue.", "apihelp-translationcheck-param-translation": "La traduction à valider.", + "apierror-translate-changeset-modified": "L’ensemble de modifications a été modifié par un autre utilisateur ou processus. Vos modifications ne peuvent pas être enregistrées car elles pourraient écraser les leurs. Veuille rafraîchir la page pour voir les dernières modifications.", "apierror-translate-duplicateaggregategroup": "Le groupe de messages existe déjà", - "apierror-translate-fuzzymessage": "Impossible de relire des traductions trop vagues", - "apierror-translate-groupreviewdisabled": "La revue du groupe de message n'est pas utilisée.", - "apierror-translate-invalidaggregategroup": "Groupe de messages aggrégés invalide", - "apierror-translate-invalidaggregategroupname": "Nom du groupe de messages aggrégés invalide", - "apierror-translate-invalidgroup": "Le groupe n'existe pas ou n'est pas valide", - "apierror-translate-invalidstate": "L'état demandé n'est pas valide.", - "apierror-translate-invalidlanguage": "La langue demandée n'est pas valide.", - "apierror-translate-invalidupdate": "Correction invalide", + "apierror-translate-fuzzymessage": "Impossible de relire des traductions floues ou approximatives (''fuzzy'')", + "apierror-translate-groupreviewdisabled": "La revue du groupe de message n’est pas utilisée.", + "apierror-translate-invalidaggregategroup": "Groupe de messages agrégés non-valide", + "apierror-translate-invalidaggregategroupname": "Nom du groupe de messages agrégés non-valide", + "apierror-translate-invalidgroup": "Le groupe n’existe pas ou n’est pas valide", + "apierror-translate-invalidstate": "L’état demandé n’est pas valide.", + "apierror-translate-invalidlanguage": "La langue demandée n’est pas valide.", + "apierror-translate-invalidupdate": "Mise à jour non valide", "apierror-translate-language-disabled": "La traduction en $1 est désactivée.", - "apierror-translate-language-disabled-reason": "La traduction en $1 est désactivée: $2", - "apierror-translate-language-disabled-source": "La langue source de ce groupe est $1. Veuillez sélectionner une autre langue vers laquelle traduire.", + "apierror-translate-language-disabled-reason": "La traduction en $1 est désactivée : $2", "apierror-translate-nodynamicgroups": "Les groupes de messages dynamiques ne sont pas pris en charge ici", "apierror-translate-nomessagefortitle": "Le titre ne correspond pas à un message traductible", - "apierror-translate-notranslationservices": "Aucun service de traduction public n’a été configuré. L’administrateur du wiki doit positionner $wgTranslateTranslationServices comme il faut avant que cette fonctionnalité puisse être utilisée.", + "apierror-translate-notranslationservices": "Aucun service de traduction public n’a été configuré. L’administrateur du wiki doit convenablement positionner $wgTranslateTranslationServices avant que cette fonctionnalité puisse être utilisée.", "apierror-translate-owntranslation": "Impossible de relire ses propres traductions", "apierror-translate-sandboxdisabled": "Les fonctions du bac à sable ne sont pas utilisées", - "apierror-translate-sandbox-invalidppassword": "Mot de passe invalide", + "apierror-translate-sandbox-invalidppassword": "Mot de passe non-valide", + "apierror-translate-smg-nochanges": "Il n’y a aucune modification à effectuer.", "apierror-translate-unknownmessage": "Message inconnu", - "apiwarn-translate-alreadyreviewedbyyou": "Déjà marqué comme ayant été relu par vous" + "apierror-translate-invalid-changeset-name": "Nom du fichier d’ensemble de changements passé non valide : $1", + "apierror-translate-invalid-operation": "Opération non valide : $1. Valeurs valides : $2.", + "apierror-translate-addition-key-invalid": "La clef de message passée pour ajout n’a pas été trouvée dans la liste de message renommée pour la langue source.", + "apierror-translate-rename-msg-new": "Seuls les messages renommés peuvent être ajoutés comme nouveaux messages.", + "apierror-translate-rename-key-invalid": "Les clefs de message passées pour renommage n’ont pas été trouvées dans la liste des modifications pour la langue source.", + "apierror-translate-rename-state-invalid": "Un des messages passés pour renommage devrait être nouvellement ajouté et l’autre supprimé. États actuels – ajout de : $1 et suppression de : $2.", + "apiwarn-translate-alreadyreviewedbyyou": "Déjà marqué comme ayant été relu par vous", + "apiwarn-translate-language-disabled-source": "La langue source de ce groupe est $1. Veuillez sélectionner une autre langue vers laquelle traduire." } diff --git a/MLEB/Translate/i18n/api/fy.json b/MLEB/Translate/i18n/api/fy.json index 07ce2545..940cbd18 100644 --- a/MLEB/Translate/i18n/api/fy.json +++ b/MLEB/Translate/i18n/api/fy.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Robin0van0der0vliet", - "Robin van der Vliet" + "Robin van der Vliet", + "Robin0van0der0vliet" ] }, "apihelp-groupreview-param-group": "Berjochtgroep.", diff --git a/MLEB/Translate/i18n/api/gl.json b/MLEB/Translate/i18n/api/gl.json index e0803c4c..1f642fe0 100644 --- a/MLEB/Translate/i18n/api/gl.json +++ b/MLEB/Translate/i18n/api/gl.json @@ -3,6 +3,8 @@ "authors": [ "Banjo", "Elisardojm", + "Iváns", + "Maria zaos", "Toliño" ] }, @@ -85,18 +87,18 @@ "apihelp-ttmserver-param-service": "Que servizos de tradución usar, entre os dispoñibles.", "apihelp-ttmserver-param-sourcelanguage": "O código de lingua do texto fonte.", "apihelp-ttmserver-param-targetlanguage": "O código de lingua da suxestión.", - "apihelp-ttmserver-param-text": "Texto para o cal buscar suxestións.", + "apihelp-ttmserver-param-text": "Texto para o cal procurar suxestións.", "apihelp-ttmserver-example-1": "Obter suxestións para traducir \"Help\" do inglés ao finés", "apihelp-searchtranslations-description": "Procurar nas traducións.", "apihelp-searchtranslations-summary": "Procurar nas traducións.", "apihelp-searchtranslations-param-service": "O servizo de tradución a utilizar.", - "apihelp-searchtranslations-param-query": "A cadea que buscar.", + "apihelp-searchtranslations-param-query": "A cadea a procurar.", "apihelp-searchtranslations-param-sourcelanguage": "O código de lingua do texto fonte.", "apihelp-searchtranslations-param-language": "O código da lingua na que procurar a cadea.", "apihelp-searchtranslations-param-group": "O identificador do grupo no que procurar a cadea.", "apihelp-searchtranslations-param-filter": "Filtro do estado de tradución das mensaxes.", - "apihelp-searchtranslations-param-match": "Coincide con calquera/todas as palabras de busca.", - "apihelp-searchtranslations-param-case": "Busca sensible/non sensible a maiúsculas.", + "apihelp-searchtranslations-param-match": "Coincide con calquera/todas as palabras de procura.", + "apihelp-searchtranslations-param-case": "Procura sensible/non sensible a maiúsculas.", "apihelp-searchtranslations-param-offset": "Desprazamento para as traducións.", "apihelp-searchtranslations-param-limit": "Tamaño do resultado.", "apihelp-searchtranslations-example-1": "Amosar as traducións para a lingua.", diff --git a/MLEB/Translate/i18n/api/he.json b/MLEB/Translate/i18n/api/he.json index f7e40c77..e53aba97 100644 --- a/MLEB/Translate/i18n/api/he.json +++ b/MLEB/Translate/i18n/api/he.json @@ -27,6 +27,12 @@ "apihelp-query+languagestats-param-language": "קוד השפה.", "apihelp-query+languagestats-example-1": "רשימת סטטיסטיקות השלמות תרגומים עבור פינית", "apihelp-query+messagecollection-description": "לעשות שאילתה ל־MessageCollection על תרגומים.", + "apihelp-query+managemessagegroups-summary": "אחזור שינויי שם אפשריים עבור הודעה בקבוצה בעת ייבוא", + "apihelp-query+managemessagegroups-description": "אחזור שינויי שם אפשריים עבור הודעה בקבוצה בעת ייבוא", + "apihelp-query+managemessagegroups-param-groupId": "מזהה קבוצה", + "apihelp-query+managemessagegroups-param-messageKey": "מפתח הודעה", + "apihelp-query+managemessagegroups-param-changesetName": "שינוי שם הערכה – ברירת מחדל / בלתי־מפוקח / מדיה־ויקי וכו'", + "apihelp-query+managemessagegroups-example-1": "אחזור שינויי שם אפשררים עבור המפתח הנתון בקבוצה הנתונה.", "apihelp-query+messagecollection-summary": "שאילתה של MessageCollection על תרגומים.", "apihelp-query+messagecollection-param-group": "קבוצת הודעות.", "apihelp-query+messagecollection-param-language": "קוד השפה.", @@ -57,12 +63,20 @@ "apihelp-query+messagetranslations-summary": "שאילתה על כל התרגומים של הודעה אחת.", "apihelp-query+messagetranslations-param-title": "כותרת שלמה של הודעה ידועה.", "apihelp-query+messagetranslations-example-1": "רשימת תרגומים בוויקי עבור \"MediaWiki:January\"", + "apihelp-managemessagegroups-description": "הוספת הודעה בתור שינוי שם של הודעה קיימת או של הודעה חדשה בקבוצה בעת ייבוא", + "apihelp-managemessagegroups-summary": "הוספת הודעה בתור שינוי שם של הודעה קיימת או של הודעה חדשה בקבוצה בעת ייבוא", + "apihelp-managemessagegroups-param-groupId": "מזהה קבוצה", + "apihelp-managemessagegroups-param-renameMessageKey": "מפתח הודעת היעד ששמה משתנה", + "apihelp-managemessagegroups-param-messageKey": "מפתח ההודעה המחליפה", + "apihelp-managemessagegroups-param-operation": "איזו פעולה לבצע. ערכים אפשריים – rename / new", + "apihelp-managemessagegroups-param-changesetName": "שינוי שם הערכה – ברירת מחדל / בלתי־מפוקח / מדיה־ויקי וכו'", + "apihelp-managemessagegroups-param-changesetModified": "חותם־זמן של יוניקס של מתי ערכת השינויים שונתה בפעם האחרונה. אם ערכת השינויים שונתה אחרי זה, ה־API יזרוק שגיאה.", "apihelp-translatesandbox-description": "רשיום וניהול משתמשים בארגז חול.", "apihelp-translatesandbox-summary": "רישום וניהול משתמשים בארגז חול.", "apihelp-translatesandbox-param-do": "מה לעשות.", "apihelp-translatesandbox-param-userid": "מזהי משתמשים של המשתמשים המנוהלים. יש להשתם ב־0 בשביל יצירה.", "apihelp-translatesandbox-param-username": "שם משתמש בעת יצירת משתמש.", - "apihelp-translatesandbox-param-password": "ססמה בעת יצירת משתמש.", + "apihelp-translatesandbox-param-password": "סיסמה בעת יצירת משתמש.", "apihelp-translatesandbox-param-email": "דואל אלקטרוני בעת יצירת משתמש.", "apihelp-translationaids-description": "שאילתה על כל עזרי התרגום.", "apihelp-translationaids-summary": "שאילתה על כל עזרי התרגום.", @@ -104,10 +118,11 @@ "apihelp-searchtranslations-param-limit": "גודל התוצאה.", "apihelp-searchtranslations-example-1": "הצגת תרגומים בשפה.", "apihelp-searchtranslations-example-2": "הצגת הודעות לא מתורגמות שמתאימות לשאילתה בשפת המקור.", - "apihelp-translationcheck-description": "בדיקת תרגום נתון מול בודקי הודעות.", + "apihelp-translationcheck-description": "בדיקת תרגום נתון מול בודקי תקינות ההודעות המוגדרים.", "apihelp-translationcheck-summary": "אימות תרגומים.", "apihelp-translationcheck-param-title": "שם הדף עם מרחב השם וקוד השפה.", "apihelp-translationcheck-param-translation": "התרגום שיאומת.", + "apierror-translate-changeset-modified": "ערכת השינויים שונתה על־ידי משתמש או תהליך אחר. אי־אפשר לשמור את השינויים שלך כי הם יכולים לדרוס את השינויים שלהם. נא לרענן את הדף כדי לראות את השינויים האחרונים.", "apierror-translate-duplicateaggregategroup": "קבוצת ההודעות כבר קיימת", "apierror-translate-fuzzymessage": "לא ניתן לסקור תרגומים שאינם מעודכנים", "apierror-translate-groupreviewdisabled": "סקירת קבוצת ההודעות אינה בשימוש.", @@ -119,13 +134,20 @@ "apierror-translate-invalidupdate": "עדכון בלתי־תקין", "apierror-translate-language-disabled": "התרגום לשפה $1 מבוטל.", "apierror-translate-language-disabled-reason": "התרגום לשפה $1 מבוטל: $2", - "apierror-translate-language-disabled-source": "שפת המקור של הקבוצה הזו היא $1. נא לבחור שפה אחרת לתרגום.", "apierror-translate-nodynamicgroups": "קבוצת הודעות דינמיות אינן נתמכות כאן", "apierror-translate-nomessagefortitle": "הכותרת אינה מתאימה לשום הודעה בת־תרגום", "apierror-translate-notranslationservices": "לא הוגדרו שירותי תרגום ציבוריים. מנהל אתר הוויקי צריך להגדיר את $wgTranslateTranslationServices באופן תקין כדי שניתן יהיה להשתמש בתכונה זו.", "apierror-translate-owntranslation": "לא ניתן לסקור את ההודעות של עצמך", "apierror-translate-sandboxdisabled": "ארגז החול אינו בשימוש", - "apierror-translate-sandbox-invalidppassword": "ססמה בלתי־תקינה", + "apierror-translate-sandbox-invalidppassword": "סיסמה בלתי־תקינה", + "apierror-translate-smg-nochanges": "אין עוד שינויים שצריך לעבד.", "apierror-translate-unknownmessage": "הודעה בלתי־ידועה", - "apiwarn-translate-alreadyreviewedbyyou": "כבר סומנה בתור הודעה הודעה שנסקרה על־ידיך" + "apierror-translate-invalid-changeset-name": "הועבר שם ערכת שינויים בלתי־תקין – $1", + "apierror-translate-invalid-operation": "פעולה בלתי־תקינה: $1. ערכים תקינים – $2.", + "apierror-translate-addition-key-invalid": "מפתח ההודעה שהועבר להוספה לא נמצא ברשימת ההודעות ששמן שוּנה עבור שפת המקור.", + "apierror-translate-rename-msg-new": "אפשר להוסיף רק הודעות ששמן שוּנה בתור הודעת חדשות.", + "apierror-translate-rename-key-invalid": "מפתח ההודעה שהועבר לשינוי שם לא נמצאו ברשימת השינויים עבור שפת המקור.", + "apierror-translate-rename-state-invalid": "אחת מההודעות שהועברו לשינוי שם אמורה להתווסף מחדש, והאחרת צריכה להימחק. מצבים נוכחיים – הוספה: $1 ומחיקה: $2.", + "apiwarn-translate-alreadyreviewedbyyou": "כבר סומנה בתור הודעה הודעה שנסקרה על־ידיך", + "apiwarn-translate-language-disabled-source": "שפת המקור של הקבוצה הזאת היא $1. נא לבחור שפה אחרת לתרגום." } diff --git a/MLEB/Translate/i18n/api/hr.json b/MLEB/Translate/i18n/api/hr.json index 832fac96..a3cc4b2e 100644 --- a/MLEB/Translate/i18n/api/hr.json +++ b/MLEB/Translate/i18n/api/hr.json @@ -4,5 +4,8 @@ "Bugoslav" ] }, - "apierror-translate-language-disabled-source": "Izvorni jezik ove grupe je $1. Molimo Vas, izaberite drugi jezik na koji želite prevoditi." + "apierror-translate-language-disabled": "Onemogućeno je prevođenje na jezik: $1.", + "apierror-translate-language-disabled-reason": "Onemogućeno je prevođenje na sljedeći jezik: $1; razlog: $2", + "apierror-translate-nomessagefortitle": "Naslov ne odgovara prevodivoj poruci", + "apiwarn-translate-language-disabled-source": "Izvorni jezik ove grupe je $1. Molimo Vas, izaberite drugi jezik na koji želite prevoditi." } diff --git a/MLEB/Translate/i18n/api/hu.json b/MLEB/Translate/i18n/api/hu.json index 3553d655..c8e3009f 100644 --- a/MLEB/Translate/i18n/api/hu.json +++ b/MLEB/Translate/i18n/api/hu.json @@ -95,7 +95,6 @@ "apierror-translate-invalidupdate": "Érvénytelen frissítés", "apierror-translate-language-disabled": "$1 nyelvre a fordítás le van tiltva.", "apierror-translate-language-disabled-reason": "$1 nyelvre a fordítás le van tiltva: $2", - "apierror-translate-language-disabled-source": "Ennek az üzenetcsoportnak a forrásnyelve $1. Válassz egy másik nyelvet a fordításhoz.", "apierror-translate-nodynamicgroups": "A dinamikus üzenetcsoportok itt nem támogatottak", "apierror-translate-nomessagefortitle": "A cím nem tartozik egy lefordítható üzenethez", "apierror-translate-notranslationservices": "Nincs beállítva nyilvános fordítási szolgáltatás. A wiki rendszergazdájának be kell állítania megfelelően a $wgTranslateTranslationServices változót, mielőtt ez a funkció használható lenne.", @@ -103,5 +102,6 @@ "apierror-translate-sandboxdisabled": "A homokozófunkció nincs használatban", "apierror-translate-sandbox-invalidppassword": "Érvénytelen jelszó", "apierror-translate-unknownmessage": "Ismeretlen üzenet", - "apiwarn-translate-alreadyreviewedbyyou": "Már megjelölted átnézettként" + "apiwarn-translate-alreadyreviewedbyyou": "Már megjelölted átnézettként", + "apiwarn-translate-language-disabled-source": "Ennek az üzenetcsoportnak a forrásnyelve $1. Válassz egy másik nyelvet a fordításhoz." } diff --git a/MLEB/Translate/i18n/api/ia.json b/MLEB/Translate/i18n/api/ia.json index cd76d8d4..b526b613 100644 --- a/MLEB/Translate/i18n/api/ia.json +++ b/MLEB/Translate/i18n/api/ia.json @@ -6,8 +6,41 @@ }, "apihelp-aggregategroups-description": "Gerer le gruppos de messages aggregate.\n\nTu pote adder e mover gruppos de messages aggregate e associar o dissociar gruppos de messages a illos (un al vice).", "apihelp-aggregategroups-summary": "Gerer gruppos de messages aggregate.", + "apihelp-aggregategroups-extended-description": "Tu pote adder e remover gruppos de messages aggregate e associar o dissociar gruppos de messages a illos (un al vice).", + "apihelp-aggregategroups-param-do": "Que facer con le gruppo de messages aggregate.", + "apihelp-aggregategroups-param-aggregategroup": "ID del gruppo de messages aggregate.", + "apihelp-aggregategroups-param-group": "ID del gruppo de messages.", + "apihelp-aggregategroups-param-groupname": "Nomine del gruppo de messages aggregate.", + "apihelp-aggregategroups-param-groupdescription": "Description del gruppo de messages aggregate.", + "apihelp-aggregategroups-example-1": "Associar un gruppo", + "apihelp-groupreview-description": "Definir le statos de fluxo de travalio del gruppos de messages.", + "apihelp-groupreview-summary": "Definir le statos de fluxo de travalio del gruppos de messages.", + "apihelp-groupreview-param-group": "Gruppo de messages.", + "apihelp-groupreview-param-language": "Codice de lingua.", + "apihelp-groupreview-param-state": "Le nove stato pro le gruppo.", + "apihelp-groupreview-example-1": "Marcar le stato del traduction in germano pro le gruppo de messages \"group-Example\" como preste", + "apihelp-query+languagestats-description": "Consultar statisticas de lingua.", + "apihelp-query+languagestats-summary": "Consultar statisticas de lingua.", + "apihelp-query+languagestats-param-timelimit": "Maximo de tempore a usar pro calcular statisticas mancante. Si zero, essera retornate solmente le resultatos immagazinate in cache ab initio.", + "apihelp-query+languagestats-param-language": "Codice de lingua.", + "apihelp-query+languagestats-example-1": "Lista de statisticas de completion de traduction pro finnese", + "apihelp-query+messagecollection-description": "Consultar MessageCollection sur traductiones.", + "apihelp-query+messagecollection-summary": "Consultar MessageCollection sur traductiones.", + "apihelp-query+messagecollection-param-group": "Gruppo de messages.", + "apihelp-query+messagecollection-param-language": "Codice de lingua.", "apihelp-query+messagecollection-param-limit": "Numero de messages a monstrar (post filtration).", + "apihelp-query+messagecollection-param-filter": "Filtros de collection de messages. Usa ! pro negar un condition. Per exemplo, !fuzzy significa listar solmente le messages non marcate con FUZZY. Le filtros se applica in le ordine fornite.\n;fuzzy:Messages con le etiquetta FUZZY.\n;optional:Messages que solmente debe esser traducite si modificationes es necessari.\n;ignored:Messages que nunquam es traducite.\n;hastranslation:Messages que ha un traduction, marcate o non con le etiquetta FUZZY.\n;translated:Messages que ha un traduction non marcate con le etiquetta FUZZY.\n;changed:Messages que ha essite traducite o alterate post le ultime exportation.\n;reviewer:N:Messages ubi le usator numero N es inter le revisores.\n;last-translator:N:Messages ubi le usator numero N es le ultime traductor.", + "apihelp-query+messagecollection-param-prop": "Que proprietates obtener:\n;definition:Definition del message.\n;translation:Traduction actual (sin catena de texto $1 si existe, usa le etiquettas pro cercar traductiones obsolete o incorrecte)\n;tags:Etiquettas del message, como \"optional\", \"ignored\" e \"fuzzy\".\n;properties:Proprietates del message, como \"status\", \"revision\", \"last-translator\". Pote variar inter messages.\n;revision:Obsolete! Usa $2prop=properties.", + "apihelp-query+messagecollection-example-1": "Lista de linguas supportate", + "apihelp-query+messagecollection-example-2": "Lista de definitiones de messages non-optional pro le gruppo \"page-Example\"", "apihelp-query+messagecollection-example-3": "Lista de messages optional in finnese con etiquettas pro le gruppo \"page-Example\"", + "apihelp-query+messagecollection-example-4": "Plus information sur le ultime versiones de traduction pro le gruppo \"page-Example\"", + "apihelp-query+messagegroups-description": "Retorna information sur gruppos de messages.\n\nNota que le parametro \"uselang\" affecta le reproduction de partes dependente de lingua.", + "apihelp-query+messagegroups-summary": "Retorna information sur gruppos de messages.", + "apihelp-query+messagegroups-extended-description": "Nota que le parametro \"uselang\" affecta le reproduction de partes dependente de lingua.", + "apihelp-query+messagegroups-param-depth": "Quando se usa le formato de arbore, limitar le profunditate a iste numero de nivellos. Le valor 0 significa que non se monstra subgruppos. Si le limite es attingite, le resultato include un valor \"groupcount\", que indica le numero de filios directe.", + "apihelp-query+messagegroups-param-filter": "Solmente retorna messages con IDs que corresponde a un o plus del entratas fornite (sin differentiar majusculas e minusculas, separate per barras vertical, * es metacharacter).", + "apihelp-query+messagegroups-param-format": "In le formato de arbore, gruppos de messages pote exister in plure locos in le arbore.", "apihelp-query+messagegroups-param-iconsize": "Dimension preferite del icone de gruppo rasterisate.", "apihelp-translatesandbox-param-username": "Nomine de usator al momento de creation del usator.", "apihelp-translationaids-description": "Consultar tote le adjutas de traduction.", diff --git a/MLEB/Translate/i18n/api/io.json b/MLEB/Translate/i18n/api/io.json new file mode 100644 index 00000000..85305466 --- /dev/null +++ b/MLEB/Translate/i18n/api/io.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Joao Xavier" + ] + }, + "apihelp-groupreview-param-language": "Linguala kodexo." +} diff --git a/MLEB/Translate/i18n/api/is.json b/MLEB/Translate/i18n/api/is.json index 73a83492..06c6ec05 100644 --- a/MLEB/Translate/i18n/api/is.json +++ b/MLEB/Translate/i18n/api/is.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Sveinn í Felli", - "MyraMidnight" + "MyraMidnight", + "Sveinn í Felli" ] }, "apihelp-groupreview-param-group": "Þýðingahópur.", @@ -11,6 +11,7 @@ "apihelp-query+messagecollection-param-group": "Þýðingahópur.", "apihelp-query+messagecollection-param-language": "Tungumálakóði.", "apihelp-query+messagecollection-param-limit": "Hversu mörg skilaboð viltu sjá (eftir síun).", + "apihelp-query+messagecollection-example-1": "Listi yfir studd tungumál", "apihelp-query+messagetranslations-param-title": "Heildartitill á þekktum skilaboðum.", "apihelp-translatesandbox-param-do": "Hvað skal gera.", "apihelp-translatesandbox-param-username": "Notendanafn við sköpun notanda.", diff --git a/MLEB/Translate/i18n/api/it.json b/MLEB/Translate/i18n/api/it.json index 23f08114..0a7c30c8 100644 --- a/MLEB/Translate/i18n/api/it.json +++ b/MLEB/Translate/i18n/api/it.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ - "Ricordisamoa", - "F. Cosoleto", - "Statix64", + "Anto", "Beta16", - "Anto" + "F. Cosoleto", + "Ricordisamoa", + "Statix64" ] }, "apihelp-aggregategroups-description": "Gestisci gruppi di messaggi aggregati.\n\nPuoi aggiungere e rimuovere gruppi di messaggi aggregati e associare o dissociare i gruppi di messaggi l'uno dall'altro (uno alla volta).", diff --git a/MLEB/Translate/i18n/api/ja.json b/MLEB/Translate/i18n/api/ja.json index ee3393f2..d029ed24 100644 --- a/MLEB/Translate/i18n/api/ja.json +++ b/MLEB/Translate/i18n/api/ja.json @@ -1,11 +1,105 @@ { "@metadata": { "authors": [ - "Sujiniku", - "Shirayuki" + "Omotecho", + "Shirayuki", + "Sujiniku" ] }, + "apihelp-aggregategroups-description": "メッセージ群の集計は追加もしくは削除の対象で、メッセージ群を関連付けまたは分離できます(処理は一度に1件ずつ)。", + "apihelp-aggregategroups-summary": "メッセージ群の集計を管理。", + "apihelp-aggregategroups-extended-description": "メッセージ群の集計は追加もしくは削除の対象で、メッセージ群を関連付けまたは分離できます(処理は一度に1件ずつ)。", + "apihelp-aggregategroups-param-do": "メッセージ群の集計とは。", + "apihelp-aggregategroups-param-aggregategroup": "メッセージ群IDを集計。", "apihelp-aggregategroups-param-group": "メッセージ群の ID。", + "apihelp-aggregategroups-param-groupname": "メッセージ群名を集計。", + "apihelp-aggregategroups-param-groupdescription": "メッセージ群の説明をまとめる。", + "apihelp-aggregategroups-example-1": "メッセージ群を関連付ける", + "apihelp-groupreview-description": "メッセージ群のワークフローの状態を設定。", + "apihelp-groupreview-summary": "メッセージ群のワークフローの状態を設定。", + "apihelp-groupreview-param-group": "メッセージ群。", + "apihelp-groupreview-param-language": "言語コード。", + "apihelp-groupreview-param-state": "メッセージ群の新しい状態。", + "apihelp-groupreview-example-1": "メッセージ群「group-Example」に対するドイツ語翻訳の状態を準備完了に設定", + "apihelp-query+languagestats-description": "クエリ言語統計。", + "apihelp-query+languagestats-summary": "クエリ言語統計。", + "apihelp-query+languagestats-param-language": "言語コード。", + "apihelp-query+languagestats-example-1": "フィンランド語の翻訳完了の統計一覧", + "apihelp-query+messagecollection-description": "翻訳に関する MessageCollection のクエリを実行。", + "apihelp-query+messagecollection-summary": "翻訳に関する MessageCollection のクエリを実行。", + "apihelp-query+messagecollection-param-group": "メッセージ群。", + "apihelp-query+messagecollection-param-language": "言語コード。", + "apihelp-query+messagecollection-param-limit": "表示するメッセージ件数(絞り込み後)", + "apihelp-query+messagecollection-example-1": "サポートする言語一覧", + "apihelp-query+messagecollection-example-2": "「group-Example」グループにおける必須メッセージ定義の一覧", + "apihelp-query+messagecollection-example-3": "「group-Example」グループにタグ付けされたフィンランド語の選択メッセージの一覧", + "apihelp-query+messagecollection-example-4": "「group-Example」グループにおける翻訳の最近の更新の詳細", + "apihelp-query+messagegroups-description": "メッセージ群に関して返す情報。\n\n利用者言語のパラメーターは言語依存の部分の出力に影響を与えますのでご注意ください。", + "apihelp-query+messagegroups-summary": "メッセージ群に関する情報を返す。", + "apihelp-query+messagegroups-extended-description": "利用者言語のパラメーターは言語依存の部分の出力に影響を与えますのでご注意ください。", + "apihelp-query+messagegroups-param-format": "樹状構造の場合、メッセージグループは樹状の複数の場所に存在できます。", + "apihelp-query+messagegroups-param-iconsize": "ラスター化したグループアイコンの最適なサイズ。", + "apihelp-query+messagegroups-example-1": "メッセージ群の表示", + "apihelp-query+messagegroupstats-description": "メッセージ群の統計クエリを実行。", + "apihelp-query+messagegroupstats-summary": "クエリメッセージ群の統計。", "apihelp-query+messagegroupstats-param-group": "メッセージ群の ID。", - "apihelp-searchtranslations-param-match": "任意/すべて の検索ワードのマッチ" + "apihelp-query+messagegroupstats-example-1": "「page-Example」グループの翻訳完了統計の一覧", + "apihelp-query+messagetranslations-description": "単一のメッセージに対するすべての翻訳をクエリする。", + "apihelp-query+messagetranslations-summary": "単一のメッセージに対するすべての翻訳をクエリする。", + "apihelp-query+messagetranslations-example-1": "\"MediaWiki:January\"に対するウィキ上の翻訳一覧", + "apihelp-translatesandbox-description": "サインアップしてサンドボックス利用者を管理。", + "apihelp-translatesandbox-summary": "サインアップしてサンドボックス利用者を管理。", + "apihelp-translatesandbox-param-userid": "管理対象の利用者の利用者ID。作成には「0」を使います。", + "apihelp-translatesandbox-param-username": "利用者を作成する時の利用者名。", + "apihelp-translatesandbox-param-password": "利用者を作成する時のパスワード。", + "apihelp-translatesandbox-param-email": "利用者を作成するときにメールを送信。", + "apihelp-translationaids-description": "すべての翻訳補助機能をクエリする。", + "apihelp-translationaids-summary": "すべての翻訳補助機能をクエリする。", + "apihelp-translationaids-param-group": "メッセージが属するメッセージ群。空欄の場合は親群を採用。", + "apihelp-translationaids-param-prop": "採用する翻訳ヘルパーの指定。", + "apihelp-translationreview-description": "翻訳を査読済みにする。", + "apihelp-translationreview-summary": "翻訳を査読済みにする。", + "apihelp-translationreview-param-revision": "査読対象の版番号。", + "apihelp-translationstash-param-translation": "この利用者が手がけた翻訳。", + "apihelp-translationstash-param-metadata": "JSON オブジェクト。", + "apihelp-ttmserver-param-service": "利用できる翻訳サービスから選択。", + "apihelp-ttmserver-param-sourcelanguage": "翻訳原文の言語コード。", + "apihelp-ttmserver-param-targetlanguage": "翻訳原文の言語コード。", + "apihelp-ttmserver-param-text": "翻訳原文を探す文字列。", + "apihelp-ttmserver-example-1": "フィンランド語", + "apihelp-searchtranslations-description": "翻訳の検索", + "apihelp-searchtranslations-summary": "翻訳を検索する。", + "apihelp-searchtranslations-param-service": "利用できる翻訳サービスから選択。", + "apihelp-searchtranslations-param-query": "検索する文字列。", + "apihelp-searchtranslations-param-sourcelanguage": "翻訳原文の言語コード。", + "apihelp-searchtranslations-param-language": "文字列を検索する言語コード。", + "apihelp-searchtranslations-param-group": "文字列を検索するグループID。", + "apihelp-searchtranslations-param-filter": "メッセージの翻訳状態のフィルタ。", + "apihelp-searchtranslations-param-match": "任意/すべて の検索ワードのマッチ", + "apihelp-searchtranslations-param-case": "大文字小文字を識別 (しない)。", + "apihelp-searchtranslations-param-limit": "詮索結果のサイズ。", + "apihelp-searchtranslations-example-1": "選択言語の翻訳を表示。", + "apihelp-searchtranslations-example-2": "翻訳原文の言語クエリと対照して未翻訳のメッセージを表示。", + "apihelp-translationcheck-summary": "翻訳を検証する。", + "apihelp-translationcheck-param-title": "名前空間と言語コードとページ名。", + "apihelp-translationcheck-param-translation": "検証対象の翻訳。", + "apierror-translate-duplicateaggregategroup": "メッセージ群はすでに存在します", + "apierror-translate-groupreviewdisabled": "メッセージ群の査読は未使用です。", + "apierror-translate-invalidaggregategroup": "無効なメッセージ群の集計", + "apierror-translate-invalidaggregategroupname": "無効なメッセージ群の集計の名前", + "apierror-translate-invalidgroup": "存在しないもしくは無効なグループ", + "apierror-translate-invalidstate": "要求された状態は無効です。", + "apierror-translate-invalidlanguage": "請求された言語は無効です。", + "apierror-translate-invalidupdate": "更新が無効です", + "apierror-translate-language-disabled": "$1への翻訳はできません。", + "apierror-translate-language-disabled-reason": "$1への翻訳はできません。$2", + "apierror-translate-nodynamicgroups": "動的メッセージ群はここではサポートしていません", + "apierror-translate-nomessagefortitle": "題名が翻訳可能なメッセージと対応しません", + "apierror-translate-owntranslation": "自分の翻訳の査読はできません", + "apierror-translate-sandboxdisabled": "サンドボックスの機能は使用できません", + "apierror-translate-sandbox-invalidppassword": "無効なパスワード", + "apierror-translate-smg-nochanges": "処理する変更はありません。", + "apierror-translate-invalid-operation": "無効な操作:$1。有効な値 - $2。", + "apiwarn-translate-alreadyreviewedbyyou": "あなたの査読済みと記録があります", + "apiwarn-translate-language-disabled-source": "このメッセージ群の翻訳原文の言語コードは$1です。翻訳するには異なる言語を選択してください。" } diff --git a/MLEB/Translate/i18n/api/ka.json b/MLEB/Translate/i18n/api/ka.json index 96218fcb..c77c32da 100644 --- a/MLEB/Translate/i18n/api/ka.json +++ b/MLEB/Translate/i18n/api/ka.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "MIKHEIL", - "David1010" + "David1010", + "MIKHEIL" ] }, "apihelp-aggregategroups-param-group": "შეტყობინების ჯგუფის ID.", diff --git a/MLEB/Translate/i18n/api/ko.json b/MLEB/Translate/i18n/api/ko.json index 72d8e34c..daa34d5d 100644 --- a/MLEB/Translate/i18n/api/ko.json +++ b/MLEB/Translate/i18n/api/ko.json @@ -2,21 +2,27 @@ "@metadata": { "authors": [ "LiteHell", - "아라", - "Ykhwong" + "Revi", + "Ykhwong", + "아라" ] }, "apihelp-aggregategroups-param-group": "메시지 그룹 ID.", "apihelp-groupreview-param-group": "메시지 그룹.", "apihelp-groupreview-param-language": "언어 코드.", "apihelp-query+languagestats-param-language": "언어 코드입니다.", + "apihelp-query+managemessagegroups-param-groupId": "그룹 Id", + "apihelp-query+managemessagegroups-param-messageKey": "메시지 키", "apihelp-query+messagecollection-param-group": "메시지 그룹.", "apihelp-query+messagecollection-param-language": "언어 코드.", "apihelp-query+messagecollection-example-1": "지원하는 언어 목록", "apihelp-query+messagegroups-summary": "메시지 그룹에 관한 정보를 반환합니다.", "apihelp-query+messagegroupstats-param-group": "메시지 그룹 ID입니다.", + "apihelp-managemessagegroups-param-groupId": "그룹 Id", "apihelp-translationreview-summary": "번역을 검토한 것으로 표시합니다.", "apihelp-ttmserver-param-targetlanguage": "제안의 언어 코드입니다.", + "apihelp-searchtranslations-description": "번역을 검색합니다.", + "apihelp-searchtranslations-summary": "번역을 검색합니다.", "apihelp-searchtranslations-param-query": "검색할 문자열입니다.", "apihelp-searchtranslations-param-limit": "결과의 크기입니다.", "apihelp-translationcheck-summary": "번역을 확인합니다.", @@ -28,10 +34,10 @@ "apierror-translate-invalidupdate": "유효하지 않은 업데이트", "apierror-translate-language-disabled": "$1로의 번역이 비활성화되어 있습니다.", "apierror-translate-language-disabled-reason": "$1로의 번역이 비활성화되어 있습니다: $2", - "apierror-translate-language-disabled-source": "이 그룹의 원본 언어는 $1입니다. 번역 결과물에 쓰일 다른 언어를 선택해 주십시오.", "apierror-translate-nomessagefortitle": "제목이 번역 가능한 메시지와 일치하지 않습니다", "apierror-translate-notranslationservices": "공용 번역 서비스가 구성되지 않았습니다. 위키 관리자는 $wgTranslateTranslationServices를 적절하게 설정해야 이 기능을 사용할 수 있습니다.", "apierror-translate-sandboxdisabled": "연습장 기능을 사용하고 있지 않습니다", "apierror-translate-sandbox-invalidppassword": "유효하지 않은 비밀번호", - "apierror-translate-unknownmessage": "알 수 없는 메시지" + "apierror-translate-unknownmessage": "알 수 없는 메시지", + "apiwarn-translate-language-disabled-source": "이 그룹의 원본 언어는 $1입니다. 번역 결과물에 쓰일 다른 언어를 선택해 주십시오." } diff --git a/MLEB/Translate/i18n/api/ku-latn.json b/MLEB/Translate/i18n/api/ku-latn.json index 5be63017..b31e90e6 100644 --- a/MLEB/Translate/i18n/api/ku-latn.json +++ b/MLEB/Translate/i18n/api/ku-latn.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "George Animal", - "Bikarhêner" + "Bikarhêner", + "George Animal" ] }, "apihelp-groupreview-param-language": "Koda ziman.", diff --git a/MLEB/Translate/i18n/api/lt.json b/MLEB/Translate/i18n/api/lt.json index 2debe428..8ed466f7 100644 --- a/MLEB/Translate/i18n/api/lt.json +++ b/MLEB/Translate/i18n/api/lt.json @@ -1,9 +1,15 @@ { "@metadata": { "authors": [ - "Eitvys200" + "Eitvys200", + "Tomasdd" ] }, + "apihelp-groupreview-param-language": "Kalbos kodas.", + "apihelp-query+languagestats-param-language": "Kalbos kodas.", + "apihelp-query+messagecollection-param-group": "Pranešimo grupė.", + "apihelp-query+messagecollection-param-language": "Kalbos kodas.", + "apihelp-query+messagecollection-example-1": "Palaikomų kalbų sąrašas", "apihelp-translatesandbox-param-do": "Ką daryti.", "apihelp-translatesandbox-param-username": "Vartotojo vardas, kai kuriamas vartotojas.", "apihelp-translatesandbox-param-password": "Slaptažodis, kai kuriamas vartotojas.", @@ -20,6 +26,7 @@ "apihelp-ttmserver-param-text": "Tekstas, kuriam rasti pasiūlymus.", "apihelp-ttmserver-example-1": "Gauti pasiūlymus verčiant „Help“ iš anglų k. į suomių k.", "apihelp-searchtranslations-description": "Ieškoti vertimų.", + "apihelp-searchtranslations-summary": "Ieškoti vertimų.", "apihelp-searchtranslations-param-service": "Kurią iš galimų vertimų paslaugų naudoti.", "apihelp-searchtranslations-param-sourcelanguage": "Šaltinio teksto kalbos kodas.", "apihelp-searchtranslations-param-filter": "Pranešimo vertimo būsenos filtras.", @@ -28,9 +35,10 @@ "apierror-translate-duplicateaggregategroup": "Pranešimo grupė jau egzistuoja", "apierror-translate-invalidlanguage": "Prašoma kalba negalima.", "apierror-translate-invalidupdate": "Negalimas atnaujinimas", - "apierror-translate-language-disabled": "Vertimai į šią kalbą yra išjungtas", + "apierror-translate-language-disabled": "Vertimas į $1 yra išjungtas.", "apierror-translate-owntranslation": "Negalima peržiūrėti savo paties vertimų", "apierror-translate-sandboxdisabled": "Smėlio dėžės funkcija nenaudojama", + "apierror-translate-sandbox-invalidppassword": "Neteisingas slaptažodis", "apierror-translate-unknownmessage": "Nežinomas pranešimas", "apiwarn-translate-alreadyreviewedbyyou": "Jau pažymėtas kaip peržiūrėtas jūsų" } diff --git a/MLEB/Translate/i18n/api/lv.json b/MLEB/Translate/i18n/api/lv.json index fd237241..9b77597a 100644 --- a/MLEB/Translate/i18n/api/lv.json +++ b/MLEB/Translate/i18n/api/lv.json @@ -8,16 +8,23 @@ "apihelp-groupreview-param-group": "Ziņojumu grupa.", "apihelp-groupreview-param-language": "Valodas kods.", "apihelp-query+languagestats-param-language": "Valodas kods.", + "apihelp-query+managemessagegroups-param-groupId": "Grupas Id", "apihelp-query+messagecollection-param-group": "Ziņojumu grupa.", "apihelp-query+messagecollection-param-language": "Valodas kods.", "apihelp-query+messagecollection-example-1": "Atbalstīto valodu saraksts", "apihelp-query+messagegroups-example-1": "Rādīt ziņojumu grupas", "apihelp-query+messagegroupstats-param-group": "Ziņojumu grupas ID.", + "apihelp-managemessagegroups-param-groupId": "Grupas Id", "apihelp-translatesandbox-param-do": "Ko darīt.", "apihelp-translationstash-param-subaction": "Darbība.", + "apihelp-translationstash-param-title": "Tulkošanas vienības lapas nosaukums.", "apihelp-translationstash-param-metadata": "JSON objekts.", "apihelp-searchtranslations-description": "Meklēt tulkojumus.", "apihelp-searchtranslations-summary": "Meklēt tulkojumus.", "apihelp-searchtranslations-param-limit": "Rezultāta izmērs.", + "apihelp-searchtranslations-example-1": "Rādīt tulkojumus valodai.", + "apihelp-translationcheck-summary": "Validēt tulkojumus.", + "apierror-translate-owntranslation": "Savus tulkojumus nevar pārlasīt", + "apierror-translate-sandboxdisabled": "Smilšu kastes iespēja netiek izmantota", "apierror-translate-sandbox-invalidppassword": "Nederīga parole" } diff --git a/MLEB/Translate/i18n/api/mk.json b/MLEB/Translate/i18n/api/mk.json index 9d867a11..385a00f9 100644 --- a/MLEB/Translate/i18n/api/mk.json +++ b/MLEB/Translate/i18n/api/mk.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Bjankuloski06" + "Bjankuloski06", + "Vlad5250" ] }, "apihelp-aggregategroups-description": "Раководење со насобрани групи пораки.\n\nМожете да додавате или отстранувате насобрани групи пораки и да ги придружувате во или отстранувате од збировите (една по една).", @@ -25,6 +26,12 @@ "apihelp-query+languagestats-param-language": "Јазичен код.", "apihelp-query+languagestats-example-1": "Список на статистики за потполноста на преводите на фински", "apihelp-query+messagecollection-description": "Побарај преводи од Збирка пораки", + "apihelp-query+managemessagegroups-summary": "Дај можни преименувања за порака во група при увезување", + "apihelp-query+managemessagegroups-description": "Дај можни преименувања за порака во група при увезување", + "apihelp-query+managemessagegroups-param-groupId": "Назнака на групата", + "apihelp-query+managemessagegroups-param-messageKey": "Клуч на пораката", + "apihelp-query+managemessagegroups-param-changesetName": "Назив на промените — По основно / Незгрижена / МедијаВики итн.", + "apihelp-query+managemessagegroups-example-1": "Дај можни преименувања за дадениот клуч во дадената група.", "apihelp-query+messagecollection-summary": "Побарај преводи од Збирка пораки", "apihelp-query+messagecollection-param-group": "Група пораки.", "apihelp-query+messagecollection-param-language": "Јазичен код.", @@ -48,15 +55,23 @@ "apihelp-query+messagegroups-example-1": "Прикажи групи пораки", "apihelp-query+messagegroupstats-description": "Побарај статистики за група пораки.", "apihelp-query+messagegroupstats-summary": "Побарај статистики за група пораки.", - "apihelp-query+messagegroupstats-param-timelimit": "Највеќе време што може да се потрошиНајвеќе време што може да се потроши за пресметување на отустните статистики. Ако е нула, ќе се дадае само меѓускладираните исход од почетокот.", + "apihelp-query+messagegroupstats-param-timelimit": "Највеќе време што може да се потроши за пресметување на отсутните статистики. Ако е нула, ќе се дадае само меѓускладираните исход од почетокот.", "apihelp-query+messagegroupstats-param-group": "Назнака на групата пораки.", "apihelp-query+messagegroupstats-example-1": "Список на статистики за потполност на преводите за групата „page-Example“", "apihelp-query+messagetranslations-description": "Побарај ги сите преводи на една порака.", "apihelp-query+messagetranslations-summary": "Побарај ги сите преводи на една порака.", "apihelp-query+messagetranslations-param-title": "Целосен наслов на позната порака.", "apihelp-query+messagetranslations-example-1": "Список на преводи во викито за „MediaWiki:January“", - "apihelp-translatesandbox-description": "Регистрација и управување со корисници во песочникот.", - "apihelp-translatesandbox-summary": "Регистрација и управување со корисници во песочникот.", + "apihelp-managemessagegroups-description": "Додај порака како преименување на постоечка порака или нова порака во групата при увезување", + "apihelp-managemessagegroups-summary": "Додај порака како преименување на постоечка порака или нова порака во групата при увезување", + "apihelp-managemessagegroups-param-groupId": "Назнака на групата", + "apihelp-managemessagegroups-param-renameMessageKey": "Клуч на целната порака што се преименува", + "apihelp-managemessagegroups-param-messageKey": "Клуч на пораката што заменува", + "apihelp-managemessagegroups-param-operation": "Задачата што треба да се извшри. Можни вредности — преименувај / нова", + "apihelp-managemessagegroups-param-changesetName": "Назив на промените — По основно / Незгрижена / МедијаВики итн.", + "apihelp-managemessagegroups-param-changesetModified": "Време и датум по Уникс на последната измена на промената. Ако е изменета по ова време, извршникот ќе даде грешка.", + "apihelp-translatesandbox-description": "Зачленување и управување со корисници во песочникот.", + "apihelp-translatesandbox-summary": "Зачленување и управување со корисници во песочникот.", "apihelp-translatesandbox-param-do": "Што да се прави.", "apihelp-translatesandbox-param-userid": "Кориснички назнаки на корисниците што се раководени. Користете 0 за создавања.", "apihelp-translatesandbox-param-username": "Корисничко име при создавање на корисникот.", @@ -65,7 +80,7 @@ "apihelp-translationaids-description": "Барај по сите преводни помагала.", "apihelp-translationaids-summary": "Барај по сите преводни помагала.", "apihelp-translationaids-param-title": "Целосен наслов на позната порака.", - "apihelp-translationaids-param-group": "На која група припаѓа пораката. Ако е празно, тогаш се користи главнатагрупа.", + "apihelp-translationaids-param-group": "На која група припаѓа пораката. Ако е празно, тогаш се користи главната група.", "apihelp-translationaids-param-prop": "Кои преводни помагала да се вклучат.", "apihelp-translationaids-example-1": "Прикажи помагала за [[MediaWiki:January/fi]]", "apihelp-translationreview-description": "Означи ги преводите како проверени.", @@ -102,10 +117,11 @@ "apihelp-searchtranslations-param-limit": "Големина на исходот.", "apihelp-searchtranslations-example-1": "Прикажи преводи на овој јазик.", "apihelp-searchtranslations-example-2": "Приказ на непреведени статии што одвораваат на бараното на изворниот јазик.", - "apihelp-translationcheck-description": "Потврди даден преводен внос според проверувачите на пораки.", + "apihelp-translationcheck-description": "Потврди даден преводен внос според поставените проверувачи на пораки.", "apihelp-translationcheck-summary": "Потврди преводи.", "apihelp-translationcheck-param-title": "Наслов на страницата со именски простор и јазичен код.", "apihelp-translationcheck-param-translation": "Превод за потврда.", + "apierror-translate-changeset-modified": "Промените се изменети од друг корисник или постапка. Вашите промени не можат да се зачуваат бидејќи ќе ги заменат нив. Превчитајте ја страницата за да ги видите најновите промени.", "apierror-translate-duplicateaggregategroup": "Групата пораки веќе постои", "apierror-translate-fuzzymessage": "Не можете да проверувате застарени пораки", "apierror-translate-groupreviewdisabled": "Проверката на групи пораки не е во употреба.", @@ -117,13 +133,20 @@ "apierror-translate-invalidupdate": "Неважечка поднова", "apierror-translate-language-disabled": "Преведувањето на $1 е оневозможено.", "apierror-translate-language-disabled-reason": "Преведувањето на $1 е оневозможено: $2", - "apierror-translate-language-disabled-source": "Изворниот јазик на оваа група е $1. Изберете на кој јазик сакате да преведувате.", "apierror-translate-nodynamicgroups": "Динамичките групи пораки не се поддржани овде", "apierror-translate-nomessagefortitle": "Насловот не соодветствува на преводлива порака", "apierror-translate-notranslationservices": "Нема поставено јавни преводни служби. Администраторот на викито треба соодветно да го постави $wgTranslateTranslationServices пред да може да се користи оваа можност.", "apierror-translate-owntranslation": "Не можете да проверувате свои преводи", "apierror-translate-sandboxdisabled": "Песочничката функција не е во употреба", "apierror-translate-sandbox-invalidppassword": "Неважечка лозинка", + "apierror-translate-smg-nochanges": "Нема промени за обработка.", "apierror-translate-unknownmessage": "Непозната порака", - "apiwarn-translate-alreadyreviewedbyyou": "Веќе ја имате означено како проверена" + "apierror-translate-invalid-changeset-name": "Дадена неважечка податотека на промените — $1", + "apierror-translate-invalid-operation": "Неважечка операција: $1. Допуштени вредности — $2.", + "apierror-translate-addition-key-invalid": "Клучот на пораката дадена за додавање не е најден во списокот на преименуваните пораки за изворниот јазик.", + "apierror-translate-rename-msg-new": "Само преименувани пораки можат да се додаваат како нови.", + "apierror-translate-rename-key-invalid": "Клучевите на пораките дадени за преименување не се пронајдени на списокот на промени за изворниот јазик.", + "apierror-translate-rename-state-invalid": "Една од пораките дадени за преименување треба да биде новододадена, а другата — избришана. Тековни состојби — додавање: $1 и бришење: $2.", + "apiwarn-translate-alreadyreviewedbyyou": "Веќе ја имате означено како проверена", + "apiwarn-translate-language-disabled-source": "Изворниот јазик на оваа група е $1. Изберете на кој јазик сакате да преведувате." } diff --git a/MLEB/Translate/i18n/api/my.json b/MLEB/Translate/i18n/api/my.json index 7133ad72..7315cca3 100644 --- a/MLEB/Translate/i18n/api/my.json +++ b/MLEB/Translate/i18n/api/my.json @@ -19,9 +19,9 @@ "apierror-translate-duplicateaggregategroup": "မက်ဆေ့အုပ်စု ရှိနှင့်ပြီးဖြစ်သည်", "apierror-translate-language-disabled": "$1 သို့ ဘာသာပြန်ခြင်းကို ပိတ်ထားသည်။", "apierror-translate-language-disabled-reason": "$1 သို့ ဘာသာပြန်ခြင်းကို ပိတ်ထားသည်: $2", - "apierror-translate-language-disabled-source": "ဤအုပ်စု၏ ရင်းမြစ်ဘာသာစကားမှာ $1 ဖြစ်သည်။ ကျေးဇူးပြု၍ ဘာသာပြန်ရန် အခြားဘာသာစကားကို ရွေးချယ်ပါ။", "apierror-translate-owntranslation": "ကိုယ်ပိုင်ဘာသာပြန်များကို ပြန်လည်မဆန်းစစ်နိုင်ပါ", "apierror-translate-sandbox-invalidppassword": "မဆီလျော်သော စကားဝှက်", "apierror-translate-unknownmessage": "အမည်မသိ မက်ဆေ့", - "apiwarn-translate-alreadyreviewedbyyou": "သင်မှ ပြန်လည်ဆန်းစစ်ပြီးဖြစ်ကြောင်း လုပ်ဆောင်နှင့်ပြီးသားဖြစ်သည်" + "apiwarn-translate-alreadyreviewedbyyou": "သင်မှ ပြန်လည်ဆန်းစစ်ပြီးဖြစ်ကြောင်း လုပ်ဆောင်နှင့်ပြီးသားဖြစ်သည်", + "apiwarn-translate-language-disabled-source": "ဤအုပ်စု၏ ရင်းမြစ်ဘာသာစကားမှာ $1 ဖြစ်သည်။ ကျေးဇူးပြု၍ ဘာသာပြန်ရန် အခြားဘာသာစကားကို ရွေးချယ်ပါ။" } diff --git a/MLEB/Translate/i18n/api/nb.json b/MLEB/Translate/i18n/api/nb.json index 0e3fef32..480b9256 100644 --- a/MLEB/Translate/i18n/api/nb.json +++ b/MLEB/Translate/i18n/api/nb.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Kingu", - "Jon Harald Søby" + "Jon Harald Søby", + "Kingu" ] }, "apihelp-aggregategroups-description": "Behandle aggregatmeldingsgrupper.\n\nDu kan legge til og fjerne aggregatmeldingsgrupper og assosiere eller disassosiere meldingsgrupper fra dem (én av gangen).", @@ -26,6 +26,12 @@ "apihelp-query+languagestats-param-language": "Språkkode.", "apihelp-query+languagestats-example-1": "Liste over statistikk for fullførte oversettelser til finsk", "apihelp-query+messagecollection-description": "Spør MessageCollection om oversettelser.", + "apihelp-query+managemessagegroups-summary": "Hent mulige omdøpinger for en melding i en gruppe under import", + "apihelp-query+managemessagegroups-description": "Hent mulige omdøpinger for en melding i en gruppe under import", + "apihelp-query+managemessagegroups-param-groupId": "Gruppe-ID", + "apihelp-query+managemessagegroups-param-messageKey": "Meldingsnøkkel", + "apihelp-query+managemessagegroups-param-changesetName": "Endre settnavn – Default / Unattended / MediaWiki osv.", + "apihelp-query+managemessagegroups-example-1": "Hent mulige omdøpinger for den gitte nøkkelen i den gitte gruppa.", "apihelp-query+messagecollection-summary": "Spør MessageCollection om oversettelser.", "apihelp-query+messagecollection-param-group": "Beskjedgruppe.", "apihelp-query+messagecollection-param-language": "Språkkode.", @@ -56,6 +62,14 @@ "apihelp-query+messagetranslations-summary": "Spør om alle oversettelser av en enkelt beskjed.", "apihelp-query+messagetranslations-param-title": "Den hele tittelen til en kjent beskjed.", "apihelp-query+messagetranslations-example-1": "List opp oversettelser i wikien for «MediaWiki:January»", + "apihelp-managemessagegroups-description": "Legg til en beskjed som en omdøping av en eksisterende beskjed eller en ny beskjed i gruppa under import", + "apihelp-managemessagegroups-summary": "Legg til en beskjed som en omdøping av en eksisterende beskjed eller en ny beskjed i gruppa under import", + "apihelp-managemessagegroups-param-groupId": "Gruppe-ID", + "apihelp-managemessagegroups-param-renameMessageKey": "Målbeskjednøkkelen blir omdøpt", + "apihelp-managemessagegroups-param-messageKey": "Erstatningsbeskjednøkkel", + "apihelp-managemessagegroups-param-operation": "Operasjonen som skal utføres. Mulige verdier – rename / new", + "apihelp-managemessagegroups-param-changesetName": "Endre settnavn – Default / Unattended / Mediawiki osv.", + "apihelp-managemessagegroups-param-changesetModified": "Unix-tidsstempel for når endringssettet sist ble endret. Hvis endringssettet har blitt endret etter dette vil API-et gi en feilmelding.", "apihelp-translatesandbox-description": "Registrering og behandling av sandkassebrukere.", "apihelp-translatesandbox-summary": "Registrering og behandling av sandkassebrukere.", "apihelp-translatesandbox-param-do": "Hva som skal gjøres.", @@ -79,7 +93,16 @@ "apihelp-translationstash-param-title": "Tittelen på sida med oversettelsesenheter.", "apihelp-translationstash-param-translation": "Oversettelse gjort av brukeren.", "apihelp-translationstash-param-metadata": "JSON-objekt.", + "apihelp-translationstash-param-username": "Brukeren hvis stash skal hentes. Bare priviligerte brukere kan gjøre dette.", "apihelp-translationstash-example-1": "Legg til en oversettelse for stashen for [[MediaWiki:Jan/fi]]", + "apihelp-translationstash-example-2": "Spørring mot stashen", + "apihelp-ttmserver-description": "Spørringsforslag fra oversettelsesminner.", + "apihelp-ttmserver-summary": "Spør mot forslag fra oversettelsesminner.", + "apihelp-ttmserver-param-service": "Hvilken av de tilgjengelige oversettelsestjenestene som skal brukes.", + "apihelp-ttmserver-param-sourcelanguage": "Språkkoden til kildeteksten.", + "apihelp-ttmserver-param-targetlanguage": "Språkkoden til forslaget.", + "apihelp-ttmserver-param-text": "Teksten det skal finnes forslag for.", + "apihelp-ttmserver-example-1": "Hent forslag for å oversette «Help» fra engelsk til finsk", "apihelp-searchtranslations-description": "Søk i oversettelser.", "apihelp-searchtranslations-summary": "Søk i oversettelser.", "apihelp-searchtranslations-param-service": "Hvilken av de tilgjengelige oversettelsestjenestene som skal brukes.", @@ -88,19 +111,42 @@ "apihelp-searchtranslations-param-language": "Språkkoden strengen skal søkes etter i.", "apihelp-searchtranslations-param-group": "Gruppe-ID-en strengen skal søkes etter i.", "apihelp-searchtranslations-param-filter": "Filter for meldingsoversettelsesstatus.", + "apihelp-searchtranslations-param-match": "Match alle søkeord.", + "apihelp-searchtranslations-param-case": "Om søket skal ta hensyn til store og små bokstaver.", + "apihelp-searchtranslations-param-offset": "Forskyvning for oversettelsene.", "apihelp-searchtranslations-param-limit": "Resultatets størrelse.", "apihelp-searchtranslations-example-1": "Vis oversettelser for språket.", "apihelp-searchtranslations-example-2": "Vis uoversatte beskjeder som matcher spørringen på målspråket.", + "apihelp-translationcheck-description": "Valider gitt oversettelsesinndata mot konfigurerte beskjedvalidatorer.", + "apihelp-translationcheck-summary": "Valider oversettelser.", + "apihelp-translationcheck-param-title": "Sidetittel med navnerom og språkkode.", + "apihelp-translationcheck-param-translation": "Oversettelsen som skal valideres.", + "apierror-translate-changeset-modified": "Endringssettet har blitt endret av en annen bruker eller prosess. Endringene dine kan ikke lagres siden det kan overskrive deres endringer. Oppdater siden for å se de siste endringene.", "apierror-translate-duplicateaggregategroup": "Meldingsgruppa finnes allerede", + "apierror-translate-fuzzymessage": "Kan ikke vurdere foreldede oversettelser", + "apierror-translate-groupreviewdisabled": "Beskjedgruppevurdering er ikke i bruk.", "apierror-translate-invalidaggregategroup": "Ugyldig aggregatmeldingsgruppe", "apierror-translate-invalidaggregategroupname": "Ugyldig navn på aggregatmeldingsgruppe", "apierror-translate-invalidgroup": "Gruppa finnes ikke eller er ugyldig", "apierror-translate-invalidstate": "Den forespurte tilstanden er ugyldig.", + "apierror-translate-invalidlanguage": "Den etterspurte språket er ugyldig.", "apierror-translate-invalidupdate": "Ugyldig oppdatering", - "apierror-translate-language-disabled": "Oversettelse til dette språket er slått av", + "apierror-translate-language-disabled": "Oversettelse til $1 er slått av.", + "apierror-translate-language-disabled-reason": "Oversettelse til $1 er slått av: $2", "apierror-translate-nodynamicgroups": "Dynamiske beskjedgrupper støttes ikke her", "apierror-translate-nomessagefortitle": "Tittelen samsvarer ikke med en oversettbar melding", + "apierror-translate-notranslationservices": "Ingen offentlige oversettelsestjenester har blitt satt opp. Wikiadministratoren må sette $wgTranslateTranslationServices før denne funksjonen kan brukes.", + "apierror-translate-owntranslation": "Kan ikke vurdere egne oversettelser", "apierror-translate-sandboxdisabled": "Sandkassefunksjonen er ikke i bruk", "apierror-translate-sandbox-invalidppassword": "Ugyldig passord", - "apierror-translate-unknownmessage": "Ukjent melding" + "apierror-translate-smg-nochanges": "Det er ingen endringer å prosessere.", + "apierror-translate-unknownmessage": "Ukjent melding", + "apierror-translate-invalid-changeset-name": "Ugyldig endringssettfilnavn gitt – $1", + "apierror-translate-invalid-operation": "Ugyldig operasjon: $1. Gyldige verdier – $2.", + "apierror-translate-addition-key-invalid": "Beskjednøkkel gitt for tillegg ble ikke funnet i den omdøpte beskjedlisten for kildespråket.", + "apierror-translate-rename-msg-new": "Bare omdøpte beskjeder kan legges til som nye beskjeder.", + "apierror-translate-rename-key-invalid": "Beskjednøkler gitt for omdøping ble ikke funnet i listen over endringer for kildespråket.", + "apierror-translate-rename-state-invalid": "En av beskjedene som ble gitt for omdøping bør være lagt til som ny, og den andre slettet. Nåværende statuser – tillegg: $1 og sletting: $2.", + "apiwarn-translate-alreadyreviewedbyyou": "Allerede merket som vurdert av deg", + "apiwarn-translate-language-disabled-source": "Kildespråket for denne gruppa er $1. Velg et annet språk å oversette til." } diff --git a/MLEB/Translate/i18n/api/nds-nl.json b/MLEB/Translate/i18n/api/nds-nl.json new file mode 100644 index 00000000..6d699b65 --- /dev/null +++ b/MLEB/Translate/i18n/api/nds-nl.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Servien" + ] + }, + "apihelp-translationstash-param-subaction": "Handeling." +} diff --git a/MLEB/Translate/i18n/api/ne.json b/MLEB/Translate/i18n/api/ne.json index be43d772..4f339487 100644 --- a/MLEB/Translate/i18n/api/ne.json +++ b/MLEB/Translate/i18n/api/ne.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Nirjal stha", - "NehalDaveND" + "NehalDaveND", + "Nirjal stha" ] }, "apihelp-groupreview-param-group": "सन्देश समूह", diff --git a/MLEB/Translate/i18n/api/nl.json b/MLEB/Translate/i18n/api/nl.json index 9b67cc30..8f71dcc4 100644 --- a/MLEB/Translate/i18n/api/nl.json +++ b/MLEB/Translate/i18n/api/nl.json @@ -1,13 +1,13 @@ { "@metadata": { "authors": [ - "Sjoerddebruin", - "Siebrand", - "Robin0van0der0vliet", + "Elroy", "Mainframe98", - "Robin van der Vliet", "Mar(c)", - "Elroy" + "Robin van der Vliet", + "Robin0van0der0vliet", + "Siebrand", + "Sjoerddebruin" ] }, "apihelp-aggregategroups-description": "Samengestelde berichtgroepen beheren.\n\nJe kunt samengestelde berichtgroepen toevoegen en verwijderen. Verder kun je berichtgroepen eraan koppelen of ontkoppelen (één per keer).", @@ -28,14 +28,23 @@ "apihelp-query+messagetranslations-example-1": "Lijst met vertalingen in de wiki voor \"MediaWiki:January\"", "apihelp-translationstash-param-subaction": "Handeling.", "apihelp-translationstash-param-metadata": "JSON-object.", + "apihelp-ttmserver-param-sourcelanguage": "De taalcode van de brontekst.", + "apihelp-ttmserver-param-targetlanguage": "De taalcode van de suggestie.", "apihelp-searchtranslations-description": "Vertalingen doorzoeken.", "apihelp-searchtranslations-summary": "Vertalingen doorzoeken.", + "apihelp-searchtranslations-example-1": "Toon de vertalingen voor de taal.", "apihelp-translationcheck-summary": "Vertalingen controleren.", "apihelp-translationcheck-param-translation": "Te controleren vertaling.", "apierror-translate-duplicateaggregategroup": "Berichtgroep bestaat al", "apierror-translate-invalidgroup": "Groep bestaat niet of is ongeldig", + "apierror-translate-invalidlanguage": "De opgegeven taal is ongeldig.", "apierror-translate-invalidupdate": "Ongeldige vernieuwing", - "apierror-translate-language-disabled": "Vertalen naar deze taal is uitgeschakeld", + "apierror-translate-language-disabled": "Vertalen naar $1 is uitgeschakeld", + "apierror-translate-language-disabled-reason": "Vertalen naar $1 is uitgeschakeld: $2", + "apierror-translate-notranslationservices": "Er is geen vertaaldienst ingesteld. De wikibeheerder moet $wgTranslateTranslationServices instellen voor dat deze functie kan worden gebruikt.", + "apierror-translate-sandboxdisabled": "De zandboxfunctionaliteit wordt niet gebruikt", "apierror-translate-sandbox-invalidppassword": "Ongeldig wachtwoord", - "apierror-translate-unknownmessage": "Onbekend bericht" + "apierror-translate-unknownmessage": "Onbekend bericht", + "apiwarn-translate-alreadyreviewedbyyou": "Al door uw als gecontroleerd gemarkeerd", + "apiwarn-translate-language-disabled-source": "De brontaal van deze groep is $1. Kies een andere taal om naar te vertalen." } diff --git a/MLEB/Translate/i18n/api/nn.json b/MLEB/Translate/i18n/api/nn.json index 33fef6cf..18bfd44f 100644 --- a/MLEB/Translate/i18n/api/nn.json +++ b/MLEB/Translate/i18n/api/nn.json @@ -4,5 +4,5 @@ "Njardarlogar" ] }, - "apierror-translate-language-disabled-source": "Kjeldespråket til denne gruppa er $1. Vel eit anna språk å setja om til." + "apiwarn-translate-language-disabled-source": "Kjeldespråket til denne gruppa er $1. Vel eit anna språk å setja om til." } diff --git a/MLEB/Translate/i18n/api/pl.json b/MLEB/Translate/i18n/api/pl.json index 4d99a1fd..ac099bdb 100644 --- a/MLEB/Translate/i18n/api/pl.json +++ b/MLEB/Translate/i18n/api/pl.json @@ -42,12 +42,12 @@ "apierror-translate-invalidupdate": "Nieprawidłowa aktualizacja", "apierror-translate-language-disabled": "Tłumaczenie na $1 jest wyłączone.", "apierror-translate-language-disabled-reason": "Tłumaczenie na $1 jest wyłączone: $2", - "apierror-translate-language-disabled-source": "Językiem źródłowym tej grupy jest $1. Wybierz inny język, na który chcesz tłumaczyć.", "apierror-translate-nodynamicgroups": "Dynamiczne grupy komunikatów nie są tutaj obsługiwane", "apierror-translate-nomessagefortitle": "Tytuł nie odpowiada komunikatowi do tłumaczenia", "apierror-translate-owntranslation": "Nie można przeglądać własnych tłumaczeń", "apierror-translate-sandboxdisabled": "Funkcja brudnopisu nie jest używana", "apierror-translate-sandbox-invalidppassword": "Nieprawidłowe hasło", "apierror-translate-unknownmessage": "Nieznany komunikat", - "apiwarn-translate-alreadyreviewedbyyou": "Już oznaczono jako przejrzane przez ciebie" + "apiwarn-translate-alreadyreviewedbyyou": "Już oznaczono jako przejrzane przez ciebie", + "apiwarn-translate-language-disabled-source": "Językiem źródłowym tej grupy jest $1. Wybierz inny język, na który chcesz tłumaczyć." } diff --git a/MLEB/Translate/i18n/api/pt-br.json b/MLEB/Translate/i18n/api/pt-br.json index 51f7d864..218cb513 100644 --- a/MLEB/Translate/i18n/api/pt-br.json +++ b/MLEB/Translate/i18n/api/pt-br.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ - "Mordecool", "Dianakc", - "Felipe L. Ewald", "Eduardo Addad de Oliveira", + "Felipe L. Ewald", + "Mordecool", "TheEduGobi" ] }, @@ -29,6 +29,12 @@ "apihelp-query+languagestats-param-language": "Código da linguagem.", "apihelp-query+languagestats-example-1": "Lista de estatísticas de conclusão de tradução para finlandês", "apihelp-query+messagecollection-description": "Consultar MessageCollection sobre traduções.", + "apihelp-query+managemessagegroups-summary": "Buscar possíveis renomeados para uma mensagem em um grupo durante as importações", + "apihelp-query+managemessagegroups-description": "Buscar possíveis renomeados para uma mensagem em um grupo durante as importações", + "apihelp-query+managemessagegroups-param-groupId": "ID do grupo", + "apihelp-query+managemessagegroups-param-messageKey": "Chave de mensagem", + "apihelp-query+managemessagegroups-param-changesetName": "Alterar nome do conjunto - Padrão / Autônomo / Mediawiki etc.", + "apihelp-query+managemessagegroups-example-1": "Buscar possíveis renomeações para a chave especificada no grupo especificado.", "apihelp-query+messagecollection-summary": "Consultar MessageCollection sobre traduções.", "apihelp-query+messagecollection-param-group": "Grupo de mensagens.", "apihelp-query+messagecollection-param-language": "Código da linguagem.", @@ -59,6 +65,14 @@ "apihelp-query+messagetranslations-summary": "Consultar todas as traduções para uma única mensagem.", "apihelp-query+messagetranslations-param-title": "Título completo de uma mensagem conhecida.", "apihelp-query+messagetranslations-example-1": "Lista de traduções na wiki para \"MediaWiki:January\"", + "apihelp-managemessagegroups-description": "Adicione uma mensagem como renomear uma mensagem existente ou uma nova mensagem no grupo durante as importações", + "apihelp-managemessagegroups-summary": "Adicione uma mensagem como renomear uma mensagem existente ou uma nova mensagem no grupo durante as importações", + "apihelp-managemessagegroups-param-groupId": "ID do grupo", + "apihelp-managemessagegroups-param-renameMessageKey": "Chave de mensagem de destino sendo renomeada", + "apihelp-managemessagegroups-param-messageKey": "Chave de mensagem de substituição", + "apihelp-managemessagegroups-param-operation": "A operação a ser executada. Valores possíveis - renomear / novo", + "apihelp-managemessagegroups-param-changesetName": "Alterar nome do conjunto - Padrão / Autônomo / Mediawiki etc.", + "apihelp-managemessagegroups-param-changesetModified": "Registro de data e hora do Unix de quando o conjunto de alterações foi modificado pela última vez. Se o conjunto de alterações tiver sido modificado depois disso, a API lançará um erro.", "apihelp-translatesandbox-description": "Inscreva-se e gerencie usuários da sandbox.", "apihelp-translatesandbox-summary": "Inscreva-se e gerencie usuários da sandbox.", "apihelp-translatesandbox-param-do": "O que fazer.", @@ -106,10 +120,11 @@ "apihelp-searchtranslations-param-limit": "Tamanho do resultado.", "apihelp-searchtranslations-example-1": "Mostrar traduções para o idioma.", "apihelp-searchtranslations-example-2": "Mostre mensagens não traduzidas correspondentes à consulta no idioma de origem.", - "apihelp-translationcheck-description": "Validar a tradução fornecida contra os verificadores de mensagens.", + "apihelp-translationcheck-description": "Valide a entrada de conversão fornecida em relação aos validadores de mensagens configurados.", "apihelp-translationcheck-summary": "Validar traduções.", "apihelp-translationcheck-param-title": "Título de página com espaço nominal e código de língua.", "apihelp-translationcheck-param-translation": "A tradução para validar.", + "apierror-translate-changeset-modified": "O conjunto de alterações foi modificado por outro usuário ou processo. Suas alterações não podem ser salvas, pois podem substituir as alterações. Atualize a página para ver as alterações mais recentes.", "apierror-translate-duplicateaggregategroup": "Grupo de mensagens já existe", "apierror-translate-fuzzymessage": "Não é possível revisar as traduções imprecisas", "apierror-translate-groupreviewdisabled": "Revisão do grupo de mensagens não está em uso.", @@ -121,13 +136,20 @@ "apierror-translate-invalidupdate": "Atualização inválida", "apierror-translate-language-disabled": "A tradução para $1 foi impossibilitada.", "apierror-translate-language-disabled-reason": "A tradução para $1 foi impossibilitada: $2", - "apierror-translate-language-disabled-source": "O idioma de origem deste grupo é $1. Selecione outro idioma, para a qual irá traduzir, por favor.", "apierror-translate-nodynamicgroups": "Os grupos de mensagens dinâmicas não são suportados aqui", "apierror-translate-nomessagefortitle": "O título não corresponde a uma mensagem traduzível", "apierror-translate-notranslationservices": "Não foram configurados serviços públicos de tradução. O administrador da wiki precisa de definir $wgTranslateTranslationServices devidamente para esta funcionalidade poder ser usada.", "apierror-translate-owntranslation": "Não é possível revisar as próprias traduções", "apierror-translate-sandboxdisabled": "O recurso sandbox não está em uso", "apierror-translate-sandbox-invalidppassword": "Senha inválida", + "apierror-translate-smg-nochanges": "Não há alterações a processar.", "apierror-translate-unknownmessage": "Mensagem desconhecida", - "apiwarn-translate-alreadyreviewedbyyou": "Já marcado como revisado por você" + "apierror-translate-invalid-changeset-name": "Nome do arquivo do conjunto de alterações inválido passado - $1", + "apierror-translate-invalid-operation": "Operação inválida: $1. Valores válidos - $2.", + "apierror-translate-addition-key-invalid": "A chave da mensagem passada para adição não foi encontrada na lista de mensagens renomeadas para o idioma de origem.", + "apierror-translate-rename-msg-new": "Somente mensagens renomeadas podem ser adicionadas como novas mensagens.", + "apierror-translate-rename-key-invalid": "As chaves de mensagem transmitidas para renomear não foram encontradas na lista de alterações no idioma de origem.", + "apierror-translate-rename-state-invalid": "Uma das mensagens passadas para renomear deve ser adicionada recentemente e a outra excluída. Estados atuais - adição: $1 e exclusão: $2.", + "apiwarn-translate-alreadyreviewedbyyou": "Já marcado como revisado por você", + "apiwarn-translate-language-disabled-source": "O idioma de origem deste grupo é $1. Selecione outro idioma, para a qual irá traduzir, por favor." } diff --git a/MLEB/Translate/i18n/api/pt.json b/MLEB/Translate/i18n/api/pt.json index fca1296c..9f315857 100644 --- a/MLEB/Translate/i18n/api/pt.json +++ b/MLEB/Translate/i18n/api/pt.json @@ -1,16 +1,18 @@ { "@metadata": { "authors": [ - "Vitorvicentevalente", "Fúlvio", - "Hamilton Abreu" + "Hamilton Abreu", + "Mansil", + "Mansil alfalb", + "Vitorvicentevalente" ] }, - "apihelp-aggregategroups-description": "Administrar grupos agregadores de mensagens.\n\nPode adicionar e remover grupos agregadores de mensagens e associar-lhes ou desassociar-lhes grupos de mensagens (um de cada vez).", - "apihelp-aggregategroups-summary": "Administrar grupos agregadores de mensagens.", - "apihelp-aggregategroups-extended-description": "Pode adicionar e remover grupos agregadores de mensagens e associar-lhes ou desassociar-lhes grupos de mensagens (um de cada vez).", - "apihelp-aggregategroups-param-do": "O que fazer com o grupo agregador de mensagens.", - "apihelp-aggregategroups-param-aggregategroup": "Identificador do grupo agregador de mensagens.", + "apihelp-aggregategroups-description": "Administrar grupos de mensagens agregadas.\n\nPode adicionar e remover grupos de mensagens agregadas e associar-lhes ou desassociar-lhes grupos de mensagens (um de cada vez).", + "apihelp-aggregategroups-summary": "Administrar grupos de mensagens agregadas.", + "apihelp-aggregategroups-extended-description": "Pode adicionar e remover grupos de mensagens agregadas e associar-lhes ou desassociar-lhes grupos de mensagens (um de cada vez).", + "apihelp-aggregategroups-param-do": "O que fazer com o grupo de mensagens agregadas.", + "apihelp-aggregategroups-param-aggregategroup": "Identificador do grupo de mensagens agregadas.", "apihelp-aggregategroups-param-group": "Identificador do grupo de mensagens.", "apihelp-aggregategroups-param-groupname": "Nome do grupo agregador de mensagens.", "apihelp-aggregategroups-param-groupdescription": "Descrição do grupo agregador de mensagens.", @@ -27,6 +29,9 @@ "apihelp-query+languagestats-param-language": "Código de língua.", "apihelp-query+languagestats-example-1": "Lista das estatísticas de finalização de traduções para finlandês", "apihelp-query+messagecollection-description": "Consultar MessageCollection sobre traduções.", + "apihelp-query+managemessagegroups-param-groupId": "Identificador de grupo", + "apihelp-query+managemessagegroups-param-messageKey": "Chave de mensagem", + "apihelp-query+managemessagegroups-param-changesetName": "Alterar nome do conjunto - Padrão / Não vigiado / MediaWiki, etc.", "apihelp-query+messagecollection-summary": "Consultar MessageCollection sobre traduções.", "apihelp-query+messagecollection-param-group": "Grupo de mensagens.", "apihelp-query+messagecollection-param-language": "Código de língua.", @@ -57,6 +62,7 @@ "apihelp-query+messagetranslations-summary": "Consultar todas as traduções de uma única mensagem.", "apihelp-query+messagetranslations-param-title": "Título completo de uma mensagem conhecida.", "apihelp-query+messagetranslations-example-1": "Lista de traduções na wiki de \"MediaWiki:January\"", + "apihelp-managemessagegroups-param-groupId": "Identificador de grupo", "apihelp-translatesandbox-description": "Registar e gerir os utilizadores em teste.", "apihelp-translatesandbox-summary": "Registar e gerir os utilizadores em teste.", "apihelp-translatesandbox-param-do": "O que fazer.", @@ -104,7 +110,7 @@ "apihelp-searchtranslations-param-limit": "Tamanho do resultado.", "apihelp-searchtranslations-example-1": "Mostrar as traduções para a língua.", "apihelp-searchtranslations-example-2": "Mostrar as mensagens não traduzidas que coincidam com a consulta na língua de origem.", - "apihelp-translationcheck-description": "Validar a tradução fornecida contra os verificadores de mensagens.", + "apihelp-translationcheck-description": "Validar a tradução indicada contra as validações de mensagens configuradas.", "apihelp-translationcheck-summary": "Validar traduções.", "apihelp-translationcheck-param-title": "Título de página com espaço nominal e código de língua.", "apihelp-translationcheck-param-translation": "A tradução para ser validada.", @@ -119,7 +125,6 @@ "apierror-translate-invalidupdate": "Atualização inválida", "apierror-translate-language-disabled": "A tradução para $1 foi impossibilitada.", "apierror-translate-language-disabled-reason": "A tradução para $1 foi impossibilitada: $2", - "apierror-translate-language-disabled-source": "A língua de origem deste grupo é $1. Selecione outra língua, para a qual irá traduzir, por favor.", "apierror-translate-nodynamicgroups": "Não são suportados aqui grupos de mensagens dinâmicos", "apierror-translate-nomessagefortitle": "O título não corresponde a uma mensagem traduzível", "apierror-translate-notranslationservices": "Não foram configurados serviços públicos de tradução. O administrador da wiki precisa de definir $wgTranslateTranslationServices devidamente para esta funcionalidade poder ser usada.", @@ -127,5 +132,6 @@ "apierror-translate-sandboxdisabled": "A função de utilizadores em teste não está a ser usada", "apierror-translate-sandbox-invalidppassword": "Palavra-passe inválida", "apierror-translate-unknownmessage": "Mensagem desconhecida", - "apiwarn-translate-alreadyreviewedbyyou": "Já marcada como revista por si" + "apiwarn-translate-alreadyreviewedbyyou": "Já marcada como revista por si", + "apiwarn-translate-language-disabled-source": "A língua de origem deste grupo é $1. Selecione outra língua, para a qual irá traduzir, por favor." } diff --git a/MLEB/Translate/i18n/api/qqq.json b/MLEB/Translate/i18n/api/qqq.json index 979ccaac..d3273adf 100644 --- a/MLEB/Translate/i18n/api/qqq.json +++ b/MLEB/Translate/i18n/api/qqq.json @@ -1,11 +1,12 @@ { "@metadata": { "authors": [ - "Robby", - "Liuxinyu970226", "Amire80", + "Liuxinyu970226", "Nemo bis", - "Purodha" + "Purodha", + "Raymond", + "Robby" ] }, "apihelp-aggregategroups-description": "{{doc-apihelp-description|aggregategroups}}", @@ -29,6 +30,12 @@ "apihelp-query+languagestats-param-language": "{{doc-apihelp-param|query+languagestats|language}}\n{{Identical|Language code}}", "apihelp-query+languagestats-example-1": "{{doc-apihelp-example|query+languagestats}}", "apihelp-query+messagecollection-description": "{{doc-apihelp-description|query+messagecollection}}", + "apihelp-query+managemessagegroups-summary": "{{doc-apihelp-summary|query+managemessagegroups}}", + "apihelp-query+managemessagegroups-description": "{{doc-apihelp-description|query+managemessagegroups}}", + "apihelp-query+managemessagegroups-param-groupId": "{{doc-apihelp-param|query+managemessagegroups|groupId}}", + "apihelp-query+managemessagegroups-param-messageKey": "{{doc-apihelp-param|query+managemessagegroups|messageKey}}", + "apihelp-query+managemessagegroups-param-changesetName": "{{doc-apihelp-param|query+managemessagegroups|changesetName}}", + "apihelp-query+managemessagegroups-example-1": "{{doc-apihelp-example|query+managemessagegroups}}", "apihelp-query+messagecollection-summary": "{{doc-apihelp-summary|query+messagecollection}}", "apihelp-query+messagecollection-param-group": "{{doc-apihelp-param|query+messagecollection|group}}", "apihelp-query+messagecollection-param-language": "{{doc-apihelp-param|query+messagecollection|language}}\n{{Identical|Language code}}", @@ -59,6 +66,14 @@ "apihelp-query+messagetranslations-summary": "{{doc-apihelp-summary|query+messagetranslations}}", "apihelp-query+messagetranslations-param-title": "{{doc-apihelp-param|query+messagetranslations|title}}", "apihelp-query+messagetranslations-example-1": "Don't translate \"MediaWiki:January\".\n\n{{doc-apihelp-example|query+messagetranslations}}", + "apihelp-managemessagegroups-description": "{{doc-apihelp-description|managemessagegroups}}", + "apihelp-managemessagegroups-summary": "{{doc-apihelp-summary|managemessagegroups}}", + "apihelp-managemessagegroups-param-groupId": "{{doc-apihelp-param|managemessagegroups|groupId}}", + "apihelp-managemessagegroups-param-renameMessageKey": "{{doc-apihelp-param|managemessagegroups|renameMessageKey}}", + "apihelp-managemessagegroups-param-messageKey": "{{doc-apihelp-param|managemessagegroups|messageKey}}", + "apihelp-managemessagegroups-param-operation": "{{doc-apihelp-param|managemessagegroups|operation}}", + "apihelp-managemessagegroups-param-changesetName": "{{doc-apihelp-param|managemessagegroups|changesetName}}", + "apihelp-managemessagegroups-param-changesetModified": "{{doc-apihelp-param|managemessagegroups|changesetModified}}", "apihelp-translatesandbox-description": "{{doc-apihelp-description|translatesandbox}}", "apihelp-translatesandbox-summary": "{{doc-apihelp-summary|translatesandbox}}", "apihelp-translatesandbox-param-do": "{{doc-apihelp-param|translatesandbox|do}}", @@ -110,6 +125,7 @@ "apihelp-translationcheck-summary": "{{doc-apihelp-summary|translationcheck}}", "apihelp-translationcheck-param-title": "{{doc-apihelp-param|translationcheck|title}}", "apihelp-translationcheck-param-translation": "{{doc-apihelp-param|translationcheck|translation}}", + "apierror-translate-changeset-modified": "{{doc-apierror}}", "apierror-translate-duplicateaggregategroup": "{{doc-apierror}}", "apierror-translate-fuzzymessage": "{{doc-apierror}}", "apierror-translate-groupreviewdisabled": "{{doc-apierror}}", @@ -122,7 +138,6 @@ "apierror-translate-invalidupdate": "{{doc-apierror}}", "apierror-translate-language-disabled": "{{doc-apierror}}", "apierror-translate-language-disabled-reason": "{{doc-apierror}}\n\nParameters:\n* $1 - language name\n* $2 - reason, probably in English", - "apierror-translate-language-disabled-source": "{{doc-apierror}}\n\nParameters:\n* $1 - language name", "apierror-translate-nodynamicgroups": "{{doc-apierror}}", "apierror-translate-nomessagefortitle": "{{doc-apierror}}", "apierror-translate-notranslationservices": "{{doc-apierror}}", @@ -130,6 +145,14 @@ "apierror-translate-sandboxdisabled": "{{doc-apierror}}", "apierror-translate-sandbox-invalidparam": "{{doc-apierror}}\n\nParameters:\n* $1 - Exception message, probably in English", "apierror-translate-sandbox-invalidppassword": "{{doc-apierror}}", + "apierror-translate-smg-nochanges": "{{doc-apierror}}", "apierror-translate-unknownmessage": "{{doc-apierror}}", - "apiwarn-translate-alreadyreviewedbyyou": "{{doc-apierror}}" + "apierror-translate-invalid-changeset-name": "{{doc-apierror}} \n\nParameters:\n* $1 - Changeset file name passed in the request", + "apierror-translate-invalid-operation": "{{doc-apierror}}\n\nParameters:\n* $1 - Operation value passed in request.\n* $2 - Comma separated list of valid values.", + "apierror-translate-addition-key-invalid": "{{doc-apierror}}", + "apierror-translate-rename-msg-new": "{{doc-apierror}}", + "apierror-translate-rename-key-invalid": "{{doc-apierror}}", + "apierror-translate-rename-state-invalid": "'{{doc-apierror}}\n\nParameters:\n* $1 - State of the message being added as the replacement.\n$2 - State of the message being replaced.", + "apiwarn-translate-alreadyreviewedbyyou": "{{doc-apierror}}", + "apiwarn-translate-language-disabled-source": "{{doc-apierror}}\n\nParameters:\n* $1 - language name" } diff --git a/MLEB/Translate/i18n/api/roa-tara.json b/MLEB/Translate/i18n/api/roa-tara.json index 918e4d37..66a36d1e 100644 --- a/MLEB/Translate/i18n/api/roa-tara.json +++ b/MLEB/Translate/i18n/api/roa-tara.json @@ -24,21 +24,31 @@ "apihelp-query+languagestats-param-language": "Codece d'a Lènghe.", "apihelp-query+languagestats-example-1": "Elenghe de le statisteche de combletamende d'a traduzione pu finlandese", "apihelp-query+messagecollection-description": "'Nderroghe MessageCollection sus a le traduziune.", + "apihelp-query+managemessagegroups-param-groupId": "ID d'u gruppe", + "apihelp-query+managemessagegroups-param-messageKey": "Chiave d'u messàgge", "apihelp-query+messagecollection-summary": "'Nderroghe MessageCollection sus a le traduziune.", "apihelp-query+messagecollection-param-group": "Gruppe de messàgge.", "apihelp-query+messagecollection-param-language": "Codece d'a Lènghe.", "apihelp-query+messagecollection-param-limit": "Quanda messàgge da 'ndrucà (apprisse 'u filtre).", "apihelp-query+messagecollection-param-offset": "Indere o distanze d'a chiave pe accumenzà.", + "apihelp-query+messagecollection-example-1": "Elenghe de le lènghe supportate", "apihelp-query+messagegroups-summary": "Torne le 'mbormaziune sus a le gruppe de messàgge.", + "apihelp-query+messagegroups-example-1": "'Ndruche le gruppe de messàgge", + "apihelp-query+messagegroupstats-description": "'Nderroghe le statisteche de le gruppe de messàgge.", + "apihelp-query+messagegroupstats-summary": "'Nderroghe le statisteche de le gruppe de messàgge.", "apihelp-query+messagegroupstats-param-group": "ID d'u gruppe de messàgge.", "apihelp-query+messagegroupstats-example-1": "Elenghe de le statisteche de combletamende de le traduziune pu gruppe \"page-Example\"", "apihelp-query+messagetranslations-description": "'Nderroghe tutte le traduziune pe 'nu messàgge singole.", "apihelp-query+messagetranslations-param-title": "Titole comblete de 'nu messàgge canusciute.", "apihelp-translatesandbox-param-do": "Ce ste da fà.", + "apihelp-translatesandbox-param-username": "Nome de l'utende quanne stoche a ccreje 'n'utende.", + "apihelp-translatesandbox-param-password": "Passuord quanne stoche a ccreje 'n'utende.", "apihelp-translatesandbox-param-email": "Email quanne stoche a ccreje 'n'utende.", "apihelp-translationaids-description": "'Nderroghe tutte le aijute de traduziune.", "apihelp-translationaids-summary": "'Nderroghe tutte le aijute de traduziune.", "apihelp-translationaids-param-title": "Titole comblete de 'nu messàgge canusciute.", + "apihelp-translationreview-description": "Signe le traduziune cumme reviste.", + "apihelp-translationreview-summary": "Signe le traduziune cumme reviste.", "apihelp-translationstash-description": "Aggiunge le traduziune a 'a scorte.", "apihelp-translationstash-summary": "Aggiunge le traduziune a 'a scorte.", "apihelp-translationstash-param-subaction": "Azione.", diff --git a/MLEB/Translate/i18n/api/ru.json b/MLEB/Translate/i18n/api/ru.json index 0b8a4be4..3313f336 100644 --- a/MLEB/Translate/i18n/api/ru.json +++ b/MLEB/Translate/i18n/api/ru.json @@ -1,16 +1,17 @@ { "@metadata": { "authors": [ - "Okras", + "Diman Russkov", "Kaganer", - "Дмитрий", - "Туллук", "Kareyac", - "ЛосЯш", - "Putnik", + "Movses", + "Okras", "Ole Yves", + "Putnik", "Stjn", - "Movses" + "Дмитрий", + "ЛосЯш", + "Туллук" ] }, "apihelp-aggregategroups-description": "Вы можете добавлять и удалять агрегированные группы сообщений, группировать и разгруппировывать сообщения в них (по одному за раз) .", @@ -34,6 +35,8 @@ "apihelp-query+languagestats-param-language": "Код языка.", "apihelp-query+languagestats-example-1": "Список статистики завершённости перевода для финского.", "apihelp-query+messagecollection-description": "Запросить MessageCollection о переводах.", + "apihelp-query+managemessagegroups-param-groupId": "Идентификатор группы", + "apihelp-query+managemessagegroups-param-messageKey": "Ключ сообщения", "apihelp-query+messagecollection-summary": "Запросить MessageCollection о переводах.", "apihelp-query+messagecollection-param-group": "Группа сообщений.", "apihelp-query+messagecollection-param-language": "Код языка.", @@ -54,6 +57,7 @@ "apihelp-query+messagetranslations-summary": "Запросить все переводы для одного сообщения.", "apihelp-query+messagetranslations-param-title": "Полный заголовок известного сообщения.", "apihelp-query+messagetranslations-example-1": "Список переводов в вики для «MediaWiki:January»", + "apihelp-managemessagegroups-param-groupId": "Идентификатор группы", "apihelp-translatesandbox-description": "Зарегистрировать и управлять пользователями в песочнице.", "apihelp-translatesandbox-summary": "Зарегистрировать и управлять пользователями в песочнице.", "apihelp-translatesandbox-param-do": "Что делать.", @@ -86,6 +90,7 @@ "apihelp-searchtranslations-example-2": "Показать непереведённые сообщения, соответствующие запросу на исходном языке.", "apierror-translate-invalidupdate": "Недопустимое обновление.", "apierror-translate-language-disabled": "Перевод на $1 отключён.", + "apierror-translate-language-disabled-reason": "Перевод на $1 отключён: $2", "apierror-translate-nodynamicgroups": "Динамические группы сообщений здесь не поддерживаются.", "apierror-translate-nomessagefortitle": "Заголовок не соответствует переводимому сообщению.", "apierror-translate-owntranslation": "Не может проверять собственные переводы", diff --git a/MLEB/Translate/i18n/api/sdc.json b/MLEB/Translate/i18n/api/sdc.json new file mode 100644 index 00000000..79cefcba --- /dev/null +++ b/MLEB/Translate/i18n/api/sdc.json @@ -0,0 +1,16 @@ +{ + "@metadata": { + "authors": [ + "Jun Misugi" + ] + }, + "apihelp-groupreview-param-group": "Gruppu d'imbasciaddi.", + "apihelp-groupreview-param-language": "Còditzi di linga.", + "apihelp-query+languagestats-param-language": "Còditzi di linga.", + "apihelp-query+messagecollection-param-group": "Gruppu d'imbasciaddi.", + "apihelp-query+messagecollection-param-language": "Còditzi di linga.", + "apihelp-query+messagecollection-example-1": "Erencu di linghi susthiniddi", + "apihelp-query+messagegroups-example-1": "Visuarizza gruppi d'imbasciaddi", + "apihelp-searchtranslations-description": "Tzercha traduzioni.", + "apihelp-searchtranslations-summary": "Tzercha traduzioni." +} diff --git a/MLEB/Translate/i18n/api/sq.json b/MLEB/Translate/i18n/api/sq.json index 01f88edc..21d8aa10 100644 --- a/MLEB/Translate/i18n/api/sq.json +++ b/MLEB/Translate/i18n/api/sq.json @@ -6,5 +6,5 @@ }, "apierror-translate-language-disabled": "Perkthimi ne $1 eshte pa-mundesuar.", "apierror-translate-language-disabled-reason": "Perkthimi ne $1 eshte i pamundesuar:$2", - "apierror-translate-language-disabled-source": "Gjuha baze e ketij grupi eshte $1. Ju lutemi perzgjidhni gjuhen per te perkthyer ne ate gjuhe." + "apiwarn-translate-language-disabled-source": "Gjuha baze e ketij grupi eshte $1. Ju lutemi perzgjidhni gjuhen per te perkthyer ne ate gjuhe." } diff --git a/MLEB/Translate/i18n/api/sr-ec.json b/MLEB/Translate/i18n/api/sr-ec.json index 6170314c..1c82267a 100644 --- a/MLEB/Translate/i18n/api/sr-ec.json +++ b/MLEB/Translate/i18n/api/sr-ec.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Obsuser", - "Acamicamacaraca" + "Acamicamacaraca", + "Obsuser" ] }, "apierror-translate-sandbox-invalidppassword": "Невалидна лозинка" diff --git a/MLEB/Translate/i18n/api/sr-el.json b/MLEB/Translate/i18n/api/sr-el.json index 8e278e9a..65842030 100644 --- a/MLEB/Translate/i18n/api/sr-el.json +++ b/MLEB/Translate/i18n/api/sr-el.json @@ -1,4 +1,6 @@ { - "@metadata": [], + "@metadata": { + "authors": [] + }, "apierror-translate-sandbox-invalidppassword": "Nevalidna lozinka" } diff --git a/MLEB/Translate/i18n/api/sv.json b/MLEB/Translate/i18n/api/sv.json index 94744830..acd1a9ea 100644 --- a/MLEB/Translate/i18n/api/sv.json +++ b/MLEB/Translate/i18n/api/sv.json @@ -1,20 +1,25 @@ { "@metadata": { "authors": [ - "Lokal Profil", - "WikiPhoenix", + "Bengtsson96", "Dan Koehl", - "Victorsa", "Josve05a", - "Bengtsson96" + "Lokal Profil", + "Victorsa", + "WikiPhoenix" ] }, + "apihelp-aggregategroups-description": "Hantera aggregerade meddelandegrupper.\n\nDu kan lägga till och ta bort aggregerade meddelandegrupper och associera eller sluta associera meddelandegrupper från dem (en i taget).", + "apihelp-aggregategroups-summary": "Hantera aggregerade meddelandegrupper.", + "apihelp-aggregategroups-extended-description": "Du kan lägga till och ta bort aggregerade meddelandegrupper och associera eller sluta associera meddelandegrupper från dem (en i taget).", "apihelp-aggregategroups-param-group": "Meddelandegrupp-ID.", "apihelp-aggregategroups-example-1": "Associera en grupp", "apihelp-groupreview-param-group": "Meddelandegrupp.", "apihelp-groupreview-param-language": "Språkkod.", "apihelp-groupreview-example-1": "Markera gruppen \"group-Example\" som redo för tyska", "apihelp-query+languagestats-param-language": "Språkkod.", + "apihelp-query+managemessagegroups-param-groupId": "Grupp-ID", + "apihelp-query+managemessagegroups-param-messageKey": "Meddelandenyckel", "apihelp-query+messagecollection-param-group": "Meddelandegrupp.", "apihelp-query+messagecollection-param-language": "Språkkod.", "apihelp-query+messagecollection-example-1": "Lista över språk som stöds", @@ -22,12 +27,18 @@ "apihelp-query+messagegroups-example-1": "Visa meddelandegrupper", "apihelp-query+messagegroupstats-param-group": "Meddelandegrupp-ID.", "apihelp-query+messagetranslations-example-1": "Lista över översättningar i wikin för \"MediaWiki:January\"", + "apihelp-managemessagegroups-param-groupId": "Grupp-ID", + "apihelp-translatesandbox-description": "Registrera och hantera sandlådeanvändare.", + "apihelp-translatesandbox-summary": "Registrera och hantera sandlådeanvändare.", + "apihelp-translatesandbox-param-do": "Vad som ska göras.", "apihelp-translatesandbox-param-username": "Användarnamn när du skapar en användare.", "apihelp-translatesandbox-param-password": "Lösenord när du skapar en användare.", "apihelp-translatesandbox-param-email": "E-post när du skapar en användare.", "apihelp-translationaids-param-title": "Fullständig titel på ett känt meddelande.", + "apihelp-translationaids-param-prop": "Vilka översättningshjälpmedel som ska inkluderas.", "apihelp-translationaids-example-1": "Visa hjälp för [[MediaWiki:January/fi]]", "apihelp-translationreview-description": "Markera översättningar som granskade.", + "apihelp-translationreview-summary": "Markera översättningar som granskade.", "apihelp-translationreview-param-revision": "Sidversionsnumret att granska.", "apihelp-translationreview-example-1": "Granska sidversion 1", "apihelp-translationstash-param-subaction": "Åtgärd.", @@ -49,6 +60,9 @@ "apihelp-searchtranslations-param-limit": "Resultatets storlek.", "apihelp-searchtranslations-example-1": "Visa översättningar för språket.", "apihelp-searchtranslations-example-2": "Visa oöversatta meddelanden som överensstämmer förfrågan i källkoden.", + "apihelp-translationcheck-summary": "Validera översättningar.", + "apihelp-translationcheck-param-title": "Sidtitel med namnrymd och språkkod.", + "apihelp-translationcheck-param-translation": "Översättningen att validera.", "apierror-translate-duplicateaggregategroup": "Meddelandegruppen finns redan", "apierror-translate-fuzzymessage": "Kan inte granska föråldrade översättningar", "apierror-translate-invalidlanguage": "Det begärda språket är inte giltigt.", @@ -59,5 +73,6 @@ "apierror-translate-owntranslation": "Kan inte granska egna översättningar", "apierror-translate-sandbox-invalidppassword": "Ogiltigt lösenord", "apierror-translate-unknownmessage": "Okänt meddelande", - "apiwarn-translate-alreadyreviewedbyyou": "Har redan markerats som granskad av dig" + "apiwarn-translate-alreadyreviewedbyyou": "Har redan markerats som granskad av dig", + "apiwarn-translate-language-disabled-source": "Källspråket för denna grupp är $1. Välj ett annat språk att översätta till." } diff --git a/MLEB/Translate/i18n/api/tg-cyrl.json b/MLEB/Translate/i18n/api/tg-cyrl.json new file mode 100644 index 00000000..6ed6e571 --- /dev/null +++ b/MLEB/Translate/i18n/api/tg-cyrl.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "ToJack" + ] + }, + "apihelp-aggregategroups-param-group": "ID гурӯҳҳои паёмҳо" +} diff --git a/MLEB/Translate/i18n/api/tl.json b/MLEB/Translate/i18n/api/tl.json index 068ee37c..afe348cc 100644 --- a/MLEB/Translate/i18n/api/tl.json +++ b/MLEB/Translate/i18n/api/tl.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ - "Leeheonjin", "Emem.calist", - "Jojit fb" + "Jojit fb", + "Leeheonjin" ] }, "apierror-translate-language-disabled": "Ang pagsasaling wika sa $1 ay naka-'disabled'", diff --git a/MLEB/Translate/i18n/api/tr.json b/MLEB/Translate/i18n/api/tr.json index dd7e0997..a07d4149 100644 --- a/MLEB/Translate/i18n/api/tr.json +++ b/MLEB/Translate/i18n/api/tr.json @@ -2,63 +2,155 @@ "@metadata": { "authors": [ "Arystanbek", + "BaRaN6161 TURK", + "Hedda", + "Rapsar", "Sayginer", "Vito Genovese" ] }, - "apihelp-aggregategroups-param-group": "Mesaj grup KİMLİĞİ.", + "apihelp-aggregategroups-description": "Toplu mesaj gruplarını yönetin.\n\nToplu mesaj gruplarını ekleyebilir, kaldırabilir, ilişkilendirebilir veya birbirinden ayırabilirsiniz (tek seferde bir defa).", + "apihelp-aggregategroups-summary": "Toplu mesaj gruplarını yönetin.", + "apihelp-aggregategroups-extended-description": "Toplu mesaj gruplarını ekleyebilir, kaldırabilir, (tek seferde bir defa olmak üzere) ilişkilendirebilir veya birbirinden ayırabilirsiniz.", + "apihelp-aggregategroups-param-do": "Toplu mesaj grubuyla ne yapmalı.", + "apihelp-aggregategroups-param-aggregategroup": "Toplu mesaj grubu kimliği.", + "apihelp-aggregategroups-param-group": "Mesaj grup kimliği.", "apihelp-aggregategroups-param-groupname": "Toplu mesaj grubu adı.", "apihelp-aggregategroups-param-groupdescription": "Toplu mesaj grubu açıklama.", - "apihelp-aggregategroups-example-1": "Önlisans grubu", - "apihelp-groupreview-description": "Set message grup iş akışı Birleşik Devletleri.", - "apihelp-groupreview-param-group": "İleti grubu", + "apihelp-aggregategroups-example-1": "Bir grubu ilişkilendirin", + "apihelp-groupreview-description": "Mesaj grubu iş akışı durumlarını ayarlayın.", + "apihelp-groupreview-summary": "Mesaj grubu iş akışı durumlarını ayarlayın.", + "apihelp-groupreview-param-group": "Mesaj grubu.", "apihelp-groupreview-param-language": "Dil kodu.", - "apihelp-groupreview-param-state": "Grup için yeni bir devlet.", - "apihelp-groupreview-example-1": "Mark grup \"grup\" Örnek olarak hazır Alman için", - "apihelp-query+languagestats-description": "Dil istatistikler sorgu.", - "apihelp-query+languagestats-param-timelimit": "Maksimum zaman eksik istatistikleri hesaplamak geçirmek. Sıfır, başından itibaren yalnızca önbelleğe alınan sonuçları da döndürülür.", + "apihelp-groupreview-param-state": "Grup için yeni bir durum.", + "apihelp-groupreview-example-1": "\"group-Example\" mesaj grubunun Almanca çevirisinin durumunu hazır olarak işaretleyin.", + "apihelp-query+languagestats-description": "Sorgu dili istatistikleri.", + "apihelp-query+languagestats-summary": "Sorgu dili istatistikleri.", + "apihelp-query+languagestats-param-timelimit": "Eksik istatistikleri hesaplamak için harcanan azami süre. Sıfırsa yalnızca önbelleğe alınan sonuçlar baştan getirilir.", "apihelp-query+languagestats-param-language": "Dil kodu.", - "apihelp-query+languagestats-example-1": "Fince tercüme tamamlanması istatistikleri listesi", - "apihelp-query+messagecollection-description": "Çeviriler hakkında MessageCollection sorgu.", - "apihelp-query+messagecollection-param-group": "İleti grubu", + "apihelp-query+languagestats-example-1": "Fince çeviri tamamlama istatistikleri listesi", + "apihelp-query+messagecollection-description": "Çevirilerle ilgili MessageCollection'ı sorgulayın.", + "apihelp-query+managemessagegroups-summary": "İçe aktarma sırasında bir gruptaki bir mesajın olası adlarını alın", + "apihelp-query+managemessagegroups-description": "İçe aktarma sırasında bir gruptaki bir mesajın olası adlarını alın", + "apihelp-query+managemessagegroups-param-groupId": "Grup Kimliği", + "apihelp-query+managemessagegroups-param-messageKey": "Mesaj anahtarı", + "apihelp-query+managemessagegroups-param-changesetName": "Küme adını değiştir - Varsayılan / Katılımsız / Mediawiki vb.", + "apihelp-query+managemessagegroups-example-1": "Verilen grupta verilen anahtar için olası adlar getirin.", + "apihelp-query+messagecollection-summary": "Çevirilerle ilgili MessageCollection'ı sorgulayın.", + "apihelp-query+messagecollection-param-group": "Mesaj grubu.", "apihelp-query+messagecollection-param-language": "Dil kodu.", - "apihelp-query+messagecollection-param-limit": "Kaç tane mesaj göstermek için (süzdükten sonra).", - "apihelp-query+messagecollection-param-offset": "Tamsayı veya anahtar başlatmak için ofset.", - "apihelp-query+messagegroups-example-1": "Haritayı mesaj grupları", + "apihelp-query+messagecollection-param-limit": "(Filtrelemeden sonra) kaç tane mesaj gösterilecek.", + "apihelp-query+messagecollection-param-offset": "Başlangıç için tam sayı ya da anahtar ofset", + "apihelp-query+messagecollection-param-filter": "Mesaj toplama filtreleri. Durumu olumsuzlamak için ! kullanın. Örneğin, !fuzzy, yalnızca tüm bulanık olmayan mesajları listeleme anlamına gelir. Filtreler verilen sıraya göre uygulanır.\n;fuzzy:Fuzzy etiketli mesajlar.\n;optional:Yalnızca değişiklik yapılması gerekiyorsa çevrilmesi gereken mesajlar.\n;ignored:Asla çevrilmeyen mesajlar.\n;hastranslation:Fuzzy olup olmadığına bakılmaksızın çevirisi olan mesajlar.\n;translated:Fuzzy olmayan bir çevirisi olan iletiler.\n;changed:Son aktarımdan bu yana çevrilmiş veya değiştirilmiş iletiler.\n;reviewer:N:N kullanıcı numarasının gözden geçirenler arasında olduğu iletiler.\n;last-translator:N:N kullanıcı numarasının son çevirmen olduğu mesajlar.", + "apihelp-query+messagecollection-param-prop": "Hangi özellikleri elde etmek için:\n;definition:Mesaj tanımı\n;translation:Geçerli çeviri (varsa $1 dize olmadan, eski veya bozuk çevirileri denetlemek için etiketleri kullanın).\n;tags:İsteğe bağlı, yok sayılmış ve fuzzy gibi ileti etiketleri.\n;properties:Durum özellikleri, revizyon, son tercüman gibi mesaj özellikleri. Mesajlar arasında değişebilir.\n;revision:Kaldırıldı! $2prop=properties kullanın.", + "apihelp-query+messagecollection-example-1": "Desteklenen dillerin listesi", + "apihelp-query+messagecollection-example-2": "\"page-Example\" grubu için isteğe bağlı olmayan mesaj tanımlarının listesi", + "apihelp-query+messagecollection-example-3": "Fince isteğe bağlı iletilerin listesi \"page-Example\" grubunun etiketli listesi", + "apihelp-query+messagecollection-example-4": "\"page-Example\" grubu için en son çeviri revizyonları hakkında daha fazla bilgi", + "apihelp-query+messagegroups-description": "Mesaj grupları hakkında bilgi verir.\n\nUselang parametresinin dile bağlı bölümlerin çıkışına etkilediğini unutmayın.", + "apihelp-query+messagegroups-summary": "Mesaj grupları hakkında bilgi verir.", + "apihelp-query+messagegroups-extended-description": "Uselang parametresinin dile bağlı bölümlerin çıkışına etkilediğini unutmayın.", + "apihelp-query+messagegroups-param-depth": "Ağaç biçimi kullanırken, derinliği bu kadar seviyeyle sınırlandırın. 0 değeri, hiçbir alt grubun gösterilmediği anlamına gelir. Sınıra ulaşıldığında, çıktı doğrudan çocuk sayısını belirten bir \"groupcount\" değeri içerir.", + "apihelp-query+messagegroups-param-filter": "Yalnızca verilen girdilerden bir veya daha fazlasıyla eşleşen kimliğe sahip iletileri döndürün (büyük/küçük harf duyarsız, dikey çizgi, * joker karakter).", + "apihelp-query+messagegroups-param-format": "Ağaç biçiminde, mesaj grupları ağaçta birden çok yerde bulunabilir.", + "apihelp-query+messagegroups-param-iconsize": "Rasterleştirilmiş grup simgesinin tercih edilen boyutu.", + "apihelp-query+messagegroups-param-prop": "Çeviri ile ilgili hangi bilgileri alırsınız:\n;id:Grubun kimliğini ekleyin.\n;label:Grubun etiketini ekleyin.\n;description:Grubun açıklamasını ekleyin.\n;class:Grubun sınıf adını ekleyin.\n;namespace:Grubun ad alanını ekleyin. Tüm gruplar tek bir ad alanına ait değildir.\n;exists:Grubun kendi kendine hesaplanan varlık özelliğini ekleyin.\n;icon:URL'leri grubun simgesine ekleyin.\n;priority:Cesareti kırılmış gibi öncelikli durumu ekleyin.\n;prioritylangs:Tercih edilen dilleri dahil edin. Ayarlanmazsa, bu false değerini döndürür.\n;priorityforce:Öncelik durumunu dahil et - öncelikli dil ayarı zorunludur.\n;workflowstates:İleti grubu için iş akışı durumlarını ekleyin.", + "apihelp-query+messagegroups-param-root": "Ağaç biçimini kullanırken, üst düzeyden başlamak yerine, birleştirilmiş bir ileti grubu olması gereken belirli mesaj grubundan başlayın. Düz biçim kullanıldığında yalnızca belirtilen grup döndürülür.", + "apihelp-query+messagegroups-example-1": "Mesaj gruplarını göster", "apihelp-query+messagegroupstats-description": "Sorgu mesajı grup istatistikleri.", - "apihelp-query+messagegroupstats-param-timelimit": "Maksimum zaman eksik istatistikleri hesaplamak geçirmek. Sıfır, başından itibaren yalnızca önbelleğe alınan sonuçları da döndürülür.", - "apihelp-query+messagegroupstats-param-group": "Mesaj grup KİMLİĞİ.", - "apihelp-query+messagegroupstats-example-1": "Grup için çeviri tamamlama istatistikleri listesi \"sayfa-Örnek\"", - "apihelp-query+messagetranslations-description": "Tek bir mesaj için tüm çeviriler sorgu.", - "apihelp-query+messagetranslations-param-title": "Bilinen bir mesajın tam başlık.", - "apihelp-query+messagetranslations-example-1": "\"Medyaviki:Ocak\"için wiki çevirilerin listesi", - "apihelp-translatesandbox-description": "Ve korumalı kullanıcıların kayıt yönetmek.", - "apihelp-translatesandbox-param-do": "Ne.", - "apihelp-translatesandbox-param-userid": "Kullanıcılar yönetilen kullanıcı Kimlikleri. Yarattıkları için 0 kullanın.", + "apihelp-query+messagegroupstats-summary": "Sorgu mesajı grup istatistikleri.", + "apihelp-query+messagegroupstats-param-timelimit": "Eksik istatistikleri hesaplamak için harcanan azami süre. Sıfırsa yalnızca önbelleğe alınan sonuçlar baştan getirilir.", + "apihelp-query+messagegroupstats-param-group": "Mesaj grup kimliği.", + "apihelp-query+messagegroupstats-example-1": "\"page-Example\" grubu için çeviri tamamlama istatistiklerinin listesi", + "apihelp-query+messagetranslations-description": "Tek bir mesaj için tüm çevirileri sorgulayın.", + "apihelp-query+messagetranslations-summary": "Tek bir mesaj için tüm çevirileri sorgulayın.", + "apihelp-query+messagetranslations-param-title": "Bilinen bir mesajın tam başlığı.", + "apihelp-query+messagetranslations-example-1": "\"MediaWiki:January\" için vikideki çevirilerin listesi", + "apihelp-managemessagegroups-description": "İçe aktarma sırasında mevcut bir mesajın adını veya grupta yeni bir mesajı yeniden adlandırın", + "apihelp-managemessagegroups-summary": "İçe aktarma sırasında mevcut bir mesajın adını veya grupta yeni bir mesajı yeniden adlandırın", + "apihelp-managemessagegroups-param-groupId": "Grup Kimliği", + "apihelp-managemessagegroups-param-renameMessageKey": "Hedef mesaj anahtarı yeniden adlandırılıyor", + "apihelp-managemessagegroups-param-messageKey": "Yedek mesaj tuşu", + "apihelp-managemessagegroups-param-operation": "Yapılacak işlem. Olası değerler - rename / new", + "apihelp-managemessagegroups-param-changesetName": "Ayarlanan adı değiştir - Varsayılan / Katılımsız / Mediawiki vb.", + "apihelp-managemessagegroups-param-changesetModified": "Değişiklik kümesinin en son ne zaman değiştirildiğinin Unix zaman damgası. Değişiklik kümesi bundan sonra değiştirildiyse, API hata verir.", + "apihelp-translatesandbox-description": "Üye olun ve sanal alan kullanıcılarını yönetin.", + "apihelp-translatesandbox-summary": "Deneme tahtası olan kullanıcılarını kaydedin ve yönetin.", + "apihelp-translatesandbox-param-do": "Ne yapmalı.", + "apihelp-translatesandbox-param-userid": "Yönetilen kullanıcıların kullanıcı kimlikleri. Oluşumlar için 0 kullanın.", "apihelp-translatesandbox-param-username": "Kullanıcı oluştururken kullanıcı adı.", "apihelp-translatesandbox-param-password": "Kullanıcı oluştururken parola.", "apihelp-translatesandbox-param-email": "Kullanıcı oluşturma e-posta.", - "apihelp-translationaids-description": "Tüm çeviriler aıds sorgu.", - "apihelp-translationaids-param-title": "Bilinen bir mesajın tam başlık.", - "apihelp-translationaids-param-group": "İleti grup mesajı aittir. Boş ise o zaman birinci grup kullanılır.", + "apihelp-translationaids-description": "Tüm çevirileri sorgulamanıza yardımcı olur.", + "apihelp-translationaids-summary": "Tüm çevirileri sorgulamanıza yardımcı olur.", + "apihelp-translationaids-param-title": "Bilinen bir mesajın tam başlığı.", + "apihelp-translationaids-param-group": "Mesaj grubuna ait mesaj. Boşsa birincil grup kullanılır.", "apihelp-translationaids-param-prop": "Çeviri eklemek için yardımcılar.", - "apihelp-translationaids-example-1": "Haritayı [[: Ocak/fi MediaWiki]]aıds", + "apihelp-translationaids-example-1": "[[MediaWiki:January/fi]] için yardımları göster", "apihelp-translationreview-description": "Mark çeviriler yapılmıştır.", - "apihelp-translationreview-param-revision": "Gözden Geçirme numarası.", - "apihelp-translationreview-example-1": "Gözden Geçirme 1", + "apihelp-translationreview-summary": "Çevirileri incelendi işaretleyin.", + "apihelp-translationreview-param-revision": "İncelenecek revizyon numarası.", + "apihelp-translationreview-example-1": "Revizyon 1'i inceleyin", "apihelp-translationstash-description": "Çeviriler saklamak için ekleyin.", + "apihelp-translationstash-summary": "Çeviri saklamaları ekle.", "apihelp-translationstash-param-subaction": "Eylem.", - "apihelp-translationstash-param-title": "Çeviri birim sayfanın Başlığı.", + "apihelp-translationstash-param-title": "Çeviri birimi sayfasının başlığı.", "apihelp-translationstash-param-translation": "Çeviri kullanıcı tarafından yapılmış.", - "apihelp-translationstash-param-metadata": "JSON nesne.", - "apihelp-translationstash-param-username": "Almak saklamak kimin isteğe bağlı olarak kullanıcı. Sadece ayrıcalıklı kullanıcılar bunu yapabilirsiniz.", - "apihelp-translationstash-example-1": "İçin saklamak için bir çeviri [[: Jan/fi MediaWiki]]ekleyin", + "apihelp-translationstash-param-metadata": "JSON nesnesi.", + "apihelp-translationstash-param-username": "İsteğe bağlı olarak stash almak için kullanıcı. Bunu yalnızca ayrıcalıklı kullanıcılar yapabilir.", + "apihelp-translationstash-example-1": "[[MediaWiki:Jan/fi]] için saklama bir çeviri ekleyin", "apihelp-translationstash-example-2": "Sorgu zula", "apihelp-ttmserver-description": "Çeviri anılar sorgu önerileri.", - "apihelp-ttmserver-param-service": "Kullanmak için hangi.", + "apihelp-ttmserver-summary": "Çeviri anılarından gelen önerileri sorgulayın.", + "apihelp-ttmserver-param-service": "Kullanılabilecek çeviri hizmetlerinden hangisini kullanmalısınız.", "apihelp-ttmserver-param-sourcelanguage": "Kaynak metnin dil kodu.", - "apihelp-ttmserver-param-targetlanguage": "Öneri dil kodu.", - "apihelp-ttmserver-param-text": "Metin için öneriler bulmak için.", - "apihelp-ttmserver-example-1": "Çeviri \"\" ingilizce Yardım için öneriler", - "apierror-translate-invalidlanguage": "İstenilen dil geçersiz." + "apihelp-ttmserver-param-targetlanguage": "Önerinin dil kodu.", + "apihelp-ttmserver-param-text": "Önerileri bulunacak metin.", + "apihelp-ttmserver-example-1": "\"Help\" ile İngilizce'den Fince'ye çevirmek için öneriler alın", + "apihelp-searchtranslations-description": "Çevirileri arayın.", + "apihelp-searchtranslations-summary": "Çevirileri arayın.", + "apihelp-searchtranslations-param-service": "Kullanılabilecek çeviri hizmetlerinden hangisi kullanılacaktır.", + "apihelp-searchtranslations-param-query": "Aranacak dize.", + "apihelp-searchtranslations-param-sourcelanguage": "Kaynak metnin dil kodu.", + "apihelp-searchtranslations-param-language": "Dizede aranacak dil kodu.", + "apihelp-searchtranslations-param-group": "Dizginin aranacağı grup kimliği.", + "apihelp-searchtranslations-param-filter": "İleti çeviri durum filtresi.", + "apihelp-searchtranslations-param-match": "Tüm arama sözcüklerini eşleştirin.", + "apihelp-searchtranslations-param-case": "Büyük/küçük harf duyarlı arama.", + "apihelp-searchtranslations-param-offset": "Çeviriler için ofset.", + "apihelp-searchtranslations-param-limit": "Sonucun boyutu.", + "apihelp-searchtranslations-example-1": "Dil için çevirileri gösterin.", + "apihelp-searchtranslations-example-2": "Kaynak dilde sorguyla eşleşen çevrilmemiş iletileri göster.", + "apihelp-translationcheck-description": "Verilen çeviri girişini yapılandırılmış mesaj doğrulayıcılarına göre doğrulayın.", + "apihelp-translationcheck-summary": "Çevirileri doğrulayın.", + "apihelp-translationcheck-param-title": "Ad alanı ve dil kodu içeren sayfa başlığı.", + "apihelp-translationcheck-param-translation": "Doğrulanacak çeviri.", + "apierror-translate-changeset-modified": "Değişiklik kümesi başka bir kullanıcı veya işlem tarafından değiştirildi. Yaptığınız değişiklikler, değişikliklerini geçersiz kılabileceği için kaydedilemiyor. En son değişiklikleri görmek için lütfen sayfayı yenileyin.", + "apierror-translate-duplicateaggregategroup": "Mesaj grubu zaten var", + "apierror-translate-fuzzymessage": "Fuzzy çevirileri incelenemiyor", + "apierror-translate-groupreviewdisabled": "Mesaj grubu incelemesi kullanılmıyor.", + "apierror-translate-invalidaggregategroup": "Geçersiz toplu mesaj grubu", + "apierror-translate-invalidaggregategroupname": "Geçersiz toplu mesaj grubu adı", + "apierror-translate-invalidgroup": "Grup mevcut değil veya geçersiz", + "apierror-translate-invalidstate": "İstenen durum geçersiz.", + "apierror-translate-invalidlanguage": "İstenilen dil geçersiz.", + "apierror-translate-invalidupdate": "Geçersiz güncelleme", + "apierror-translate-language-disabled": "$1 çevirisi devre dışı.", + "apierror-translate-language-disabled-reason": "$1 çevirisi devre dışı: $2", + "apierror-translate-nodynamicgroups": "Dinamik mesaj grupları burada desteklenmiyor", + "apierror-translate-nomessagefortitle": "Başlık çevrilebilir bir iletiye karşılık gelmiyor", + "apierror-translate-notranslationservices": "Hiçbir genel çeviri hizmeti yapılandırılmadı. Viki hizmetlisi, bu özelliğin kullanılabilmesi için önce $wgTranslateTranslationServices ayarını doğru yapması gerekir.", + "apierror-translate-owntranslation": "Kendi çevirileri incelemiyor", + "apierror-translate-sandboxdisabled": "Deneme tahtası özelliği kullanımda değil", + "apierror-translate-sandbox-invalidppassword": "Geçersiz parola", + "apierror-translate-smg-nochanges": "İşlenecek değişiklik yok.", + "apierror-translate-unknownmessage": "Bilinmeyen mesaj", + "apierror-translate-invalid-changeset-name": "Geçersiz değişiklik kümesi dosya adı geçti - $1", + "apierror-translate-invalid-operation": "Geçersiz işlem: $1. Geçerli değerler - $2.", + "apierror-translate-addition-key-invalid": "Ekleme için iletilen mesaj anahtarı, kaynak dil için yeniden adlandırılmış mesaj listesinde bulunamadı.", + "apierror-translate-rename-msg-new": "Yalnızca yeniden adlandırılan mesajlar yeni mesaj olarak eklenebilir.", + "apierror-translate-rename-key-invalid": "Yeniden adlandırma için iletilen mesaj anahtarları, kaynak dil için yapılan değişiklikler listesinde bulunamadı.", + "apierror-translate-rename-state-invalid": "Yeniden adlandırma için iletilen iletilerden biri yeni eklenmeli ve diğeri silinmelidir. Mevcut durumlar - ek: $1 ve silme: $2.", + "apiwarn-translate-alreadyreviewedbyyou": "Zaten sizin tarafınızdan incelenmiş olarak işaretlendi", + "apiwarn-translate-language-disabled-source": "Bu grubun kaynak dili $1. Lütfen çevrilecek başka bir dil seçin." } diff --git a/MLEB/Translate/i18n/api/tt-cyrl.json b/MLEB/Translate/i18n/api/tt-cyrl.json index 0fc81d68..13e3395d 100644 --- a/MLEB/Translate/i18n/api/tt-cyrl.json +++ b/MLEB/Translate/i18n/api/tt-cyrl.json @@ -1,8 +1,9 @@ { "@metadata": { "authors": [ + "Ерней", "Ильнар" ] }, - "apihelp-groupreview-param-group": "Язмалар төркеме." + "apihelp-groupreview-param-group": "Хәбәрләр тупламы." } diff --git a/MLEB/Translate/i18n/api/uk.json b/MLEB/Translate/i18n/api/uk.json index 0844991d..a1056e96 100644 --- a/MLEB/Translate/i18n/api/uk.json +++ b/MLEB/Translate/i18n/api/uk.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ - "Ypryima", "Base", - "Ата", "Dars", - "Piramidion" + "Piramidion", + "Ypryima", + "Ата" ] }, "apihelp-aggregategroups-description": "Керування агрегованими групами повідомлень.\n\nВи можете додавати або вилучати агреговані групи повідомлень та додавати чи вилучати повідомлення з них (одне за раз).", @@ -29,6 +29,12 @@ "apihelp-query+languagestats-param-language": "Код мови.", "apihelp-query+languagestats-example-1": "Перелічити статистику завершеності перекладу фінською", "apihelp-query+messagecollection-description": "Запитати MessageCollection про переклади.", + "apihelp-query+managemessagegroups-summary": "Отримати можливі перейменування для повідомлення в групі протягом імпортувань", + "apihelp-query+managemessagegroups-description": "Отримати можливі перейменування для повідомлення в групі протягом імпортувань", + "apihelp-query+managemessagegroups-param-groupId": "Ідентифікатор групи", + "apihelp-query+managemessagegroups-param-messageKey": "Ключ повідомлення", + "apihelp-query+managemessagegroups-param-changesetName": "Назва набору змін — Стандартно / Без змін / Mediawiki тощо.", + "apihelp-query+managemessagegroups-example-1": "Отримати можливі перейменування для заданого ключа в заданій групі", "apihelp-query+messagecollection-summary": "Запитати MessageCollection про переклади.", "apihelp-query+messagecollection-param-group": "Група повідомлень.", "apihelp-query+messagecollection-param-language": "Код мови.", @@ -59,6 +65,14 @@ "apihelp-query+messagetranslations-summary": "Зробити запит на всі переклади одного повідомлення.", "apihelp-query+messagetranslations-param-title": "Повна назва відомого повідомлення.", "apihelp-query+messagetranslations-example-1": "Список перекладів у вікі для «MediaWiki:January»", + "apihelp-managemessagegroups-description": "Додати повідомлення як перейменування існуючого повідомлення, або як нове повідомлення в групі протягом імпортувань", + "apihelp-managemessagegroups-summary": "Додати повідомлення як перейменування існуючого повідомлення, або як нове повідомлення в групі протягом імпортувань", + "apihelp-managemessagegroups-param-groupId": "Ідентифікатор групи", + "apihelp-managemessagegroups-param-renameMessageKey": "Ключ цільового повідомлення, перейменування якого здійснюється", + "apihelp-managemessagegroups-param-messageKey": "Заміна для ключа повідомлення", + "apihelp-managemessagegroups-param-operation": "Операція, яку слід виконати. Можливі значення — перейменування / нове", + "apihelp-managemessagegroups-param-changesetName": "Назва набору змін — Стандартно / Без змін / Mediawiki тощо.", + "apihelp-managemessagegroups-param-changesetModified": "Мітка часу Unix-формату, коли була остання модифікація набору змін. Якщо модифікація набору змін відбулася після цього, API видасть помилку.", "apihelp-translatesandbox-description": "Зареєструватися й управляти користувачами в пісочниці.", "apihelp-translatesandbox-summary": "Зареєструватися й управляти користувачами в пісочниці.", "apihelp-translatesandbox-param-do": "Що робити.", @@ -106,10 +120,11 @@ "apihelp-searchtranslations-param-limit": "Розмір результату.", "apihelp-searchtranslations-example-1": "Показати переклади для мови.", "apihelp-searchtranslations-example-2": "Показати запит на подібні неперекладені збіги мовою оригіналу.", - "apihelp-translationcheck-description": "Перевірити введений переклад за допомогою засобів перевірки повідомлень.", + "apihelp-translationcheck-description": "Перевірити введений переклад за допомогою налаштованих засобів перевірки повідомлень.", "apihelp-translationcheck-summary": "Перевірити переклади.", "apihelp-translationcheck-param-title": "Назва сторінки з простором назв та кодом мови.", "apihelp-translationcheck-param-translation": "Переклад, який слід перевірити.", + "apierror-translate-changeset-modified": "Набір змін модифіковано іншим користувачем чи процесом. Ваші зміни не можна зберегти, оскільки це може перезаписати їхні зміни. Будь ласка, перезавантажте сторінку, щоб побачити останні зміни.", "apierror-translate-duplicateaggregategroup": "Група повідомлень вже існує", "apierror-translate-fuzzymessage": "Не вдалося переглянути застарілі переклади", "apierror-translate-groupreviewdisabled": "Група повідомлень не використовується.", @@ -121,13 +136,20 @@ "apierror-translate-invalidupdate": "Недійсне оновлення", "apierror-translate-language-disabled": "Переклад мовою «$1» вимкнено", "apierror-translate-language-disabled-reason": "Переклад мовою «$1» вимкнено: $2", - "apierror-translate-language-disabled-source": "Вихідна мова цієї групи — $1. Будь ласка, виберіть іншу мову для перекладу.", "apierror-translate-nodynamicgroups": "Динамічні групи повідомлень не підтримуються тут", "apierror-translate-nomessagefortitle": "Назва не відповідає перекладному повідомленню", "apierror-translate-notranslationservices": "Не налаштовано ще жодного публічного сервісу перекладу. Адміністратор цієї вікі повинен належним чином налаштувати $wgTranslateTranslationServices, перш ніж цю функцію можна буде використовувати.", "apierror-translate-owntranslation": "Не вдалося перевірити власні переклади", "apierror-translate-sandboxdisabled": "Функція пісочниці не використовується", "apierror-translate-sandbox-invalidppassword": "Недійсний пароль", + "apierror-translate-smg-nochanges": "Немає змін процесу.", "apierror-translate-unknownmessage": "Невідоме повідомлення", - "apiwarn-translate-alreadyreviewedbyyou": "Вже позначено Вами як перевірено" + "apierror-translate-invalid-changeset-name": "Подано недійсну назву файлу набору змін — $1", + "apierror-translate-invalid-operation": "Недійсна операція: $1. Дійсні значення — $2.", + "apierror-translate-addition-key-invalid": "Ключ повідомлення, поданий для додавання, не знайдено в списку перейменованих повідомлень для цільової мови.", + "apierror-translate-rename-msg-new": "Лише перейменовані повідомлення можна додавати як нові повідомлення.", + "apierror-translate-rename-key-invalid": "Ключі повідомлень, подані для перейменування, не знайдено в списку змін для цільової мови.", + "apierror-translate-rename-state-invalid": "Одне з повідомлень, подане для перейменування, має бути доданим заново, а інше — вилученим. Поточні стани — додавання: $1 і вилучення: $2.", + "apiwarn-translate-alreadyreviewedbyyou": "Вже позначено Вами як перевірено", + "apiwarn-translate-language-disabled-source": "Вихідна мова цієї групи — $1. Будь ласка, виберіть іншу мову для перекладу." } diff --git a/MLEB/Translate/i18n/api/vec.json b/MLEB/Translate/i18n/api/vec.json new file mode 100644 index 00000000..2162532d --- /dev/null +++ b/MLEB/Translate/i18n/api/vec.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Fierodelveneto" + ] + }, + "apihelp-groupreview-param-group": "Grupo de mesaji", + "apihelp-query+messagecollection-param-group": "Grupo de mesaji" +} diff --git a/MLEB/Translate/i18n/api/yi.json b/MLEB/Translate/i18n/api/yi.json index d3d6ccea..4542421f 100644 --- a/MLEB/Translate/i18n/api/yi.json +++ b/MLEB/Translate/i18n/api/yi.json @@ -7,7 +7,15 @@ "apihelp-groupreview-param-group": "מעלדונג גרופע", "apihelp-groupreview-param-language": "שפראַך קאד.", "apihelp-query+languagestats-param-language": "שפראַך קאד.", + "apihelp-query+messagecollection-param-language": "שפראַך-קאד.", + "apihelp-query+messagecollection-example-1": "ליסטע פֿון אונטערגשטיצטע שפראכן", "apihelp-translatesandbox-param-do": "וואס צו טון.", + "apihelp-ttmserver-param-sourcelanguage": "שפראך-קאד פון דעם קוואלטעקסט.", + "apihelp-searchtranslations-description": "זוכן איבערזעצונגען", + "apihelp-searchtranslations-summary": "זוכן איבערזעצונגען", + "apihelp-searchtranslations-param-sourcelanguage": "שפראך-קאד פון דעם קוואלטעקסט.", "apihelp-searchtranslations-example-1": "ווייזן איבערזעצונגען פאר דער שפראך.", - "apierror-translate-sandbox-invalidppassword": "אומגילטיק פאסווארט" + "apihelp-searchtranslations-example-2": "ווייז נישט-איבערגעזעצטע מעלדונגען וואס פאסן צו דער פֿראגע אין דער קוואלשפראך.", + "apierror-translate-sandbox-invalidppassword": "אומגילטיק פאסווארט", + "apiwarn-translate-language-disabled-source": "די קוואלשפראך פֿאר דער דאזיקער גרופע איז $1. זייט אזוי גוט און וויילט אן אנדער שפראך איבערצוזעצן דערצו." } diff --git a/MLEB/Translate/i18n/api/zh-hans.json b/MLEB/Translate/i18n/api/zh-hans.json index 99a94abc..c74bca75 100644 --- a/MLEB/Translate/i18n/api/zh-hans.json +++ b/MLEB/Translate/i18n/api/zh-hans.json @@ -1,10 +1,11 @@ { "@metadata": { "authors": [ - "Liuxinyu970226", "HERAN", - "Yfdyh000", - "LNDDYL" + "LNDDYL", + "Liuxinyu970226", + "VulpesVulpes825", + "Yfdyh000" ] }, "apihelp-aggregategroups-description": "管理聚合消息组。\n\n您可以添加和移除聚合消息组,以及从组中关联或分离消息(一次一个)。", @@ -28,6 +29,10 @@ "apihelp-query+languagestats-param-language": "语言代码。", "apihelp-query+languagestats-example-1": "芬兰语的翻译完成统计列表", "apihelp-query+messagecollection-description": "查询有关翻译的MessageCollection。", + "apihelp-query+managemessagegroups-summary": "在导入期间为组中的消息获取可能的重命名", + "apihelp-query+managemessagegroups-description": "在导入期间为组中的消息获取可能的重命名", + "apihelp-query+managemessagegroups-param-groupId": "群组ID", + "apihelp-query+managemessagegroups-param-messageKey": "消息键", "apihelp-query+messagecollection-summary": "查询有关翻译的MessageCollection。", "apihelp-query+messagecollection-param-group": "信息组。", "apihelp-query+messagecollection-param-language": "语言代码。", @@ -58,6 +63,7 @@ "apihelp-query+messagetranslations-summary": "查询单个信息的所有翻译。", "apihelp-query+messagetranslations-param-title": "已知消息的完整标题。", "apihelp-query+messagetranslations-example-1": "Wiki中用于“MediaWiki:January”的翻译列表", + "apihelp-managemessagegroups-param-groupId": "群组ID", "apihelp-translatesandbox-description": "注册和管理沙盒化用户。", "apihelp-translatesandbox-summary": "注册和管理沙盒化用户。", "apihelp-translatesandbox-param-do": "要干什么。", @@ -120,13 +126,14 @@ "apierror-translate-invalidupdate": "无效更新", "apierror-translate-language-disabled": "至$1的翻译已禁用。", "apierror-translate-language-disabled-reason": "至$1的翻译已禁用:$2", - "apierror-translate-language-disabled-source": "此组的原始语言是$1。请选择另一语言进行翻译。", "apierror-translate-nodynamicgroups": "动态消息组在此不支持", "apierror-translate-nomessagefortitle": "标题与可翻译消息不一致", "apierror-translate-notranslationservices": "未配置公开翻译服务。在此功能可以使用前,wiki管理员需要适当设置$wgTranslateTranslationServices。", "apierror-translate-owntranslation": "不能复核自己的翻译", "apierror-translate-sandboxdisabled": "未使用沙盒功能", "apierror-translate-sandbox-invalidppassword": "无效密码", + "apierror-translate-smg-nochanges": "没有要处理的更改。", "apierror-translate-unknownmessage": "未知消息", - "apiwarn-translate-alreadyreviewedbyyou": "已被您标记为已复核" + "apiwarn-translate-alreadyreviewedbyyou": "已被您标记为已复核", + "apiwarn-translate-language-disabled-source": "此组的原始语言是$1。请选择另一语言进行翻译。" } diff --git a/MLEB/Translate/i18n/api/zh-hant.json b/MLEB/Translate/i18n/api/zh-hant.json index ea7d5a18..4247f98b 100644 --- a/MLEB/Translate/i18n/api/zh-hant.json +++ b/MLEB/Translate/i18n/api/zh-hant.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ - "Liuxinyu970226", + "Kly", "LNDDYL", - "Kly" + "Liuxinyu970226" ] }, "apihelp-aggregategroups-description": "管理集合訊息群組。\n\n您可以添加或移除集合訊息群組,以及從其中來關聯或取消關聯訊息群組(每一次一個)。", @@ -27,13 +27,19 @@ "apihelp-query+languagestats-param-language": "語言代碼。", "apihelp-query+languagestats-example-1": "芬蘭語的翻譯完成統計狀態清單", "apihelp-query+messagecollection-description": "查詢有關翻譯的 MessageCollection。", + "apihelp-query+managemessagegroups-summary": "在導入過程中取得訊息群組裡可能的重新命名", + "apihelp-query+managemessagegroups-description": "在導入過程中取得訊息群組裡可能的重新命名", + "apihelp-query+managemessagegroups-param-groupId": "群組 ID", + "apihelp-query+managemessagegroups-param-messageKey": "訊息鍵", + "apihelp-query+managemessagegroups-param-changesetName": "更改設定名稱 - 預設/未留意/Mediawiki 其它", + "apihelp-query+managemessagegroups-example-1": "索取在指定群組裡指定鍵可能會有的重新命名。", "apihelp-query+messagecollection-summary": "查詢有關翻譯的 MessageCollection。", "apihelp-query+messagecollection-param-group": "訊息群組。", "apihelp-query+messagecollection-param-language": "語言代碼。", "apihelp-query+messagecollection-param-limit": "要顯示的訊息多寡(在篩選後)。", "apihelp-query+messagecollection-param-offset": "起始的整數或鍵值偏差。", - "apihelp-query+messagecollection-param-filter": "訊息集合篩選。使用 ! 來使條件無效。例如 !fuzzy 代表僅列出未過時的訊息。篩選是以指定的排序來套用。\n;fuzzy:帶有已過時標籤的訊息。\n;optional:僅在需要更改時翻譯的訊息。\n;ignored:不需翻譯的訊息。\n;hastranslation:有被翻譯到的訊息,無論是否過時。\n;translated:有被翻譯到且非過時的訊息。\n;changed:自上一次匯出時,有被翻譯或更改的訊息。\n;reviewer:N:在複審員裡使用者編號為 N 的訊息。\n;last-translator:N:最後一位翻譯者之使用者編號為 N 的訊息。", - "apihelp-query+messagecollection-param-prop": "要取得的參數:\n;definition:訊息定義。\n;translation:目前翻譯(若不帶有 $1 字串,使用標籤來檢查舊有或損壞翻譯)。\n;tags:訊息標籤,像是可選用、已忽略和已過時。\n;properties:訊息參數,像是狀態、修訂、最後的翻譯者。可在訊息間變動。\n;revision:已棄用!請改用 $2prop=properties。", + "apihelp-query+messagecollection-param-filter": "訊息集合篩選。使用 ! 來使條件無效。例如 !fuzzy 代表僅列出未過時的訊息。篩選是以指定的排序來套用。\n;fuzzy:帶有模糊標籤的訊息。\n;optional:僅在需要更改時翻譯的訊息。\n;ignored:不需翻譯的訊息。\n;hastranslation:有被翻譯到的訊息,無論是否為模糊翻譯。\n;translated:有被翻譯到且非模糊翻譯的訊息。\n;changed:自上一次匯出時,有被翻譯或更改的訊息。\n;reviewer:N:在複審員裡使用者編號為 N 的訊息。\n;last-translator:N:最後一位翻譯者之使用者編號為 N 的訊息。", + "apihelp-query+messagecollection-param-prop": "要取得的參數:\n;definition:訊息定義。\n;translation:目前翻譯(若不帶有 $1 字串,使用標籤來檢查舊有或損壞翻譯)。\n;tags:訊息標籤,像是可選用、已忽略和模糊翻譯。\n;properties:訊息參數,像是狀態、修訂、最後的翻譯者。可在訊息間變動。\n;revision:已棄用!請改用 $2prop=properties。", "apihelp-query+messagecollection-example-1": "支援語言清單", "apihelp-query+messagecollection-example-2": "群組「group-Example」的非選用群組定義清單", "apihelp-query+messagecollection-example-3": "用於群組「group-Example」,芬蘭語中帶標籤的選用群組清單", @@ -57,6 +63,14 @@ "apihelp-query+messagetranslations-summary": "查詢單一訊息的所有翻譯。", "apihelp-query+messagetranslations-param-title": "已知訊息的完整標題。", "apihelp-query+messagetranslations-example-1": "Wiki 裡用於「MediaWiki:January」的翻譯清單", + "apihelp-managemessagegroups-description": "在群組匯入期間,以新訊息或是現有訊息重新命名來添加", + "apihelp-managemessagegroups-summary": "在群組匯入期間,以新訊息或是現有訊息重新命名來添加", + "apihelp-managemessagegroups-param-groupId": "群組 ID", + "apihelp-managemessagegroups-param-renameMessageKey": "目標訊息鍵被重新命名", + "apihelp-managemessagegroups-param-messageKey": "更換訊息鍵", + "apihelp-managemessagegroups-param-operation": "要執行的操作。可能的值 - rename / new", + "apihelp-managemessagegroups-param-changesetName": "更改設定名稱 - 預設/未留意/Mediawiki 其它。", + "apihelp-managemessagegroups-param-changesetModified": "變更集在上一次變動的 Unix 時間戳記。若變更集是在此 API 之後修改,會拋出錯誤資訊。", "apihelp-translatesandbox-description": "註冊並管理沙盒使用者。", "apihelp-translatesandbox-summary": "註冊並管理沙盒使用者。", "apihelp-translatesandbox-param-do": "要做什麼。", @@ -104,12 +118,13 @@ "apihelp-searchtranslations-param-limit": "結果的大小。", "apihelp-searchtranslations-example-1": "顯示用於語言的翻譯。", "apihelp-searchtranslations-example-2": "顯示在來源語言裡符合查詢的尚未翻譯訊息。", - "apihelp-translationcheck-description": "驗證提供的翻譯輸入內容是否符合訊息檢查者要求。", + "apihelp-translationcheck-description": "驗證提供的翻譯輸入內容是否符合所設置的訊息驗證要求。", "apihelp-translationcheck-summary": "驗證翻譯。", "apihelp-translationcheck-param-title": "帶有命名空間與語言代碼的頁面標題。", "apihelp-translationcheck-param-translation": "要驗證的翻譯。", + "apierror-translate-changeset-modified": "變更集已被作者用戶或程序給變更。因您的變更可能會覆蓋掉它們的變更,所以無法保存。請重新整理頁面來查看最新一次的變更內容。", "apierror-translate-duplicateaggregategroup": "訊息群組已存在", - "apierror-translate-fuzzymessage": "不能審查已過時翻譯", + "apierror-translate-fuzzymessage": "不能審查模糊翻譯", "apierror-translate-groupreviewdisabled": "未使用訊息群組審查。", "apierror-translate-invalidaggregategroup": "無效集合訊息群組", "apierror-translate-invalidaggregategroupname": "無效集合訊息群組名稱", @@ -119,13 +134,20 @@ "apierror-translate-invalidupdate": "無效更新", "apierror-translate-language-disabled": "對$1的翻譯已停用。", "apierror-translate-language-disabled-reason": "對$1的翻譯已停用:$2", - "apierror-translate-language-disabled-source": "此群組的來源語言是$1。請選擇其它的語言來翻譯。", "apierror-translate-nodynamicgroups": "在此不支援動態訊息群組", "apierror-translate-nomessagefortitle": "標題與可翻譯訊息不一致", "apierror-translate-notranslationservices": "未設置開放翻譯服務。在此功能可使用前,Wiki 管理員需適當設定 $wgTranslateTranslationServices。", "apierror-translate-owntranslation": "不能審查自己的翻譯", "apierror-translate-sandboxdisabled": "未使用沙盒功能", "apierror-translate-sandbox-invalidppassword": "無效密碼", + "apierror-translate-smg-nochanges": "沒有需要處理的更動。", "apierror-translate-unknownmessage": "未知訊息", - "apiwarn-translate-alreadyreviewedbyyou": "已由您標記為已審查" + "apierror-translate-invalid-changeset-name": "傳遞無效的變更集檔案名稱 - $1", + "apierror-translate-invalid-operation": "無效操作:$1。有效值 - $2。", + "apierror-translate-addition-key-invalid": "在來源語言的重新命名訊息清單裡找不到用於附加的傳遞訊息鍵。", + "apierror-translate-rename-msg-new": "僅有被重新命名的訊息可以添加成新訊息。", + "apierror-translate-rename-key-invalid": "在來源語言的更改清單裡找不到用於重新命名的傳遞訊息鍵。", + "apierror-translate-rename-state-invalid": "傳遞用於重新命名的訊息裡其中一個得重新添加,而另一個應刪除。目前狀態 - 添加:$1,刪除:$2。", + "apiwarn-translate-alreadyreviewedbyyou": "已由您標記為已審查", + "apiwarn-translate-language-disabled-source": "此群組的來源語言是$1。請選擇其它的語言來翻譯。" } diff --git a/MLEB/Translate/i18n/core/ace.json b/MLEB/Translate/i18n/core/ace.json index 7c9a2d0e..0c773d2c 100644 --- a/MLEB/Translate/i18n/core/ace.json +++ b/MLEB/Translate/i18n/core/ace.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ - "Rachmat.Wahidi", "Ayie7791", - "Si Gam Acèh", - "Rachmat04" + "Rachmat.Wahidi", + "Rachmat04", + "Si Gam Acèh" ] }, "translate": "Teujeumah", @@ -37,7 +37,7 @@ "translate-edit-title": "Peusaneut \"$1\"", "translate-edit-definition": "Hareutoe peusan", "translate-edit-translation": "Teujeumah", - "translate-edit-contribute": "beuneuri", + "translate-edit-contribute": "peuneugöt", "translate-edit-information": "Hareutoe bhah peusan ($1)", "translate-edit-in-other-languages": "Peusan bak bahsa la'én", "translate-manage-import-new": "Peusan barô $1", diff --git a/MLEB/Translate/i18n/core/aeb-latn.json b/MLEB/Translate/i18n/core/aeb-latn.json index 7ee879b6..ae841e91 100644 --- a/MLEB/Translate/i18n/core/aeb-latn.json +++ b/MLEB/Translate/i18n/core/aeb-latn.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "GeekEmad", - "Csisc" + "Csisc", + "GeekEmad" ] }, "translate-documentation-language": "Id-dokümoñtesyoñ mtēģ il-mēssāj" diff --git a/MLEB/Translate/i18n/core/af.json b/MLEB/Translate/i18n/core/af.json index ae714128..4b054e1b 100644 --- a/MLEB/Translate/i18n/core/af.json +++ b/MLEB/Translate/i18n/core/af.json @@ -4,10 +4,11 @@ "Ansumang", "Arnobarnard", "Byeboer", + "Fwolff", + "Joris Darlington Quarshie", "Naudefj", "SPQRobin", - "පසිඳු කාවින්ද", - "Fwolff" + "පසිඳු කාවින්ද" ] }, "translate": "Vertaal", @@ -52,37 +53,17 @@ "translate-use-suggestion": "Vervang die huidige vertaling met hierdie voorstel.", "translate-edit-nopermission": "U moet toestemming verkry alvorens u boodskappe kan vertaal.", "translate-edit-askpermission": "Vra vir toestemming", - "translate-magic-pagename": "Uitgebreide MediaWiki-vertaling", - "translate-magic-module": "Module:", - "translate-magic-submit": "Gaan haal", - "translate-magic-cm-export": "Eksporteer", - "translate-magic-nothing-to-export": "Daar is niks om te eksporteer nie.", - "translate-magic-cm-to-be": "Toekomstig", - "translate-magic-cm-current": "Huidig", - "translate-magic-cm-original": "Oorspronklik", - "translate-magic-cm-comment": "Samevatting:", - "translate-magic-cm-save": "Stoor", - "translate-magic-cm-updatedusing": "Opgedateer deur [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] te gebruik", - "translate-magic-cm-savefailed": "Stoor het gefaal", - "translate-magic-special": "Alternatiewe spesiale bladsye", - "translate-magic-words": "Magiese woorde", - "translate-magic-namespace": "Naamruimtename", - "translate-magic-notsaved": "U wysigings is nie gestoor nie!", - "translate-magic-errors": "Los die volgende {{PLURAL:$1|fout|foute}} in die vertaling op:", - "translate-magic-saved": "U wysigings was suksesvol gestoor.", - "translate-checks-parameters": "Die volgende {{PLURAL:$2|parameter word|parameters word}} nie gebruik nie:\n$1", - "translate-checks-parameters-unknown": "Die volgende {{PLURAL:$2|parameter|parameters}} is onbekend:\n$1", + "translate-checks-parameters": "Die volgende {{PLURAL:$2|parameter word|parameters word}} nie gebruik nie:\n$1", + "translate-checks-parameters-unknown": "Die volgende {{PLURAL:$2|parameter|parameters}} is onbekend:\n$1", "translate-checks-balance": "Daar is 'n onewe {{PLURAL:$2|aantal hakkies|aantal hakkies}}:\n$1", "translate-checks-links": "Die volgende {{PLURAL:$2|verwysing is|verwysings is}} problematies:\n$1", "translate-checks-links-missing": "Die volgende {{PLURAL:$2|verwysing is weg|$2 verwysings is weg}}:\n$1", - "translate-checks-xhtml": "Vervang die volgende {{PLURAL:$2|etiket|etikette}} met die regtes:\n$1", "translate-checks-plural": "Die definisie bevat {{PLURAL:}}, maar die vertaling nie.", "translate-checks-pagename": "Naamspasie het verander van die definisie", "translate-checks-format": "Hierdie vertaling wyk af van die bronboodskap of het 'n ongeldige sintaks: $1", - "translate-checks-escape": "Die volgende \"escapes\" is waarskynlik per ongeluk toegepas: $1", + "translate-checks-escape": "Die volgende ontsnapping {{PLURAL:$2|karakter|karakters}} kan toevallig wees:$1.{{MEERVOUD:$4|'n geldige ontsnapkarakter is|geldige ontsnapkarakter bevat:}} $3", "translate-checks-malformed": "$1 het 'n ongeldige indeling.", "translate-checks-fudforum-syntax": "Gebruik $1 i.p.v. $2 vir hierdie projek.", - "translate-pref-nonewsletter": "Moenie aan my nuusbriewe per e-pos stuur nie", "translate-pref-editassistlang": "Hulptale:", "prefs-translate": "Vertalings opsies", "translate-pref-editassistlang-help": "Komma-geskeide lys van taalkodes.\nVertaling van 'n boodskap in hierdie tale word vertoon wanneer u vertaal.\nDie versteklys van tale hang van u taal af.", @@ -207,7 +188,6 @@ "translate-import-err-no-such-file": "Die lêer $1 bestaan nie of is nie na die bediener opgelaai nie.", "translate-import-err-stale-group": "Die boodskapgroep waaraan die lêer behoort bestaan ​​nie.", "translate-import-err-no-headers": "Die lêer bevat nie goed gevormde gettext soos deur die \"Translate\"-uitbreiding vereis word nie.\nDit is nie moontlik om die groep en taal uit die lêer te bepaal nie.", - "translate-import-err-warnings": "Die lêer is nie goed gevorm nie.\nMaak seker dat u teksverwerker nie \"msgctxt\"-velde verwyder nie.\nBesonderhede: $1", "translate-js-summary": "Samevatting:", "translate-js-save": "Stoor", "translate-js-next": "Stoor en open die volgende", @@ -277,8 +257,8 @@ "tux-editor-need-more-help": "Meer hulp nodig?", "tux-editor-ask-help": "Vra vir meer inligting", "tux-editor-tm-match": "$1% ooreenkoms", - "tux-warnings-more": "{{PLURAL:$1|$1 meer}}", - "tux-warnings-hide": "versteek", + "tux-notices-more": "{{PLURAL:$1|$1 meer}}", + "tux-notices-hide": "versteek", "tux-editor-save-failed": "Die stoor van die vertaling het gefaal: $1", "tux-editor-n-uses": "{{PLURAL:$1|Een|$1}} keer gebruik", "tux-editor-message-desc-more": "Wys meer", @@ -291,8 +271,8 @@ "tux-proofread-action-tooltip": "Aanvaar vertaling", "tux-proofread-edit-label": "Wysig", "tux-editor-page-mode": "Bladsy", - "tux-editor-outdated-warning": "Die vertaling moet moontlik bygewerk word.", - "tux-editor-outdated-warning-diff-link": "Wys verskille", + "tux-editor-outdated-notice": "Die vertaling moet moontlik bygewerk word.", + "tux-editor-outdated-notice-diff-link": "Wys verskille", "tux-editor-doc-editor-placeholder": "Boodskapbeskrywing", "tux-editor-doc-editor-save": "Stoor dokumentatsie", "tux-editor-doc-editor-cancel": "Kanselleer", diff --git a/MLEB/Translate/i18n/core/ais.json b/MLEB/Translate/i18n/core/ais.json deleted file mode 100644 index 6771822f..00000000 --- a/MLEB/Translate/i18n/core/ais.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Bunukwiki", - "Benel", - "Tokoabibi" - ] - }, - "translate-edit-translation": "mibelih", - "translate-export-form-format": "kese", - "translate-statsf-count-registrations": "baluhay misaungayay", - "translations": "sacahamin a belih nu kamu", - "translate-langstats-collapse": "piked", - "translate-documentation-language": "palatuh buhci tu kamu a sulit", - "translate-searchprofile": "mibelih", - "tux-editor-discard-changes-button-label": "miales tu masumaday", - "tux-warnings-hide": "midimut", - "tux-editor-message-desc-less": "mikabu", - "tux-editor-translate-mode": "piazihan tu sulit", - "tux-editor-close-tooltip": "edeben", - "tux-editor-collapse-tooltip": "piked", - "tux-editor-message-tools-translations": "sacahamin a belih nu kamu", - "tux-editor-loading": "miasip henay ayza..." -} diff --git a/MLEB/Translate/i18n/core/am.json b/MLEB/Translate/i18n/core/am.json index af070a58..d1d3099c 100644 --- a/MLEB/Translate/i18n/core/am.json +++ b/MLEB/Translate/i18n/core/am.json @@ -1,11 +1,13 @@ { "@metadata": { "authors": [ + "BaRaN6161 TURK", "Codex Sinaiticus", "Elfalem" ] }, "translate": "ማስተርጐሚያ", + "translate-taction-translate": "ተርጉም", "translate-page-settings-legend": "ምርጫዎች", "translate-page-group": "ስብስባ", "translate-page-language": "ቋንቋ", @@ -20,8 +22,6 @@ "translate-edit-no-information": "''ይኸው መልእክት ምንም መረጃ የለውም።\nመልዕክቱ በየት ወይም እንዴት እንደሚጠቀም ዕውቀት ካለዎ፣ መረጃ በመጨምር ሌሎች አስተርጓሚዎች ሊረዱ ይችላሉ።''", "translate-edit-information": "መረጃ ስለዚሁ መልእክት ($1)", "translate-edit-in-other-languages": "መልዕክቱ በሌሎች ልሳናት", - "translate-magic-cm-current": "ያሁኑኑ", - "translate-magic-cm-comment": "ማጠቃለያ፦", "translate-sidebar-alltrans": "ይኸው መልዕክት በሌሎች ልሳናት", "translate-language": "ቋንቋ" } diff --git a/MLEB/Translate/i18n/core/an.json b/MLEB/Translate/i18n/core/an.json index f348e1d7..33447aea 100644 --- a/MLEB/Translate/i18n/core/an.json +++ b/MLEB/Translate/i18n/core/an.json @@ -23,20 +23,6 @@ "translate-page-edit": "editar", "translate-optional": "(opcional)", "translate-ignored": "(no considerato)", - "translate-magic-pagename": "Traducción ixamplata de MediaWiki", - "translate-magic-help": "Puet traducir os \"alias\" d'as pachinas especials, as parolas machicas, y os espacios de nombres.\n\nAs pachinas especials y as parolas machicas pueden tener multiples traduccions. As traducción s'han de deseparar por una coma (,).\nOs espacios de nombres no pueden tener soque una traducción.\n\nIn as traduccions d'espacios de nombres $1 talk ye especial. $1 ye escambiata por o nombre d'o sitio (por exemplo {{ns:project_talk}}). Si no ye posible en a suya luenga formar una esprisión correcta sin cambiar o nombre d'o sitio, contacte con un programador.\n\nHa de fer parte d'a colla de traductors ta poder alzar os cambeos. Ístos no quedan rechistratos dica que no se puncha en o botón \"Alzar pachina\" que ye en o cobaixo d'a pachina.", - "translate-magic-submit": "Ir a escar", - "translate-magic-cm-export": "Exportar", - "translate-magic-cm-to-be": "Esdeviene", - "translate-magic-cm-current": "Actual", - "translate-magic-cm-original": "Orichinal", - "translate-magic-cm-comment": "Comentario:", - "translate-magic-cm-save": "Alzar", - "translate-magic-cm-updatedusing": "Esviellato usando [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "No se podió alzar a pachina", - "translate-magic-special": "Alias de pachinas especials", - "translate-magic-words": "Parolas machicas", - "translate-magic-namespace": "Espacios de nombres", "translate-translations-fieldset-title": "Mensache", "translate-save": "Alzar($1)" } diff --git a/MLEB/Translate/i18n/core/ar.json b/MLEB/Translate/i18n/core/ar.json index acc1888e..98ccb743 100644 --- a/MLEB/Translate/i18n/core/ar.json +++ b/MLEB/Translate/i18n/core/ar.json @@ -4,26 +4,27 @@ "Abanima", "Alnokta", "Basharh", + "Gagnabil", + "Hhaboh162002", + "Maroen1990", "Meno25", "Mido", + "Mr. Ibrahem", "OsamaK", "Ouda", + "Tala Ali", "ترجمان05", + "ديفيد", "روخو", "زكريا", "لطرش أحمد الهاشمي", "لطرش احمد الهاشمي", - "Gagnabil", - "محمد أحمد عبد الفتاح", - "Maroen1990", - "Mr. Ibrahem", - "ديفيد", - "Hhaboh162002" + "محمد أحمد عبد الفتاح" ] }, "translate": "ترجمة", "translate-extensionname": "ترجمة", - "translate-desc": "[[Special:Translate|صفحة خاصة]] لترجمة الميدياويكي وما بعده", + "translate-desc": "[[Special:Translate|صفحة خاصة]] لترجمة ميدياويكي وما بعده", "translate-fuzzybot-desc": "هذا حساب نظام خاص يستخدمه [https://www.mediawiki.org/wiki/Extension:Translate امتداد ترجمة] ميدياويكي ومستخدم للحفاظ على الترجمات،\nهذا الحساب جزء من برنامج ميدياويكي وليس مملوك لأي مستخدم.", "translate-taskui-export-to-file": "صدر في صيغة أصلية", "translate-taskui-export-as-po": "تصدير للترجمة بدون إنترنت", @@ -43,7 +44,7 @@ "translate-page-limit": "الحد", "translate-page-limit-option": "{{PLURAL:$1||رسالة واحدة|رسالتان|$1 رسالات|$1 رسالة}} للصفحة", "translate-submit": "اجلب", - "translate-page-navigation-legend": "الإبحار", + "translate-page-navigation-legend": "التصفح", "translate-page-showing": "عرض الرسائل من $1 إلى $2 ل $3.", "translate-page-showing-all": "عرض {{PLURAL:$1||رسالة واحدة|رسالتين|$1 رسائل|$1 رسالة}}.", "translate-page-showing-none": "لا رسائل للعرض.", @@ -73,46 +74,40 @@ "translate-export-invalid-format": "من فضلك حدد صيغة صحيحة.", "translate-export-not-supported": "تصدير الترجمات غير مدعوم.", "translate-export-format-notsupported": "صيغة التصدير المحددة لا تدعمها مجموعة الرسائل.", - "translate-magic-pagename": "ترجمة ميدياويكي الممتدة", - "translate-magic-help": "يمكنك ترجمة أسماء الصفحات الخاصة، والكلمات السحرية، وأسماء النطاقات.\n\nأسماء الصفحات الخاصة والكلمات السحرية يمكن أن يكون لها ترجمات متعددة.\nالترجمات تفصل بواسطة فاصلة (,).\nأسماء النطاقات يمكن أن يكون لها ترجمة واحدة فقط.\n\nترجمة نطاق نقاش المشروع $1 talk من الممكن أن تكون معقدة.\n$1 يتم استبدالها باسم الموقع (على سبيل المثال {{ns:project_talk}}).\nلو أنه من غير الممكن في لغتك صياغة تعبير صحيح بدون تغيير اسم الموقع، من فضلك دعنا نعرف في [[Support]].\n\nتحتاج إلى أن تكون في مجموعة المترجمين لحفظ التغييرات.\nالتغييرات لن يتم حفظها حتى تضغط زر الحفظ بالأسفل.", - "translate-magic-module": "وحدة:", - "translate-magic-submit": "اجلب", - "translate-magic-cm-export": "صدّر", - "translate-magic-nothing-to-export": "لا يوجد شيء يمكن تصديره.", - "translate-magic-cm-to-be": "لتصبح", - "translate-magic-cm-current": "حالي", - "translate-magic-cm-original": "الأصلي", - "translate-magic-cm-comment": "تعليق:", - "translate-magic-cm-save": "احفظ", - "translate-magic-cm-updatedusing": "حدث باستخدام [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "فشل الحفظ", - "translate-magic-special": "أسماء الصفحات الخاصة", - "translate-magic-words": "كلمات سحرية", - "translate-magic-namespace": "أسماء النطاقات", - "translate-magic-notsaved": "تعديلك لم يُحفظ!", - "translate-magic-errors": "من فضلك أصلح {{PLURAL:$1||الخطأ|الخطأين|الأخطاء}} التالية في الترجمات:", - "translate-magic-saved": "تم حفظ تعديلاتك.", - "translate-checks-parameters": "{{PLURAL:$2||المحدد التالي غير مستخدم|المحددان التاليان غير مستخدمان|المحددات التالية غير مستخدمة}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2||المحدد التالي غير معروف|المحددان التاليان غير معروفان|المحددات التالية غير معروفة}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2||المحدد التالي غير مستخدم|المحددان التاليان غير مستخدمان|المحددات التالية غير مستخدمة}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2||المحدد التالي غير معروف|المحددان التاليان غير معروفان|المحددات التالية غير معروفة}}:\n$1", "translate-checks-balance": "يوجد عدد غير زوجي من {{PLURAL:$2|الأقواس}}:\n$1", "translate-checks-links": "{{PLURAL:$2||الوصلة التالية|الوصلتان التاليتان|ال$2 وصلات التالية|ال$2 وصلة التالية}} بها مشاكل:\n$1", "translate-checks-links-missing": "{{PLURAL:$2||الوصلة التالية مفقودة|الوصلتان التاليتان مفقودتان|ال$2 وصلات التالية مفقودة|ال$2 وصلة التالية مفقودة}}:\n$1", - "translate-checks-xhtml": "من فضلك استبدل {{PLURAL:$2||الوسم التالي|الوسمين التاليين|الوسوم التالية}} بالوسوم الصحيحة:\n$1", "translate-checks-plural": "التعريف يستخدم {{PLURAL:}} لكن الترجمة لا.", - "translate-checks-plural-forms": "{{PLURAL:}} تم إعطاؤه {{PLURAL:$1|إستمارة واحدة|$1 إستمارات}} لكن {{PLURAL:$2|فقط إستمارة واحدة|$2 إستمارات}} مدعومة (باستثناء إستمارات 0= و 1=).", - "translate-checks-plural-dupe": "{{PLURAL:}} لديها إستمارات مزدوجة في النهاية. {{PLURAL:$1|sheep|sheep}} ينبغي أن تتم كتابتها ك {{PLURAL:$1|sheep}}.", + "translate-checks-plural-forms": "{{PLURAL:}} تم إعطاؤه {{PLURAL:$1|استمارة واحدة|$1 استمارات}} لكن {{PLURAL:$2|فقط استمارة واحدة|$2 استمارات}} مدعومة (باستثناء استمارات 0= و 1=).", + "translate-checks-plural-dupe": "{{PLURAL:}} لديها استمارات مزدوجة في النهاية. {{PLURAL:$1|sheep|sheep}} ينبغي أن تتم كتابتها ك {{PLURAL:$1|sheep}}.", + "translate-checks-gettext-plural-missing": "يجب أن تحتوي هذه الترجمة على {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "هذه الرسالة لا تدعم {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} يقبل بالضبط $1 {{PLURAL:$1|صيغة الجمع|صيغ الجمع}}، حاليا $2 {{PLURAL:$2|صيغة|صيغ}} جمع معطاة.", + "translate-checks-smartformat-plural-missing": "يجب أن تحتوي هذه الترجمة على متغير $1.", + "translate-checks-smartformat-plural-unsupported": "هذه الرسالة لا تدعم صيغة الجمع على المتغير $1.", + "translate-checks-smartformat-plural-count": "عدد غير صحيح من أشكال الجمع في $3، يجب أن تحتوي على $1 {{PLURAL:$1|صيغة|صيغ}} جمع، حاليا توجد $2 {{PLURAL:$2|صيغة|صيغ}} جمع معطاه.", + "translate-checks-unicode-plural-missing": "يجب أن تحتوي هذه الترجمة على {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "هذه الرسالة لا تدعم {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "يجب أن تكون أشكال الجمع بصيغة $1، هذه الترجمة تحتوي على $2.", "translate-checks-pagename": "النطاق تغير من التعريف", "translate-checks-format": "هذه الترجمة لا تتبع التعريف أو تحتوي على صياغة خاطئة: $1", - "translate-checks-escape": "عمليات الهروب التالية ربما تكون حدثت بالصدفة: $1", + "translate-checks-escape": "{{PLURAL:$2|الحرف|الحروف}} التالية ربما تكون حدثت بالصدفة: $1. {{PLURAL:$4|حرف الهروب الصحيح هو|حروف الهروب الصحيحة تتضمن:}} $3.", "translate-checks-parametersnotequal": "عدد المتغيرات هو {{PLURAL:$1|$1}}؛ ينبغي أن يكون {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 صيغته غير صحيحة.", "translate-checks-fudforum-syntax": "استخدم $1 بدلًا من $2 في هذا المشروع.", - "translate-pref-nonewsletter": "لا ترسل إليّ نشرات إخبارية عن طريق البريد الإلكتروني", + "translate-checks-newline-missing-start": "هناك {{PLURAL:$1|سطر جديد يفتقد|سطور جديدة تفتقد}} $1 {{PLURAL:$1|حرف|أحرف}} في بداية الترجمة.", + "translate-checks-newline-missing-end": "هناك {{PLURAL:$1|سطر جديد يفتقد|سطور جديدة تفتقد}} $1 {{PLURAL:$1|حرف|أحرف}} في نهاية الترجمة.", + "translate-checks-newline-extra-start": "هناك {{PLURAL:$1|سطر إضافي يفتقد|سطور إضافية تفتقد}} $1 {{PLURAL:$1|حرف|أحرف}} في بداية الترجمة.", + "translate-checks-newline-extra-end": "هناك {{PLURAL:$1|سطر إضافي يفتقد|سطور إضافية تفتقد}} $1 {{PLURAL:$1|حرف|أحرف}} في نهاية الترجمة.", + "translate-checks-value-not-present": "يجب أن تكون الترجمة مساوية {{PLURAL:$1|1=|لإحدى القيم التالية:}} $1.", "translate-pref-editassistlang": "لغات المساعد:", "prefs-translate": "خيارات الترجمة", "translate-pref-editassistlang-help": "قائمة برموز اللغات مفصولة بفواصل.\nتُعرض ترجمة الرسالة بهذه اللغات عندما تترجم.\nقائمة اللغات المبدئية تعتمد على لغتك.", "translate-pref-editassistlang-bad": "رمز لغة غير صالح في القائمة:\n$1.", "right-translate": "التعديل باستخدام واجهة الترجمة", + "action-translate": "التعديل باستخدام واجهة الترجمة", "right-translate-manage": "إدارة مجموعات الرسائل", "action-translate-manage": "إدارة مجموعات الرسائل", "right-translate-import": "استيراد الترجمات من الخارج", @@ -213,16 +208,28 @@ "supportedlanguages-count": "$1 {{PLURAL:$1|لغة|لغات}} إجمالا.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|تعديل|تعديلات}} - آخر تعديل منذ $3 {{PLURAL:$3|يوم|أيام}}", "abusefilter-edit-builder-vars-translate-source-text": "النص المصدر لوحدة الترجمة", - "translate-save": "احفظ ($1)", + "abusefilter-edit-builder-vars-translate-target-language": "اللغة الهدف للترجمة", + "translate-save": "حفظ ($1)", "translate-jssti-add": "أضف إلى القائمة", "managemessagegroups": "إدارة مجموعة الرسائل", "translate-smg-notallowed": "غير مسموح لك بتنفيذ هذا التصرف.", "translate-smg-nochanges": "لا توجد تغييرات لمعالجتها.", "translate-smg-submit": "إرسال التغييرات للمعالجة", "translate-smg-submitted": "تعريفات الرسائل تم تحديثها. التغييرات تتم معالجتها في الخلفية.", + "translate-smg-submitted-with-failure": "فشل تحديث الرسالة {{PLURAL:$1|تعريف الرسالة|تعريفات الرسائل}} {{PLURAL:$1|للمجموعة|للمجموعات}} التالية: $2. $3", + "translate-smg-submitted-others-processing": "تتم معالجة تعريفات الرسائل للمجموعات الأخرى في الخلفية.", "translate-smg-more": "ستكون هناك المزيد من التغييرات للعملية بعد إرسال هذه التغييرات.", "translate-smg-left": "محتوى الرسائل في الويكي", "translate-smg-right": "التغييرات القادمة", + "translate-smg-rename-select": "تحديد", + "translate-smg-rename-cancel": "إلغاء", + "translate-smg-rename-search": "البحث عن رسالة مطابقة...", + "translate-smg-rename-select-err": "يُرجَى اختيار رسالة لإعادة تسميتها", + "translate-smg-rename-no-msg": "لا توجد رسائل.", + "translate-smg-rename-new": "أضف ... جديدا", + "translate-smg-rename-rename": "إضافة كإعادة تسمية ...", + "translate-smg-rename-dialog-title": "حدد إعادة تسمية مطابقة ل$1", + "translate-smg-changeset-modified": "تم تعديل مجموعة التغييرات بواسطة مستخدم أو عملية أخرى، لا يمكن حفظ تغييراتك لأنها قد تتجاوز تغييراتها، تُرجَى إعادة تحميل الصفحة لرؤية آخر التغييرات.", "translate-manage-import-diff": "الرسالة $1 | الإجراءات: $2", "translate-manage-import-new": "رسالة جديدة $1", "translate-manage-import-deleted": "رسالة محذوفة $1", @@ -230,11 +237,15 @@ "translate-manage-action-conflict": "استورد وضبّب", "translate-manage-action-ignore": "تجاهل", "translate-manage-action-fuzzy": "استورد وضبّب الترجمات", + "translate-manage-action-rename-fuzzy": "إعادة تسمية والترجمات الغامضة", + "translate-manage-action-rename": "إعادة تسمية", + "translate-manage-action-ignore-change": "تجاهل تغيير الترجمة", "translate-manage-nochanges": "لا توجد أي تغييرات في تعاريف رسائل هذه المجموعة.", "translate-manage-nochanges-other": "لا توجد أي تغييرات على هذه اللغة.\nاستخدام الوصلة أدناه للرجوع إلى عرض تفاصيل المجموعة.", "translate-manage-inconsistent": "كشف عدم توافق في الطلب.\nمن فضلك تحقق من التغييرات وحاول مجددا.\nالتفاصيل: $1.", "translate-manage-toolong": "زمن المعالجة الأقصى ل$1 {{PLURAL:$1|second|seconds}} تم تجاوزه.\nمن فضلك أعد تنفيذ التموذج لإكمال المعالجة.", "translate-manage-import-summary": "استيراد نسخة جديدة من مصدر خارجي", + "translate-manage-import-rename-summary": "إعادة تسمية في مصدر خارجي", "translate-manage-conflict-summary": "استيراد نسخة جديدة من مصدر خارجي.\nمن فضلك تحقق.", "translate-manage-submit": "نفّذ", "translate-manage-intro-other": "بالأسفل قائمة بتغييرات الترجمة في لغة $1.\nمن فضلك راجع التغييرات واختر فعلا تريد فعله لكل ترجمة.\nلو اخترت تجاهل التغييرات، فهذا الفعل مؤقت فقط.", @@ -249,10 +260,9 @@ "translate-import-err-no-such-file": "الملف $1 غير موجود أو لم يرفع محليًا.", "translate-import-err-stale-group": "مجموعة الرسائل المنتمية إلى هذا الملف غير موجود.", "translate-import-err-no-headers": "الملف ليس ملف Gettext صحيح بصيغة امتداد الترجمة:\nغير قادر على تحديد المجموعة واللغة من مقدمة الملف.", - "translate-import-err-warnings": "الملف ليس مكونا بشكل صحيح.\nتأكد من أن محررك لا يزيل حقول msgctxt .\nالتفاصيل: $1", "translate-js-summary": "ملخص:", - "translate-js-save": "احفظ", - "translate-js-next": "احفظ وافتح التالية", + "translate-js-save": "نشر", + "translate-js-next": "انشر وافتح التالية", "translate-js-skip": "تخطَ إلى التالية", "translate-js-history": "تاريخ الترجمة", "translate-js-support": "اطرح سؤالا", @@ -310,14 +320,14 @@ "tux-status-fuzzy": "غير محدثة", "tux-status-proofread": "جرى مراجعتها", "tux-status-translated": "تُرجمت", - "tux-status-saving": "يحفظ...", - "tux-status-unsaved": "غير محفوظة", + "tux-status-saving": "...جاري النشر", + "tux-status-unsaved": "غير منشورة", "tux-save-unknown-error": "خطأ غير معروف حدث.", "tux-editor-placeholder": "ترجمتك", "tux-editor-editsummary-placeholder": "ملخص اختياري", "tux-editor-paste-original-button-label": "الصق النص المصدر", "tux-editor-discard-changes-button-label": "تجاهل التغييرات", - "tux-editor-save-button-label": "احفظ الترجمة", + "tux-editor-save-button-label": "حفظ الترجمة", "tux-editor-skip-button-label": "تخط إلى التالية", "tux-editor-cancel-button-label": "ألغ", "tux-editor-confirm-button-label": "أكد الترجمة", @@ -330,8 +340,8 @@ "tux-editor-need-more-help": "تحتاج إلى مزيد من المساعدة؟", "tux-editor-ask-help": "اطلب المزيد من المعلومات", "tux-editor-tm-match": "مطابقة بنسبة %$1", - "tux-warnings-more": "{{PLURAL:$1|لا تنبيه|تنبيه واحد|تنبيهان|$1 تنبيهات|$1 تنبيه}}", - "tux-warnings-hide": "أخف", + "tux-notices-more": "{{PLURAL:$1|لا تنبيه|تنبيه واحد|تنبيهان|$1 تنبيهات|$1 تنبيه}}", + "tux-notices-hide": "أخف", "tux-editor-save-failed": "تعذر حفظ الترجمة: $1", "tux-editor-n-uses": "مستخدمة {{PLURAL:$1|ولا مرة|مرة واحدة|مرتين|$1 مرات|$1 مرة}}", "tux-editor-message-desc-more": "أظهر المزيد", @@ -344,10 +354,10 @@ "tux-proofread-action-tooltip": "قبول الترجمة", "tux-proofread-edit-label": "عدل", "tux-editor-page-mode": "صفحة", - "tux-editor-outdated-warning": "قد تحتاج هذه الترجمة إلى تحديث.", - "tux-editor-outdated-warning-diff-link": "أظهر الفروق", + "tux-editor-outdated-notice": "قد تحتاج هذه الترجمة إلى تحديث.", + "tux-editor-outdated-notice-diff-link": "أظهر الفروق", "tux-editor-doc-editor-placeholder": "توثيق الرسالة", - "tux-editor-doc-editor-save": "احفظ التوثيق", + "tux-editor-doc-editor-save": "حفظ التوثيق", "tux-editor-doc-editor-cancel": "ألغ", "tux-messagetable-more-messages": "{{PLURAL:$1|رسالة أخرى|رسالتان أخرتان|$1 رسائل أخرى|$1 رسالة أخرى}}", "tux-messagetable-loading-messages": "جار تحميل {{PLURAL:$1|الرسالة|الرسائل}}...", @@ -383,12 +393,13 @@ "tux-editor-message-tools-translations": "كل الترجمات", "tux-editor-message-tools-linktothis": "وصلة لهذه الرسالة", "tux-editor-loading": "تحميل...", + "tux-editor-loading-failed": "أخفق تحميل مساعدات الترجمة: $1", "translate-search-more-languages-info": "{{PLURAL:$1|لغة واحدة أخرى|لغتان أخريان|$1 لغات أخرى|$1 لغة أخرى}}", "translate-statsbar-tooltip": "$1% مترجمة، $2% مراجعة", "translate-statsbar-tooltip-with-fuzzy": "$1% مترجمة، $2% مراجعة، $3% غير محدثة", "translate-search-more-groups-info": "$1 {{PLURAL:$1|مجموعة|مجموعات}} أخرى", - "translate-ulsdep-title": "خطأ في الضبط", - "translate-ulsdep-body": "امتداد Translate يعتمد على [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector امتداد Universal Language Selector].", + "translate-syntax-error": "تحتوي الترجمة على أخطاء في بناء الجملة", "tux-session-expired": "أنت لم تعد مسجل الدخول. من فضلك سجل الدخول في لسان منفصل. أو يمكنك عمل نسخة من الترجمات غير المحفوظة، تسجيل الدخول، العودة لهذه الصفحة وإدخال ترجماتك مجددا.", - "tux-nojs": "هذه الأداة لا تعمل بدون جافا سكريبت. الجافا سكريبت معطلة، فشلت في العمل، أو هذا المتصفح غير مدعوم." + "tux-nojs": "هذه الأداة لا تعمل بدون جافا سكريبت. الجافا سكريبت معطلة، فشلت في العمل، أو هذا المتصفح غير مدعوم.", + "specialpages-group-translation": "ترجمة" } diff --git a/MLEB/Translate/i18n/core/arc.json b/MLEB/Translate/i18n/core/arc.json index 4fe4fcaf..158bf8a4 100644 --- a/MLEB/Translate/i18n/core/arc.json +++ b/MLEB/Translate/i18n/core/arc.json @@ -35,17 +35,6 @@ "translate-edit-warnings": "ܙܘܗܪ̈ܐ ܥܠ ܬܘܪ̈ܓܡܐ ܠܐ ܓܡܝܪ̈ܐ", "translate-edit-tmmatch": "$1% ܠܚܡܐ", "translate-edit-askpermission": "ܫܩܘܠ ܦܣܣܐ", - "translate-magic-pagename": "ܬܘܪܓܡܐ ܕܡܝܕܝܐܘܝܩܝ ܡܬܝܚܬܐ", - "translate-magic-submit": "ܒܨܝܐ", - "translate-magic-cm-export": "ܐܦܩ", - "translate-magic-nothing-to-export": "ܠܝܬ ܡܕܡ ܠܡܦܩܢܘܬܐ.", - "translate-magic-cm-to-be": "ܬܗܘܐ", - "translate-magic-cm-current": "ܗܫܝܐ", - "translate-magic-cm-original": "ܫܪܫܝܐ", - "translate-magic-cm-save": "ܠܒܘܟ", - "translate-magic-special": "ܫܡܗ̈ܐ ܕܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ", - "translate-magic-words": "ܡܠ̈ܐ ܚܪ̈ܫܬܐ", - "translate-magic-namespace": "ܫܡܗ̈ܐ ܕܚܩܠܬ̈ܐ", "prefs-translate": "ܓܒܝܬ̈ܐ ܕܬܘܪܓܡܐ", "translate-rc-translation-filter-only": "ܚܘܝ ܬܘܪ̈ܓܡܐ ܒܠܚܘܕ", "translationstats": "ܚܒܝܫܘܬ ܡܢܝܢܐ ܕܬܘܪܓܡܐ", @@ -95,5 +84,5 @@ "translate-js-support-unsaved-warning": "ܐܝܬ ܠܟ ܬܘܪ̈ܓܡܐ ܠܐ ܠܒܝܟ̈ܐ.", "translate-documentation-language": "ܐܓܪܬܐ ܕܐܫܛܪܘܬܐ", "translate-searchprofile": "ܬܘܪ̈ܓܡܐ", - "tux-warnings-hide": "ܛܫܝ" + "tux-notices-hide": "ܛܫܝ" } diff --git a/MLEB/Translate/i18n/core/arn.json b/MLEB/Translate/i18n/core/arn.json index ac25f692..3c3011b8 100644 --- a/MLEB/Translate/i18n/core/arn.json +++ b/MLEB/Translate/i18n/core/arn.json @@ -6,8 +6,5 @@ }, "translate-page-showing": "adkintun mensajes del $1 al $2 de $3", "translate-page-showing-all": "adkintun $1 {{PLURAL:$1|message|messages}}.", - "translate-edit-contribute": "ñma", - "translate-magic-cm-original": "kuse", - "translate-magic-cm-save": "elkünun", - "translate-magic-cm-savefailed": "elkünun weda" + "translate-edit-contribute": "ñma" } diff --git a/MLEB/Translate/i18n/core/ary.json b/MLEB/Translate/i18n/core/ary.json index af782d3c..d76d2d42 100644 --- a/MLEB/Translate/i18n/core/ary.json +++ b/MLEB/Translate/i18n/core/ary.json @@ -2,11 +2,15 @@ "@metadata": { "authors": [ "Enzoreg", - "Reda Benkhadra" + "Reda Benkhadra", + "SADIQUI" ] }, + "translate-langstats-collapse": "طوي", "translate-manage-import-new": "Méṣaj jdid $1", "translate-manage-import-deleted": "Méṣaj memḫi $1", + "translate-documentation-language": "توثيق الرسالة", "translate-msggroupselector-search-all": "كلشي", - "tux-tab-all": "كلشي" + "tux-tab-all": "كلشي", + "tux-editor-collapse-tooltip": "طوي" } diff --git a/MLEB/Translate/i18n/core/arz.json b/MLEB/Translate/i18n/core/arz.json index 6950ebe5..87c5bd48 100644 --- a/MLEB/Translate/i18n/core/arz.json +++ b/MLEB/Translate/i18n/core/arz.json @@ -34,41 +34,20 @@ "translate-edit-contribute": "ساهم", "translate-edit-no-information": "''ليس لهذه الرساله توثيق.\nإذا كنت تعرف أين أو كيف يتم استخدام هذه الرساله، فيمكنك مساعده المترجمين الآخرين بإضافه توثيق إلى هذه الرساله.''", "translate-edit-information": "معلومات عن الرساله ($1)", - "translate-edit-in-other-languages": "الرساله \"$1\" بلغات تانيه", + "translate-edit-in-other-languages": "الرساله بلغات تانيه", "translate-edit-warnings": "التحذيرات حول الترجمات غير المكتملة", "translate-edit-tmmatch-source": "نص المصدر للترجمه: $1", "translate-edit-tmmatch": "$1% مطابقة", - "translate-magic-pagename": "ترجمه ميدياويكى الممتدة", - "translate-magic-help": "يمكنك ترجمه أسماء الصفحات الخاصه، والكلمات السحريه، وأسماء النطاقات.\n\nأسماء الصفحات الخاصه والكلمات السحريه يمكن أن يكون لها ترجمات متعدده.\nالترجمات تفصل بواسطه فاصله (,).\nأسماء النطاقات يمكن أن يكون لها ترجمه واحده فقط.\n\nفى ترجمات النطاقات $1 talk خاص. $1 يتم استبدالها باسم الموقع (على سبيل المثال {{ns:project_talk}}).\nلو أنه من غير الممكن فى لغتك صياغه تعبير صحيح بدون تغيير اسم الموقع، من فضلك اتصل بمطور.\n\nتحتاج إلى أن تكون فى مجموعه المترجمين لحفظ التغييرات.\nالتغييرات لن يتم حفظها حتى تضغط زر الحفظ بالأسفل.", - "translate-magic-module": "النوع:", - "translate-magic-submit": "اجلب", - "translate-magic-cm-export": "صدّر", - "translate-magic-nothing-to-export": "لا يوجد شيء يمكن تصديره.", - "translate-magic-cm-to-be": "لتصبح", - "translate-magic-cm-current": "الحالي", - "translate-magic-cm-original": "الأصلي", - "translate-magic-cm-comment": "تعليق:", - "translate-magic-cm-save": "احفظ", - "translate-magic-cm-updatedusing": "حدث باستخدام [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "الحفظ فشل", - "translate-magic-special": "أسماء الصفحات الخاصة", - "translate-magic-words": "كلمات سحرية", - "translate-magic-namespace": "أسماء النطاقات", - "translate-magic-notsaved": "تعديلك لم يُحفظ!", - "translate-magic-errors": "من فضلك أصلح {{PLURAL:$1||الخطأ|الخطأين|الأخطاء}} التاليه فى الترجمات:", - "translate-magic-saved": "تعديلاتك اتحفظت .", - "translate-checks-parameters": "{{PLURAL:$2||المحدد التالى غير مستخدم|المحددان التاليان غير مستخدمان|المحددات التاليه غير مستخدمة}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2||المحدد التالى غير معروف|المحددان التاليان غير معروفان|المحددات التاليه غير معروفة}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2||المحدد التالى غير مستخدم|المحددان التاليان غير مستخدمان|المحددات التاليه غير مستخدمة}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2||المحدد التالى غير معروف|المحددان التاليان غير معروفان|المحددات التاليه غير معروفة}}:\n$1", "translate-checks-balance": "يوجد عدد غير زوجى من {{PLURAL:$2|الأقواس}}:\n$1", "translate-checks-links": "{{PLURAL:$2||الوصله التالية|الوصلتان التاليتان|ال$2 وصلات التالية|ال$2 وصله التالية}} بها مشاكل:\n$1", "translate-checks-links-missing": "{{PLURAL:$2||الوصله التاليه مفقودة|الوصلتان التاليتان مفقودتان|ال$2 وصلات التاليه مفقودة|ال$2 وصله التاليه مفقودة}}:\n$1", - "translate-checks-xhtml": "من فضلك استبدل {{PLURAL:$2||الوسم التالي|الوسمين التاليين|الوسوم التالية}} بالوسوم الصحيحة:\n$1", "translate-checks-plural": "التعريف يستخدم {{PLURAL:}} لكن الترجمه لا.", "translate-checks-pagename": "النطاق تغير من التعريف", "translate-checks-format": "هذه الترجمه لا تتبع التعريف أو لديها صياغه خاطئة: $1", "translate-checks-escape": "عمليات الهروب التاليه ربما تكون حدثت بالصدفة: $1", "translate-checks-fudforum-syntax": "استخدم $1 بدلًا من $2 فى هذا المشروع.", - "translate-pref-nonewsletter": "لا ترسل لى إخطارات بريديه بالبريد الإلكتروني", "translate-pref-editassistlang": "لغات المساعد:", "prefs-translate": "خيارات الترجمة", "translate-pref-editassistlang-help": "قائمه برموز اللغات مفصوله بفواصل.\nتُعرض ترجمه الرساله بهذه اللغات عندما تترجم.\nقائمه اللغات المبدئيه تعتمد على لغتك.", @@ -129,7 +108,7 @@ "supportedlanguages-portallink": "[$1] $2 - $3", "supportedlanguages-portallink-nocldr": "[$1] $2", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|مترجم|مترجمه}}|مترجمين}}: $1", - "translate-save": "احفظ ($1)", + "translate-save": "سييف ($1)", "translate-jssti-add": "أضف إلى القائمة", "translate-manage-import-diff": "الرساله $1 | الإجراءات: $2", "translate-manage-import-new": "رساله جديده $1", @@ -156,7 +135,6 @@ "translate-import-err-invalid-title": "اسم الملف المعطى $1 غير صالح.", "translate-import-err-no-such-file": "الملف $1 غير موجود أو لم يرفع محليًا.", "translate-import-err-no-headers": "الملف ليس ملف Gettext صحيح بصيغه امتداد الترجمة:\nغير قادر على تحديد المجموعه واللغه من مقدمه الملف.", - "translate-import-err-warnings": "الملف ليس مكونا بشكل صحيح.\nتأكد من أن محررك لا يزيل حقول msgctxt .\nالتفاصيل: $1", "translate-js-save": "سييف", "translate-gs-pos": "الترتيب", "translate-gs-code": "الرمز", diff --git a/MLEB/Translate/i18n/core/as.json b/MLEB/Translate/i18n/core/as.json index 0d4cbe98..25e5579d 100644 --- a/MLEB/Translate/i18n/core/as.json +++ b/MLEB/Translate/i18n/core/as.json @@ -3,12 +3,13 @@ "authors": [ "Bishnu Saikia", "Chaipau", + "Dibya Dutta", "Gahori", "Gitartha.bordoloi", "Jaminianurag", "Nilamdyuti", - "Xqt", - "Dibya Dutta" + "Simbu123", + "Xqt" ] }, "translate": "অনুবাদ কৰক", @@ -46,29 +47,11 @@ "translate-edit-information": "বাৰ্তাটোৰৰ বিষয়ে সবিশেষ ($1)", "translate-edit-in-other-languages": "আন ভাষাত বাৰ্তা", "translate-edit-warnings": "অসমাপ্ত ভাঙনিৰ বিষয়ে সতৰ্ক বানী", - "translate-edit-tmmatch-source": "অনুবাদৰ উত্স পাঠ্য: $1", + "translate-edit-tmmatch-source": "অনুবাদৰ উৎস পাঠ্য: $1", "translate-edit-tmmatch": "$1% ৰজিতা খাইছে", "translate-use-suggestion": "বৰ্তমানৰ ভাঙনিটো এই পৰামৰ্শৰ সৈতে প্ৰতিষ্ঠাপন কৰক", "translate-edit-nopermission": "ভাঙনি কৰিবৰ বাবে আপুনি ভাঙনি অনুমতি লোৱাটো বাঞ্চনীয়।", "translate-edit-askpermission": "অনুমতি লওক", - "translate-magic-pagename": "বিস্তাৰিত মিডিয়াৱিকি ভাঙনি", - "translate-magic-module": "ম'ডিউল:", - "translate-magic-submit": "দেখুৱাওক", - "translate-magic-cm-export": "ৰপ্তানি কৰক", - "translate-magic-nothing-to-export": "ইয়াত ৰপ্তানি কৰিবৰ বাবে একোৱেই নাই", - "translate-magic-cm-to-be": "হোৱা উচিত", - "translate-magic-cm-current": "সাম্প্ৰতিক", - "translate-magic-cm-original": "মৌলিক", - "translate-magic-cm-comment": "মন্তব্য", - "translate-magic-cm-save": "সংৰক্ষণ কৰক", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] ব্যৱহাৰৰ যোগে আপডেট কৰক", - "translate-magic-cm-savefailed": "সংৰক্ষণ বিফল হ'ল", - "translate-magic-special": "বিশেষ পৃষ্ঠাৰ অন্য নামসমূহ", - "translate-magic-words": "যাদুকৰী শব্দবোৰ", - "translate-magic-namespace": "নামস্থান নামবোৰ", - "translate-magic-notsaved": "আপোনাৰ সম্পাদনা সংৰক্ষিত নহ'ল!", - "translate-magic-errors": "অনুগ্ৰহ কৰি এই ভাঙনিৰ {{PLURAL:$1|ত্ৰুটি|ত্ৰুটিসমূহ}} আতৰাওক:", - "translate-magic-saved": "আপুনি কৰা সালসলনি সফলতাৰে সম্পন্ন হ’ল", "translate-pref-editassistlang": "সহযোগী ভাষাসমূহ:", "prefs-translate": "ভাঙনি বিকল্পসমূহ", "right-translate-manage": "বাৰ্তা গোট ব্যৱস্থাপনা", diff --git a/MLEB/Translate/i18n/core/ast.json b/MLEB/Translate/i18n/core/ast.json index 2e124e18..878bb259 100644 --- a/MLEB/Translate/i18n/core/ast.json +++ b/MLEB/Translate/i18n/core/ast.json @@ -3,8 +3,8 @@ "authors": [ "Amire80", "Esbardu", - "Xuacu", - "Fitoschido" + "Fitoschido", + "Xuacu" ] }, "translate": "Traducir", @@ -58,46 +58,40 @@ "translate-export-invalid-format": "Especifica un formatu válidu.", "translate-export-not-supported": "Nun s'almite la esportación de traducciones.", "translate-export-format-notsupported": "El formatu d'esportación especificáu nun s'almite pol grupu de mensaxes.", - "translate-magic-pagename": "Traducción estendida de MediaWiki", - "translate-magic-help": "Pues traducir los nomatos de les páxines especiales, les pallabres máxiques y los nomes de los espacios de nome.\n\nLos nomatos de les páxines especiales y les pallabres máxiques puen tener múltiples traducciones.\nLes traducciones se separten con una coma (,).\nLos espacios de nome namái puen tener una traducción.\n\nTraducir l'espaciu de nomes d'alderique del proyeutu $1 talk pue ser abegoso. $1 se sustituye pol nome del sitiu (por exemplu {{ns:project_talk}}).\nSi na to llingua nun ye posible formar una espresión válida ensin camudar el nome del sitiu, por favor informa d'ello en [[Support]].\n\nNecesites tar nel grupu de traductores pa guardar los cambios.\nLos cambios nun se graben fasta que calques nel botón guardar d'abaxo.", - "translate-magic-module": "Módulu:", - "translate-magic-submit": "Amosar", - "translate-magic-cm-export": "Esportar", - "translate-magic-nothing-to-export": "Nun hai res qu'esportar", - "translate-magic-cm-to-be": "Propuesta", - "translate-magic-cm-current": "Actual", - "translate-magic-cm-original": "Orixinal", - "translate-magic-cm-comment": "Comentariu:", - "translate-magic-cm-save": "Guardar", - "translate-magic-cm-updatedusing": "Actualizao usando [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Falló'l guardáu", - "translate-magic-special": "Nomes de páxines especiales", - "translate-magic-words": "Pallabres máxiques", - "translate-magic-namespace": "Nomes d'espacios de nome", - "translate-magic-notsaved": "¡La edición nun se guardó!", - "translate-magic-errors": "Por favor, igua{{PLURAL:$1|'l fallu| los fallos}} darréu nes traducciones:", - "translate-magic-saved": "Guardáronse los cambeos.", - "translate-checks-parameters": "{{PLURAL:$2|El siguiente parámetru nun s'usa|Los siguientes parámetros nun s'usen}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|El siguiente parámetru ye desconocíu|Los siguientes parámetros son desconocíos}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|El siguiente parámetru nun s'usa|Los siguientes parámetros nun s'usen}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|El siguiente parámetru ye desconocíu|Los siguientes parámetros son desconocíos}}:\n$1", "translate-checks-balance": "Hai un númberu impar de {{PLURAL:$2|paréntesis|paréntesis}}:\n$1", "translate-checks-links": "{{PLURAL:$2|El siguiente enllaz ye problemáticu|Los siguientes enllaces son problemáticos}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Falta l'enllaz|Falten los $2 enllaces}} darréu:\n$1", - "translate-checks-xhtml": "Por favor sustitúi {{PLURAL:$2|la siguiente etiqueta cola correuta|les siguientes etiquetes coles correutes}}:\n$1", "translate-checks-plural": "La definición usa {{PLURAL:}} pero la traducción non.", "translate-checks-plural-forms": "{{PLURAL:}} se {{PLURAL:$1|dio una forma|dieron $1 formes}}, pero namái {{PLURAL:$2|tien sofitu una forma|tienen sofitu $2 formes}} (sacante les formes 0= y 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} tien formes duplicaes al final. {{PLURAL:$1|llunes|llunes}} tien d'escribise asina: {{PLURAL:$1|llunes}}.", + "translate-checks-gettext-plural-missing": "Esta traducción tien de contener {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "Esti mensaxe nun tien encontu pa {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} aceuta exautamente $1 {{PLURAL:$1|forma plural|formes plurales}}. Anguaño {{PLURAL:$2|dióse $2 forma plural|diéronse $2 formes plurales}}.", + "translate-checks-smartformat-plural-missing": "Esta traducción tien de tener plural na variable $1.", + "translate-checks-smartformat-plural-unsupported": "Esti mensaxe nun almite plurales na variable $1.", + "translate-checks-smartformat-plural-count": "Númberu incorreutu de formes plurales en $3. Tien de tener $1 {{PLURAL:$1|forma plural|formes plurales}}. Anguaño {{PLURAL:$2|dióse $2 forma plural|diéronse $2 formes plurales}}.", + "translate-checks-unicode-plural-missing": "Esta traducción tien de tener {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "Esti mensaxe nun tien encontu pa {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "Les formes plurales tendríen de definise como $1. Esta traducción contien $2.", "translate-checks-pagename": "Espaciu de nomes camudáu dende la definición", "translate-checks-format": "Esta traducción nun sigue la definición o tien una sintaxis non válida: $1", - "translate-checks-escape": "Les secuencies d'escape darréu pueden ser accidentales: $1", + "translate-checks-escape": "{{PLURAL:$2|El siguiente caráuter d'escape pue ser accidental|Los $2 siguientes caráuteres d'escape puen ser accidentales}}: $1. {{PLURAL:$4|Un caráuter d'escape válidu ye|Los caráuteres d'escape válidos incluyen:}} $3.", "translate-checks-parametersnotequal": "El númberu de parámetros ye {{PLURAL:$1|$1}}; tendría de ser {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 tien un formatu incorreutu.", "translate-checks-fudforum-syntax": "Usa $1 en llugar de $2 nesti proyeutu.", - "translate-pref-nonewsletter": "Nun unviame boletinos per corréu electrónicu", + "translate-checks-newline-missing-start": "Hai $1 {{PLURAL:$1|carácter|carácteres}} de saltu de llinia que {{PLURAL:$1|falta|falten}} al principiu de la traducción.", + "translate-checks-newline-missing-end": "Hai $1 {{PLURAL:$1|carácter|carácteres}} de saltu de llinia que {{PLURAL:$1|falta|falten}} al final de la traducción.", + "translate-checks-newline-extra-start": "Hai $1 {{PLURAL:$1|carácter|carácteres}} de saltu de llinia {{PLURAL:$1|sobrante|sobrantes}} al principiu de la traducción.", + "translate-checks-newline-extra-end": "Hai $1 {{PLURAL:$1|carácter|carácteres}} de saltu de llinia {{PLURAL:$1|sobrante|sobrantes}} al final de la traducción.", + "translate-checks-value-not-present": "La traducción tien de ser igual a {{PLURAL:$1|1=|unu de los valores siguientes:}} $1.", "translate-pref-editassistlang": "Llingües d'ayuda:", "prefs-translate": "Opciones de traducción", "translate-pref-editassistlang-help": "Llista de códigos de llingua separaos por comes.\nCuando traduces s'amuesen les traducciones d'un mensaxe nestes llingües.\nLa llista predeterminada de llingües depende de la to llingua.", "translate-pref-editassistlang-bad": "Códigu de llingua inválidu na llista:\n$1.", "right-translate": "Editar usando la interfaz de traducción", + "action-translate": "editar usando la interfaz de traducción", "right-translate-manage": "Xestionar los grupos de mensaxes", "action-translate-manage": "xestionar los grupos de mensaxes", "right-translate-import": "Importar les traducciones ensin conexón", @@ -175,6 +169,7 @@ "translate-untranslated": "Ensin traducir", "translate-percentage-complete": "Completu", "translate-percentage-fuzzy": "Anticuaos", + "translate-percentage-proofread": "Revisao", "translate-languagestats-overall": "Tolos grupos de mensaxes xuntos", "translate-ls-submit": "Amosar estadístiques", "translate-ls-column-group": "Grupu de mensaxes", @@ -191,11 +186,13 @@ "supportedlanguages": "Llingües sofitaes", "supportedlanguages-summary": "Esta páxina amuesa la llista de toles llingües que sofita {{SITENAME}}, xunto colos nomes de los traductores que trabayen nelles.\nCuantes más traducciones tenga feches un traductor, más grande apaecerá'l so nome.\nEl color del solliniáu indica'l tiempu que fai dende qu'un traductor tuvo activu equí.", "supportedlanguages-colorlegend": "Lleenda del color: Cabera traducción hai $1 díes.", + "supportedlanguages-sqlite-error": "Nun hai encontu pa SQLite", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Traductor|Traductora}}|Traductores}}: $1", "supportedlanguages-recenttranslations": "traducciones recientes", "supportedlanguages-count": "$1 {{PLURAL:$1|llingua|llingües}} en total.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|edición|ediciones}}; cabera edición hai $3 {{PLURAL:$3|día|díes}}", "abusefilter-edit-builder-vars-translate-source-text": "Testu d'orixe de la unidá de traducción", + "abusefilter-edit-builder-vars-translate-target-language": "Llingua de destín de la traducción", "translate-save": "Guardar ($1)", "translate-jssti-add": "Amestar a la llista", "managemessagegroups": "Xestión de grupos de mensaxes", @@ -206,6 +203,8 @@ "translate-smg-more": "Habrá más cambios a procesar dempués d'unviar estos.", "translate-smg-left": "Conteníu del mensaxe nel wiki", "translate-smg-right": "Cambios entrantes", + "translate-smg-rename-select": "Seleicionar", + "translate-smg-rename-cancel": "Encaboxar", "translate-manage-import-diff": "Mensaxe $1 | Aiciones: $2", "translate-manage-import-new": "Mensaxe nuevu $1", "translate-manage-import-deleted": "Mensaxe desaniciáu $1", @@ -232,7 +231,6 @@ "translate-import-err-no-such-file": "El ficheru \"$1\" nun esiste o nun se xubió de mou llocal.", "translate-import-err-stale-group": "El grupu de mensaxes al que pertenez esti ficheru nun esiste.", "translate-import-err-no-headers": "El ficheru nun ye un ficheru Gettext bien formáu nel formatu d'estensión Translate:\nNun se puen determinar el grupu y la llingua a partir de les testeres del ficheru.", - "translate-import-err-warnings": "El ficheru nun ta bien formáu.\nAsegúrate de que'l to editor nun desanicia los campos msgctxt.\nDetalles: $1", "translate-js-summary": "Resume:", "translate-js-save": "Guardar", "translate-js-next": "Guardar y abrir el siguiente", @@ -305,7 +303,7 @@ "tux-editor-cancel-button-label": "Encaboxar", "tux-editor-confirm-button-label": "Confirmar la traducción", "tux-editor-proofread-button-label": "Marcar como revisao", - "tux-editor-shortcut-info": "Pulsia «$1» pa guardar, «$2» pa dir al siguiente mensaxe, «$4» p'apurrir un resume o «$3» pa más atayos.", + "tux-editor-shortcut-info": "Pulsia «$1» pa confirmar y dir al siguiente mensaxe, «$2» pa saltar «$4» p'apurrir un resume o primi «$3» pa ver otros atayos.", "tux-editor-edit-desc": "Editar la documentación", "tux-editor-add-desc": "Amestar la documentación", "tux-editor-suggestions-title": "Suxerencies", @@ -313,8 +311,8 @@ "tux-editor-need-more-help": "¿Necesites más ayuda?", "tux-editor-ask-help": "Pidir más información", "tux-editor-tm-match": "$1% de coincidencia", - "tux-warnings-more": "{{PLURAL:$1|$1 más}}", - "tux-warnings-hide": "anubrir", + "tux-notices-more": "{{PLURAL:$1|$1 más}}", + "tux-notices-hide": "anubrir", "tux-editor-save-failed": "Falló guardar la traducción: $1", "tux-editor-n-uses": "usada $1 {{PLURAL:$1|vez|veces}}", "tux-editor-message-desc-more": "Ver más", @@ -327,8 +325,8 @@ "tux-proofread-action-tooltip": "Marcar como revisao", "tux-proofread-edit-label": "Editar", "tux-editor-page-mode": "Páxina", - "tux-editor-outdated-warning": "Esta traducción puede necesitar anovase.", - "tux-editor-outdated-warning-diff-link": "Amosar les diferencies", + "tux-editor-outdated-notice": "Esta traducción puede necesitar anovase.", + "tux-editor-outdated-notice-diff-link": "Amosar les diferencies", "tux-editor-doc-editor-placeholder": "Documentación del mensaxe", "tux-editor-doc-editor-save": "Guardar documentación", "tux-editor-doc-editor-cancel": "Encaboxar", @@ -370,8 +368,8 @@ "translate-statsbar-tooltip": "$1% traducíos, $2% revisaos", "translate-statsbar-tooltip-with-fuzzy": "$1% traducíos, $2% revisaos, $3% anticuaos", "translate-search-more-groups-info": "$1 {{PLURAL:$1|grupu|grupos}} más", - "translate-ulsdep-title": "Error de configuración", - "translate-ulsdep-body": "La estensión Translate depende de la [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector estensión Universal Language Selector].", + "translate-syntax-error": "La traducción contien errores sintácticos", "tux-session-expired": "La sesión zarróse yá. Anicia sesión n'una llingüeta aparte. Alternativamente, copia les traducciones ensin guardar, anicia sesión, vuelvi a esta páxina y escribi les traducciones otra vuelta.", - "tux-nojs": "Esta ferramienta nun funciona sin JavaScript. JavaScript ta desactiváu, nun funcionó, o nun hai encontu pa esti restolador." + "tux-nojs": "Esta ferramienta nun funciona sin JavaScript. JavaScript ta desactiváu, nun funcionó, o nun hai encontu pa esti restolador.", + "specialpages-group-translation": "Traducción" } diff --git a/MLEB/Translate/i18n/core/atj.json b/MLEB/Translate/i18n/core/atj.json index 5020153a..8f195404 100644 --- a/MLEB/Translate/i18n/core/atj.json +++ b/MLEB/Translate/i18n/core/atj.json @@ -6,7 +6,6 @@ ] }, "translate-page-settings-legend": "Ke actain", - "translate-magic-cm-current": "Mekwatc", "translate-langstats-expand": "otamirota", "translate-js-summary": "Nosem:", "translate-documentation-language": "E itatcitcikatek", diff --git a/MLEB/Translate/i18n/core/awa.json b/MLEB/Translate/i18n/core/awa.json index 010c203c..a3a9a8da 100644 --- a/MLEB/Translate/i18n/core/awa.json +++ b/MLEB/Translate/i18n/core/awa.json @@ -1,25 +1,73 @@ { "@metadata": { "authors": [ - "1AnuraagPandey" + "1AnuraagPandey", + "Ajeetsinghawadhi", + "Nawabji" ] }, "translate": "अनुवाद करा जाय", - "translate-desc": "[[Special:Translate| खाश पन्ना]] मीडीयाविकि कय अनुवादन खत्तिर", + "translate-extensionname": "अनुबाद करा जाय", + "translate-desc": "[[Special:Translate| खास पन्ना]] मीडीयाविकि कै अनुबादन खत्तिर", "translate-taskui-export-to-file": "मूल स्वरूप में निर्यात करा जाय", "translate-taskui-export-as-po": "ऑफ़लाइन अनुवाद खत्तिर निर्यात करा जाय", "translate-taction-translate": "अनुवाद करा जाय", + "translate-taction-proofread": "समीक्षा", + "translate-taction-lstats": "भाषा कै आँकड़ा", + "translate-taction-mstats": "भाषा-समूह आँकड़ा", + "translate-taction-export": "निर्यात", + "translate-taction-disabled": "एह विकी पै ई काम रोका गय है।", + "translate-page-settings-legend": "सेटिङ्ग", + "translate-page-group": "ग्रुप", + "translate-page-language": "भाषा", + "translate-page-limit": "सीमा", + "translate-page-navigation-legend": "नैविगेशन", + "translate-next": "अगला पन्ना", + "translate-prev": "पिछलका पन्ना", + "translate-page-edit": "सम्पादन करा जाय", + "translate-edit-title": "सम्पादन \"$1\"", + "translate-edit-definition": "संदेश परिभाषा", + "translate-edit-translation": "अनुवाद", + "translate-edit-contribute": "योगदान", "translate-edit-in-other-languages": "सनेशा दुसर भाषा मा", + "translate-pref-editassistlang": "सहायक भाषा:", "translate-sidebar-alltrans": "दुसर भाषा में", - "languagestats": "भाषा कय आकलन", + "translate-translations-count": "मिला {{PLURAL:$1|एक अनुबाद|$1 अनुबाद}}.", + "languagestats": "भाषा कै आँकड़ा", "languagestats-summary": "इ पन्ना भाषा कय कुल सन्देश समुह कय अनुवाद आकलन देखावत है ।", "languagestats-stats-for": "$1 ($2) कय खत्तीर अनुवाद आकँडा।", "languagestats-recenttranslations": "नँवा अनुवाद", "translate-language-code": "भाषा कय कोड", "translate-language-code-field-name": "भाषा कय कोड:", + "translate-percentage-fuzzy": "पुरान होइ चुका", "supportedlanguages": "कुल समर्थित भाषा", "supportedlanguages-recenttranslations": "नँवा अनुवाद", "supportedlanguages-count": "कुल $1 {{PLURAL:$1|भाषा|भाषा}} ।", + "translate-smg-rename-no-msg": "एक्कव संदेस नही मिला", + "translate-js-skip": "छोड़यँ औ आगे जायँ", "translate-documentation-language": "मैसेज डकुमेन्टेशन", - "tux-editor-in-other-languages": "दुसर भाषा में" + "translate-msggroupselector-search-all": "सगरौ", + "tux-tab-all": "सगरौ", + "tux-tab-outdated": "पुरान होइ चुका", + "tux-tab-translated": "अनुवाद होय चुका", + "tux-status-fuzzy": "पुरान होइ चुका", + "tux-status-translated": "अनुवाद होय चुका", + "tux-editor-editsummary-placeholder": "बैकल्पिक सार", + "tux-editor-skip-button-label": "छोड़यँ औ आगे जायँ", + "tux-editor-in-other-languages": "दुसर भाषा में", + "tux-notices-hide": "लुकुवावा", + "tux-editor-clear-translated": "जिनकै अनुवाद होइ चुका उनका लुकुवावा", + "tux-editor-proofreading-hide-own-translations": "आपन अनुबाद लुकुवावा", + "tux-editor-page-mode": "पन्ना", + "tux-message-filter-result": "मिला $1 {{PLURAL:$1|परिनाम}} \"$2\" के बरे", + "tux-message-filter-advanced-button": "उन्नत खोज", + "tux-message-filter-optional-messages-label": "बैकल्पिक संदेस", + "tux-proofread-translated-by-self": "आप द्वारा कीन गा अनुवाद", + "tux-empty-list-translated": "एक्कव अनुवाद कीन गा सनेश नाय न", + "tux-empty-there-are-optional": "लिस्ट मा नाय देखावा गा बैकल्पिक संदेस हैं", + "tux-empty-no-outdated-messages": "एक्कव पुरान संदेस नाइ ना", + "tux-empty-you-can-review-already-proofread": "आप वहू अनुबाद कै समीक्षा कइ सकत हैं जिनकै समीक्षा दूसर केहू पहिलेन कइ चुका है ।", + "tux-empty-list-other-guide": "आप मौजूदा अनुबाद कै समीक्षा करय म मदद कइ सकत हैं", + "translate-statsbar-tooltip": "$1% अनुवाद भा, $2% समीक्षा होइ गै", + "translate-statsbar-tooltip-with-fuzzy": "$1% अनुवाद कीन गा, $2% समीक्षा कीन गय, $3% पुरान" } diff --git a/MLEB/Translate/i18n/core/az.json b/MLEB/Translate/i18n/core/az.json index 59202a97..96f55171 100644 --- a/MLEB/Translate/i18n/core/az.json +++ b/MLEB/Translate/i18n/core/az.json @@ -4,6 +4,8 @@ "Cekli829", "Irada", "Khan27", + "Toghrul Rahimli", + "Vesely35", "Wertuose" ] }, @@ -18,7 +20,7 @@ "translate-taction-disabled": "Bu hərəkət bu vikidə istifadə oluna bilməz.", "translate-page-no-such-language": "Göstərilən dil etibarsızdır.", "translate-page-no-such-group": "Göstərilən qrup etibarsızdır.", - "translate-page-disabled": "Qrupdakı bu dilə tərcümələr etibarsızdır.\nSəbəb:\n\n$1", + "translate-page-disabled": "Qrupdakı bu dilə tərcümələr etibarsızdır.\nSəbəb:\n\n$1", "translate-language-disabled": "Bu dilə tərcümə etibarsızdır.", "translate-page-settings-legend": "Tənzimləmələr", "translate-page-group": "Qrup", @@ -50,22 +52,8 @@ "translate-use-suggestion": "Cari tərcüməni bu təkliflə dəyişdir.", "translate-edit-nopermission": "Mesajları tərcümə etmək üçün tərcüməçi hüquqlarınız olmalıdır.", "translate-edit-askpermission": "İcazə al", - "translate-magic-pagename": "Genişlənmiş MediaViki tərcüməsi", - "translate-magic-module": "Modul:", - "translate-magic-cm-export": "Köçür", - "translate-magic-cm-current": "Hazırkı", - "translate-magic-cm-original": "Orijinal", - "translate-magic-cm-comment": "Şərh:", - "translate-magic-cm-save": "Qeyd et", - "translate-magic-cm-savefailed": "Saxlamaq mümkün olmadı", - "translate-magic-special": "Xüsusi səhifələrin ləqəbləri", - "translate-magic-words": "Sehrli sözlər", - "translate-magic-namespace": "Ad sahəsi adları", - "translate-magic-notsaved": "Redaktəniz saxlanılmadı!", - "translate-magic-saved": "Dəyişiklikləriniz müvəffəqiyyətlə qeyd olundu.", - "translate-checks-parameters": "İzlənilən {{PLURAL:$2|parametr}} istifadə olunmur:\n$1", + "translate-checks-parameters": "Aşağıdakı {{PLURAL:$2|parametrdən|parametrlərdən}} istifadə edilmir:\n$1", "translate-checks-pagename": "Anlayışdakı ad sahəsi dəyişdirilib", - "translate-pref-nonewsletter": "Mənə e-poçt xəbər bülleteni göndərmə", "translate-pref-editassistlang": "Köməkçi dillər:", "prefs-translate": "Tərcümə seçimləri", "translate-pref-editassistlang-bad": "Siyahıdakı etibarsız dil kodu:\n$1.", @@ -96,8 +84,8 @@ "translate-statsf-scale-weeks": "Həftələr", "translate-statsf-scale-days": "Günlər", "translate-statsf-scale-hours": "Saatlar", - "translate-statsf-count": "Ölçmək:", - "translate-statsf-count-edits": "Redaktələrin sayı", + "translate-statsf-count": "Ölçü:", + "translate-statsf-count-edits": "Redaktələrin sayı:", "translate-statsf-count-users": "Aktiv tərcüməçilər", "translate-statsf-count-registrations": "Yeni istifadəçilər", "translate-statsf-count-reviews": "Tərcümə qiymətləndirmələri", @@ -178,9 +166,9 @@ "translate-msggroupselector-projects": "Mesaj qrupu", "translate-msggroupselector-search-placeholder": "Qrupları axtar", "translate-msggroupselector-search-all": "Hamısı", - "translate-msggroupselector-search-recent": "Son", + "translate-msggroupselector-search-recent": "Yaxındakı", "translate-msggroupselector-view-subprojects": "$1 {{PLURAL:$1|altqrup|altqrup}}", - "tux-languageselector": "Tərcümə", + "tux-languageselector": "Tərcümə et", "tux-tab-all": "Hamısı", "tux-tab-untranslated": "Tərcümə edilməyən", "tux-tab-outdated": "Köhnələn", @@ -198,6 +186,7 @@ "tux-editor-skip-button-label": "Sonrakına keç", "tux-editor-confirm-button-label": "Tərcüməni təsdiq edin", "tux-editor-shortcut-info": "Yaddaşda saxlamaq üçün \"$1\", növbəti mesaja keçmək üçün \"$2\", digər qısayolları açmaq üçün \"$3\" düyməsini basın.", - "tux-editor-outdated-warning": "Ola bilsin ki, bu tərcümənin yenilənməsinə ehtiyac var.", - "tux-editor-outdated-warning-diff-link": "Fərqləri göstər" + "tux-editor-message-desc-more": "Daha ətraflı", + "tux-editor-outdated-notice": "Ola bilsin ki, bu tərcümənin yenilənməsinə ehtiyac var.", + "tux-editor-outdated-notice-diff-link": "Fərqləri göstər" } diff --git a/MLEB/Translate/i18n/core/azb.json b/MLEB/Translate/i18n/core/azb.json index 0da25654..5093154b 100644 --- a/MLEB/Translate/i18n/core/azb.json +++ b/MLEB/Translate/i18n/core/azb.json @@ -1,14 +1,14 @@ { "@metadata": { "authors": [ + "Alp Er Tunqa", "Calak", "E THP", "Ebrahimi-amir", - "Mousa", - "Reza1615", + "Ilğım", "Koroğlu", - "Alp Er Tunqa", - "Ilğım" + "Mousa", + "Reza1615" ] }, "translate": "ترجومه ائت", @@ -56,31 +56,11 @@ "translate-use-suggestion": "ایندیکی چئویرمه‌نی بو اؤنره دَییشدیر.", "translate-edit-nopermission": "سیز مئساژلاری چئویرمک اوچون ایجازه‌یه احتیاجیز واردیر.", "translate-edit-askpermission": "ایجازه ایسته‌یین", - "translate-magic-pagename": "اوزادیلمیش مئدیاویکی چئویرمه‌سی", - "translate-magic-help": "سیز اؤزل صحیفه آیری آدلاری، سحرلی سؤزجوکلر و آدفضاسی آدلارینی چئویره بیلرسینیز.\n\nاؤزل صحیفه آدلاری و سحرلی سؤزجوکلرین نئچه چئویرمه‌لری اولا بیلر.\nچئویرمه‌لر بیر کاما (,) ایله آیریلیبلار.\n\nپروژه دانیشیق آدفضاسینی $1 دانیشیق چئویرمک بیر آز چتین اولا بیلر.\n$1 گرک پروژه سایت آدی‌له دَییشیله (میثال اوچون {{ns:project_talk}}).\nاگر سیزین دیلینیزده، سایتین آدین چئویرمه‌مکله بیر دوزگون عیبارت یارادماق اولمور، [[Support|دستک]]-ده بیزه خبر وئرین.\n\nدَییشیکلیکلری قئید ائتماغا، ترجومه‌چی اولماغینیز لازیم‌دیر.\nآشاغیدا قئید ائتمک دویمه‌سینی وورمایانا کیمی، دَییشیکلیکلر قئید اولمایاجاقلار.", - "translate-magic-module": "ماژول:", - "translate-magic-submit": "گتیر", - "translate-magic-cm-export": "ائشیگه آپارماق", - "translate-magic-nothing-to-export": "ائشیگه آپارماق اوچون بیر شئی یوخدور.", - "translate-magic-cm-to-be": "گله‌جک", - "translate-magic-cm-current": "ایندیکی", - "translate-magic-cm-original": "ایلکین", - "translate-magic-cm-comment": "آچیخلا:", - "translate-magic-cm-save": "قئید ائت", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] ایله گونجل‌لنمیش", - "translate-magic-cm-savefailed": "قئید اولونانمادی", - "translate-magic-special": "اؤزل صحیفه تاخما آدلاری", - "translate-magic-words": "سحرلی سؤزجوکلر", - "translate-magic-namespace": "آدفضا آدلاری", - "translate-magic-notsaved": "سیزین دَییشیکلیگینیز قئید اولونمادی!", - "translate-magic-errors": "لوطفاً آشاغیداکی چئویرمک {{PLURAL:$1|خطاسینی|خطالارنیی}} دوزلدین:", - "translate-magic-saved": "سیزین دَییشیکلیکلرینیز اوغورلا قئید اولوندو.", - "translate-checks-parameters": "بو {{PLURAL:$2|پارامِتر ایشلدیلمه‌ییب‌دیر|پارامِترلر ایشلدیلمه‌ییب‌دیلر}}:\n$1", - "translate-checks-parameters-unknown": "بو {{PLURAL:$2|پارامِتر تانینماییب‌دیر|پارامِترلر تانینماییب‌دیلار}}:\n$1", + "translate-checks-parameters": "بو {{PLURAL:$2|پارامِتر ایشلدیلمه‌ییب‌دیر|پارامِترلر ایشلدیلمه‌ییب‌دیلر}}:\n$1", + "translate-checks-parameters-unknown": "بو {{PLURAL:$2|پارامِتر تانینماییب‌دیر|پارامِترلر تانینماییب‌دیلار}}:\n$1", "translate-checks-balance": "{{PLURAL:$2|پارانتز|پارانتزلر}} سایی جوت دئییل:\n$1", "translate-checks-links": "بو {{PLURAL:$2|باغلانتی ایشکال‌لی‌دیر|باغلانتیلار ایشکال‌لی‌دیلار}}:\n$1", "translate-checks-links-missing": "بو {{PLURAL:$2|باغلانتی یوخدور|باغلانتیلار یوخدولار}}:\n$1", - "translate-checks-xhtml": "لوطفاً بو {{PLURAL:$2|اِتیکِتی دوز اِتیکِت|اِتیکِتلری دوز اِتیکِتلر}} ایله دَییشدیرین:\n$1", "translate-checks-plural": "قایناق‌دا {{PLURAL:}} ایشلنیب‌دیر، اما چئویرمه‌ده یوخ.", "translate-checks-plural-forms": "{{PLURAL:}} اوچون {{PLURAL:$1|بیر|$1}} فورم وئریلیب‌دیر اما {{PLURAL:$2|یالنیز بیر|$2}} فورم دستکلنیر (0= و 1= فورملارینی چیخاراق).", "translate-checks-plural-dupe": "{{PLURAL:}} سونوندا عینی فورملار وئریلیب‌دیر. {{PLURAL:$1|قویون|قویون}} گرک {{PLURAL:$1|قویون}} کیمی یازیلا.", @@ -90,7 +70,6 @@ "translate-checks-parametersnotequal": "پارامِتر سایی {{PLURAL:$1|$1}}-دیر؛ گرک {{PLURAL:$2|$2}} اولا.", "translate-checks-malformed": "$1 پیس فورم‌دادیر.", "translate-checks-fudforum-syntax": "بو پروژه‌ده $2 یئرینه $1-ی ایشلدین.", - "translate-pref-nonewsletter": "منه ایمیل خبرنامه‌لری گؤندرمه", "translate-pref-editassistlang": "کؤمکچی دیل‌لر:", "prefs-translate": "چئویرمک سئچمه‌لری", "translate-pref-editassistlang-help": "کاما ایله آیریلمیش دیل کودلاری.\nسیز چئویرنده، بو دیل‌ده مئساژلارین چئویرمه‌لری گؤستریلر.\nدیل‌لری ایلک لیستی، سیزین دیل‌لرینیزه باغلی‌دیر.", @@ -214,7 +193,6 @@ "translate-import-err-no-such-file": "$1 فایلی یوخدور یادا یئرلی یوکلنیلمه‌ییب‌دیر.", "translate-import-err-stale-group": "بو فایل اونا عاید اولان مئساژ گروپو یوخدور.", "translate-import-err-no-headers": "فایلین ترجومه اوزانتی فورمتینده دوزگون Gettext فورمو یوخدور.\nفایل باشلیقلاریندان دیل و مئساژ گروپونو بیلمک اولمور.", - "translate-import-err-warnings": "فایلین دوزگون فورمو یوخدور.\nآرخایین اولون سیزین دَییشدیرَنیز msgctxt‌ فیلدلرینی سیلمیر.\nبیلگیلر: $1", "translate-js-summary": "آچیقلاما:", "translate-js-save": "ذخیره ائت", "translate-js-next": "قئید ائت و سونراکینی آچ", @@ -284,8 +262,8 @@ "tux-editor-need-more-help": "آرتیق یاردیم گرکلی‌دیر؟", "tux-editor-ask-help": "داها بیلگی ایسته", "tux-editor-tm-match": "$1٪ تطبیق", - "tux-warnings-more": "{{PLURAL:$1|$1 داها}}", - "tux-warnings-hide": "گیزلت", + "tux-notices-more": "{{PLURAL:$1|$1 داها}}", + "tux-notices-hide": "گیزلت", "tux-editor-save-failed": "چئویرمه‌نی قئید ائتمک اولمادی: $1", "tux-editor-n-uses": "$1 {{PLURAL:$1|دفعه}} ایشلدیلیب", "tux-editor-message-desc-more": "آرتیق گؤر", @@ -298,8 +276,8 @@ "tux-proofread-action-tooltip": "چئویرمه‌نی قبول ائت", "tux-proofread-edit-label": "دَییشدیر", "tux-editor-page-mode": "صفحه", - "tux-editor-outdated-warning": "بو چئویرمه‌نی گونجل‌له‌مک گرکلی اولا بیلر.", - "tux-editor-outdated-warning-diff-link": "فرقلری گؤستر", + "tux-editor-outdated-notice": "بو چئویرمه‌نی گونجل‌له‌مک گرکلی اولا بیلر.", + "tux-editor-outdated-notice-diff-link": "فرقلری گؤستر", "tux-editor-doc-editor-placeholder": "مئساژ سندلندیرمه‌سی", "tux-editor-doc-editor-save": "سندلندیرمه‌نی قئید ائت", "tux-editor-doc-editor-cancel": "وازگئچ", diff --git a/MLEB/Translate/i18n/core/ba.json b/MLEB/Translate/i18n/core/ba.json index c7a6a6b8..12d55bbf 100644 --- a/MLEB/Translate/i18n/core/ba.json +++ b/MLEB/Translate/i18n/core/ba.json @@ -4,10 +4,10 @@ "Assele", "Haqmar", "Roustammr", - "Рустам Нурыев", + "Ансар", "Вильданова Гюзель", "Ләйсән", - "Ансар" + "Рустам Нурыев" ] }, "translate": "Тәржемә", @@ -41,34 +41,15 @@ "translate-edit-warnings": "Тулы булмаған тәржемәләр тураһында иҫкәртеү", "translate-edit-tmmatch": "$1% тап килеү", "translate-use-suggestion": "Әлеге тәржемәнең тексын ошо күрһәтелгән менән алмаштырырға.", - "translate-magic-pagename": "MediaWiki тәрәнәйтелгән тәржемәһе", - "translate-magic-module": "Модуль:", - "translate-magic-submit": "Сығарырға", - "translate-magic-cm-export": "Сығарырға", - "translate-magic-nothing-to-export": "Сығарыр өсөн бер нимә лә юҡ.", - "translate-magic-cm-to-be": "Булырға тейеш", - "translate-magic-cm-current": "Хәҙерге", - "translate-magic-cm-original": "Алдағы", - "translate-magic-cm-comment": "Иҫкәрмә:", - "translate-magic-cm-save": "Һаҡларға", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] ярҙамында яңыртылған", - "translate-magic-cm-savefailed": "Һаҡлап булманы", - "translate-magic-special": "Махсус биттәрҙең псевдонимдары", - "translate-magic-namespace": "Исемдәр арауығы", - "translate-magic-notsaved": "Һеҙҙең үҙгәртеүҙәрегеҙ һаҡланманы!", - "translate-magic-errors": "Зинһар, түбәндәге {{PLURAL:$1|1=хатаны|хаталарҙы}} төҙәтегеҙ:", - "translate-magic-saved": "Һеҙҙең үҙгәртеүҙәрегеҙ уңышлы һаҡланды.", - "translate-checks-parameters": "Түбәндәге {{PLURAL:$2|1=параметр|параметрҙар}} ҡулланылмай:\n$1", - "translate-checks-parameters-unknown": "Түбәндәге {{PLURAL:$2|1=параметр|параметрҙар}} билдәһеҙ:\n$1", + "translate-checks-parameters": "Түбәндәге {{PLURAL:$2|1=параметр|параметрҙар}} ҡулланылмай:\n$1", + "translate-checks-parameters-unknown": "Түбәндәге {{PLURAL:$2|1=параметр|параметрҙар}} билдәһеҙ:\n$1", "translate-checks-balance": "Уң һәм һул {{PLURAL:$2|1=йәйә|йәйә}} һаны парлы түгел:\n$1", "translate-checks-links": "Түбәндәге {{PLURAL:$2|1=һылтанма|$2 һылтанмалар}} ҡыйынлыҡтар тыуҙыра.\n$1", "translate-checks-links-missing": "Түбәндәге {{PLURAL:$2|1=һылтанма|$2 һылтанмалар}} кәрәк:\n$1", - "translate-checks-xhtml": "Түбәндәге {{PLURAL:$2|1=тэгты|тэгтарҙы}} төҙәтегеҙ, зинһар:\n$1", "translate-checks-plural": "Сығанаҡ {{PLURAL:}} ҡуллана, ә тәржемә ҡулланмай.", "translate-checks-pagename": "Исемдәр арауығының билдәләмәһе үҙгәргән", "translate-checks-format": "Был тәржемә билдәләмәһе менән тап килмәй йәки синтаксик хаталары бар: $1", "translate-checks-fudforum-syntax": "Был проектта $2 урынына $1 ҡулланырға.", - "translate-pref-nonewsletter": "Минең электрон почтаға яңылыҡтар ебәрмәҫкә", "translate-pref-editassistlang": "Ярҙамсы телдәр:", "prefs-translate": "Тәржемә көйләүҙәре", "translate-pref-editassistlang-help": "Ошо телдәргә тәржемәләр яҙмаларҙы үҙгәрткән ваҡытта күрһәтеләсәк.\nҒәҙәттәге исемлек һеҙ һайлаған телгә бәйле.", @@ -164,7 +145,6 @@ "translate-import-err-no-such-file": "Файл $1 юҡ йәки урында индерелмәгән.", "translate-import-err-stale-group": "Был файлға ҡараған яҙмалар төркөмө юҡ.", "translate-import-err-no-headers": "Файл —Translate киңәйеүе форматында дөрөҫ Gettext-файл түгел:\nФайлдың башлыҡтарынан төркөмдө һәм телде билдәләп булмай.", - "translate-import-err-warnings": "Файл дөрөҫ төҙөлмәгән.\nҺеҙҙең мөхәррирләүсегеҙ msgctxt юлдарын юймай икәнен тикшерегеҙ.\nТулыраҡ: $1", "translate-js-next": "Һаҡларға һәм сираттағыны асырға", "translate-js-skip": "Сираттағыға күсергә", "translate-js-history": "Тәржемә тарихы", diff --git a/MLEB/Translate/i18n/core/ban.json b/MLEB/Translate/i18n/core/ban.json new file mode 100644 index 00000000..cff8b491 --- /dev/null +++ b/MLEB/Translate/i18n/core/ban.json @@ -0,0 +1,21 @@ +{ + "@metadata": { + "authors": [ + "Carma citrawati", + "NoiX180" + ] + }, + "translate-taction-proofread": "Turéksa", + "translate-page-language": "Basa", + "translate-page-showing-all": "Ngédéngang $1 {{PLURAL:$1|séwala}}.", + "translate-next": "Kaca salanturnyané", + "translate-prev": "Kaca sadurungnyané", + "translate-page-description-legend": "Pidarta indik golongané", + "translate-page-edit": "uah", + "translate-edit-title": "Uah \"$1\"", + "translate-stats-edits": "Uahan", + "translate-stats-reviews": "Turéksan", + "translate-stats-reviewers": "Sang nuréksa", + "translate-translations-fieldset-title": "Séwala", + "translate-documentation-language": "Dokuméntasi séwala" +} diff --git a/MLEB/Translate/i18n/core/bar.json b/MLEB/Translate/i18n/core/bar.json index e16b74f2..bf1e1384 100644 --- a/MLEB/Translate/i18n/core/bar.json +++ b/MLEB/Translate/i18n/core/bar.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Bua333", - "Mucalexx", - "Joe Watzmo" + "Joe Watzmo", + "Mucalexx" ] }, "translate": "Ibasetzn", @@ -19,7 +19,6 @@ "translate-submit": "Hoin", "translate-edit-information": "Informazión zur da Systémnoochricht ($1)", "translate-edit-in-other-languages": "Systémnoochricht auf åndre Sproochen", - "translate-magic-cm-updatedusing": "Aktualisird durch [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", "translationstats": "Staatistiken zua d' Ywersétzungen", "translate-sidebar-alltrans": "Auf åndre Sproochen", "translations": "Olle Ywersetzungen", diff --git a/MLEB/Translate/i18n/core/bbc-latn.json b/MLEB/Translate/i18n/core/bbc-latn.json new file mode 100644 index 00000000..26402d07 --- /dev/null +++ b/MLEB/Translate/i18n/core/bbc-latn.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Salomo Christian Hutajulu" + ] + }, + "translate-documentation-language": "Dokumentasi ni tona" +} diff --git a/MLEB/Translate/i18n/core/bcc.json b/MLEB/Translate/i18n/core/bcc.json index e7216927..7716d9b5 100644 --- a/MLEB/Translate/i18n/core/bcc.json +++ b/MLEB/Translate/i18n/core/bcc.json @@ -5,6 +5,5 @@ ] }, "translate-checks-parameters": "ای پارامتران استفاده نه بیتگن: $1", - "translate-checks-links": "جهلگی لینکانء مشکل اش هست: $1", - "translate-checks-xhtml": "لطفا ای جهلگی برچسپانء گون درستین ان جاه په جاه کنیت: $1" + "translate-checks-links": "جهلگی لینکانء مشکل اش هست: $1" } diff --git a/MLEB/Translate/i18n/core/bcl.json b/MLEB/Translate/i18n/core/bcl.json index 102547ef..59ef8cb2 100644 --- a/MLEB/Translate/i18n/core/bcl.json +++ b/MLEB/Translate/i18n/core/bcl.json @@ -10,12 +10,6 @@ "translate-next": "Sunod na páhina", "translate-prev": "Nakaaging páhina", "translate-optional": "(opsyonal)", - "translate-magic-submit": "Kûanón", - "translate-magic-cm-export": "Ipadara", - "translate-magic-cm-current": "Presente", - "translate-magic-cm-original": "Orihinal", - "translate-magic-cm-save": "Itagama", - "translate-magic-cm-savefailed": "Bigô an pagtagama", "translate-documentation-language": "Dokumentasyon kan mensahe", "tux-session-expired": "Ika dae na tabi nakalaog. Pakilaog na sana sa sarong separadong tab. Sa alternatibong paagi, humimo nin sarong kopya kan dae pa natatagamang mga dakit-taramon, maglaog, magbalik sa pahinang ini asin ilaog giraray an saimong dinakit-taramon." } diff --git a/MLEB/Translate/i18n/core/be-tarask.json b/MLEB/Translate/i18n/core/be-tarask.json index 6eda0d56..bcd7c60d 100644 --- a/MLEB/Translate/i18n/core/be-tarask.json +++ b/MLEB/Translate/i18n/core/be-tarask.json @@ -5,9 +5,9 @@ "Jim-by", "Red Winged Duck", "Renessaince", + "Shirayuki", "Wizardist", - "Zedlik", - "Shirayuki" + "Zedlik" ] }, "translate": "Пераклад", @@ -56,42 +56,22 @@ "translate-use-suggestion": "Замяніць цяперашні пераклад на гэтую прапанову.", "translate-edit-nopermission": "Для перакладу паведамленьняў неабходныя правы перакладніка.", "translate-edit-askpermission": "Атрымаць дазвол", + "exporttranslations": "Экспарт перакладаў", "translate-export-form-format": "Фармат", - "translate-magic-pagename": "Пашыраны пераклад MediaWiki", - "translate-magic-help": "Вы можаце перакладаць псэўданімы спэцыяльных старонак, магічныя словы і прасторы назваў.\n\nПсэўданімы спэцыяльных старонак і магічныя словы могуць мець некалькі перакладаў, якія разьдзяляюцца коскай (,).\nПрасторы назваў могуць мець толькі адзін пераклад.\n\nУ перакладах прастораў назваў радок абмеркаваньне $1 мае спэцыяльнае значэньне. $1 будзе замененае на назву сайта (напрыклад, {{ns:project_talk}}).\nКалі для Вашай мовы немагчыма стварыць адпаведны выраз бязь зьмены назвы сайта, калі ласка, [[Support|зьвяжыцеся з распрацоўшчыкамі]].\n\nВам неабходна ўваходзіць у групу перакладчыкаў, каб захаваць зьмены.\nЗьмены ня будуць захаваныя, пакуль Вы не націсьніце кнопку ўнізе.", - "translate-magic-module": "Модуль:", - "translate-magic-submit": "Паказаць", - "translate-magic-cm-export": "Экспартаваць", - "translate-magic-nothing-to-export": "Няма нічога на экспарт.", - "translate-magic-cm-to-be": "Павінна быць", - "translate-magic-cm-current": "Цяперашняе", - "translate-magic-cm-original": "Арыгінальнае", - "translate-magic-cm-comment": "Камэнтар:", - "translate-magic-cm-save": "Захаваць", - "translate-magic-cm-updatedusing": "Абноўлена з дапамогай [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Памылка запісу", - "translate-magic-special": "Псэўданімы спэцыяльных старонак", - "translate-magic-words": "Магічныя словы", - "translate-magic-namespace": "Прасторы назваў", - "translate-magic-notsaved": "Ваша рэдагаваньне не было захавана!", - "translate-magic-errors": "Калі ласка, выпраўце {{PLURAL:$1|1=наступную памылку|наступныя памылкі}} ў перакладах:", - "translate-magic-saved": "Вашыя зьмены былі захаваныя.", - "translate-checks-parameters": "{{PLURAL:$2|1=Наступны парамэтар не выкарыстоўваецца|Наступныя парамэтры не выкарыстоўваюцца}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|1=Невядомы парамэтар|Невядомыя парамэтры}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|1=Наступны парамэтар не выкарыстоўваецца|Наступныя парамэтры не выкарыстоўваюцца}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|1=Невядомы парамэтар|Невядомыя парамэтры}}:\n$1", "translate-checks-balance": "Няпарная колькасьць {{PLURAL:$2|дужкі|дужак|дужак}}:\n$1", "translate-checks-links": "{{PLURAL:$2|1=Праблематычная спасылка|Праблематычныя спасылкі}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Адсутнічае наступная $2 спасылка|Адсутнічаюць наступныя $2 спасылкі|Адсутнічаюць наступныя $2 спасылак}}:\n$1", - "translate-checks-xhtml": "Калі ласка, выпраўце {{PLURAL:$2|1=наступную метку|наступныя меткі}}:\n$1", "translate-checks-plural": "Крынічны тэкст выкарыстоўвае {{PLURAL:}}, а пераклад — не.", "translate-checks-plural-forms": "{{PLURAL:}} быў выкарыстаны {{PLURAL:$1|1=з адной формай|з $1 формамі}}, але {{PLURAL:$2|падтрымліваецца $2 форма|падтрымліваюцца $2 формы|падтрымліваюцца $2 формаў}} (за выняткам формаў 0= і 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} мае аднолькавыя формы на канцы. {{PLURAL:$1|мэтро|мэтро}} мусіць быць замененае на {{PLURAL:$1|мэтро}}.", "translate-checks-pagename": "Прастора назваў зьмененая ў крынічным тэксьце", "translate-checks-format": "Гэты пераклад няслушна перакладае крынічны тэкст альбо ўтрымлівае сынтаксычныя памылкі: $1", - "translate-checks-escape": "Наступнае выдзяленьне можа быць выпадковым: $1", + "translate-checks-escape": "{{PLURAL:$2|Гэты мадыфікацыйны сымбаль можа быць выпадковым|Гэтыя мадыфікацыйныя сымбалі могуць быць выпадковымі}}: $1. {{PLURAL:$4|Патрэбны мадыфікацыйны сымбаль —|Патрэбныя мадыфікацыйныя сымбалі ўключаюць}} $3.", "translate-checks-parametersnotequal": "Колькасьць парамэтраў — {{PLURAL:$1|$1}}, а мусіць быць — $2.", "translate-checks-malformed": "$1 няслушны.", "translate-checks-fudforum-syntax": "Выкарыстоўваць $1 замест $2 у гэтым праекце.", - "translate-pref-nonewsletter": "Не дасылаць мне інфармацыйныя лісты па электроннай пошце", "translate-pref-editassistlang": "Дапаможныя мовы:", "prefs-translate": "Налады перакладу", "translate-pref-editassistlang-help": "Падзелены коскамі сьпіс кодаў моў.\nПераклады паведамленьняў на гэтыя мовы паказваюцца ў працэсе перакладаньня.\nСьпіс перадвызначаных моў залежыць ад Вашай мовы.", @@ -187,8 +167,8 @@ "supportedlanguages-translators": "{{PLURAL:$2|1={{GENDER:$3|Перакладчык|Перакладчыца}}|Перакладчыкі}}: $1", "supportedlanguages-recenttranslations": "апошнія пераклады", "supportedlanguages-count": "$1 {{PLURAL:$1|мова|мовы|моваў}} агулам.", - "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|праўка|праўкі|правак}}, апошняя — $3 {{PLURAL:$3|дзень|дні|дзён}} таму", - "translate-save": "Захаваць ($1)", + "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|рэдагаваньне|рэдагаваньні|рэдагаваньняў}}, апошняе — $3 {{PLURAL:$3|дзень|дні|дзён}} таму", + "translate-save": "Апублікаваць ($1)", "translate-jssti-add": "Дадаць у сьпіс", "managemessagegroups": "Кіраваньне групамі паведамленьняў", "translate-smg-notallowed": "Вам не дазволена выканаць гэтае дзеяньне.", @@ -223,15 +203,14 @@ "translate-import-err-no-such-file": "Файл $1 не існуе альбо не загружаны лякальна.", "translate-import-err-stale-group": "Група паведамленьняў, да якой належыць гэты файл, не існуе.", "translate-import-err-no-headers": "Файл не зьяўляецца слушным файлам Gettext у фармаце пашырэньня Translate:\nНемагчыма вызначыць групу і мову з загалоўку файла.", - "translate-import-err-warnings": "Няслушны файл.\nУпэўніцеся што Ваш рэдактар не выдаляе палі msgctxt.\nПадрабязнасьці: $1", "translate-js-summary": "Апісаньне:", - "translate-js-save": "Захаваць", - "translate-js-next": "Захаваць і адкрыць наступнае", + "translate-js-save": "Апублікаваць", + "translate-js-next": "Апублікаваць і адкрыць наступнае", "translate-js-skip": "Адкрыць наступнае", "translate-js-history": "Гісторыя перакладу", "translate-js-support": "Задаць пытаньне", "translate-js-support-title": "Можаце задаць пытаньне, калі Вам бракуе інфармацыі пра кантэкст паведамленьня.", - "translate-js-support-unsaved-warning": "Вы маеце незахаваныя пераклады.", + "translate-js-support-unsaved-warning": "Вы маеце неапублікаваныя пераклады.", "translate-gs-pos": "Пазыцыя", "translate-gs-code": "Код", "translate-gs-continent": "Кантынэнт", @@ -283,12 +262,12 @@ "tux-status-fuzzy": "Састарэлае", "tux-status-proofread": "Ухваленае", "tux-status-translated": "Перакладзенае", - "tux-status-saving": "Захаваньне...", - "tux-status-unsaved": "Не захавана", + "tux-status-saving": "Публікацыя…", + "tux-status-unsaved": "Не апублікавана", "tux-editor-placeholder": "Ваш пераклад", - "tux-editor-paste-original-button-label": "Уставіць зыходны тэкст", + "tux-editor-paste-original-button-label": "Уставіць крынічны тэкст", "tux-editor-discard-changes-button-label": "Скасаваць зьмены", - "tux-editor-save-button-label": "Захаваць пераклад", + "tux-editor-save-button-label": "Апублікаваць пераклад", "tux-editor-skip-button-label": "Да наступнага", "tux-editor-cancel-button-label": "Скасаваць", "tux-editor-confirm-button-label": "Зацьвердзіць пераклад", @@ -300,9 +279,9 @@ "tux-editor-need-more-help": "Патрэбная дапамога?", "tux-editor-ask-help": "Спытайце ў нас", "tux-editor-tm-match": "$1% супадзеньне", - "tux-warnings-more": "{{PLURAL:$1|Яшчэ $1}}", - "tux-warnings-hide": "схаваць", - "tux-editor-save-failed": "Не ўдалося захаваць пераклад: $1", + "tux-notices-more": "{{PLURAL:$1|Яшчэ $1}}", + "tux-notices-hide": "схаваць", + "tux-editor-save-failed": "Не ўдалося апублікаваць пераклад: $1", "tux-editor-n-uses": "выкарыстаны $1 {{PLURAL:$1|раз|разы|разоў}}", "tux-editor-message-desc-more": "Болей", "tux-editor-message-desc-less": "Меней", @@ -314,10 +293,10 @@ "tux-proofread-action-tooltip": "Ухваліць", "tux-proofread-edit-label": "Рэдагаваць", "tux-editor-page-mode": "Старонка", - "tux-editor-outdated-warning": "Гэтаму перакладу, магчыма, патрабуецца абнаўленьне.", - "tux-editor-outdated-warning-diff-link": "Паказаць розьніцу", + "tux-editor-outdated-notice": "Гэтаму перакладу, магчыма, патрабуецца абнаўленьне.", + "tux-editor-outdated-notice-diff-link": "Паказаць розьніцу", "tux-editor-doc-editor-placeholder": "Дакумэнтацыя паведамленьня", - "tux-editor-doc-editor-save": "Захаваць дакумэнтацыю", + "tux-editor-doc-editor-save": "Апублікаваць дакумэнтацыю", "tux-editor-doc-editor-cancel": "Скасаваць", "tux-messagetable-more-messages": "Яшчэ $1 {{PLURAL:$1|паведамленьне|паведамленьні|паведамленьняў}}", "tux-messagetable-loading-messages": "Загрузка {{PLURAL:$1|1=паведамленьня|паведамленьняў}}…", @@ -350,6 +329,7 @@ "tux-editor-message-tools-history": "Гісторыя", "tux-editor-message-tools-translations": "Усе пераклады", "tux-editor-loading": "Загрузка...", + "tux-editor-loading-failed": "Памылка загрузкі падказак перакладу: $1", "translate-search-more-languages-info": "Яшчэ на $1 {{PLURAL:$1|мове|мовах}}", "translate-statsbar-tooltip": "$1% перакладзена, $2% вычытана", "translate-statsbar-tooltip-with-fuzzy": "$1% перакладзена, $2% вычытана, $3% састарэла", diff --git a/MLEB/Translate/i18n/core/be.json b/MLEB/Translate/i18n/core/be.json index 2da05bf8..e3b11c23 100644 --- a/MLEB/Translate/i18n/core/be.json +++ b/MLEB/Translate/i18n/core/be.json @@ -1,16 +1,18 @@ { "@metadata": { "authors": [ + "Artsiom91", + "Irus", + "Maksim L.", + "Mikalai Udodau", "Nemo bis", - "Чаховіч Уладзіслаў", "Дзяніс Тутэйшы", - "Mikalai Udodau", - "Irus", - "Artsiom91" + "Чаховіч Уладзіслаў" ] }, "translate": "Пераклад", "translate-desc": "[[Special:Translate|Адмысловая старонка]] для перакладу MediaWiki і іншых праграм", + "translate-fuzzybot-desc": "Гэта спецыяльны сістэмны ўліковы запіс, які выкарыстоўваецца [https://www.mediawiki.org/wiki/Extension:Translate/be пашырэннем перакладу] MediaWiki для задач падтрымкі перакладаў.\nГэты ўліковы запіс з'яўляецца часткай праграмнага забеспячэння MediaWiki і не належыць ніякаму ўдзельніку.", "translate-taskui-export-to-file": "Экспарт у родным фармаце", "translate-taskui-export-as-po": "Экспарт для афлайнавага перакладу", "translate-taction-translate": "Пераклад", @@ -45,7 +47,7 @@ "translate-edit-definition": "Фармулёўка паведамлення", "translate-edit-translation": "Пераклад", "translate-edit-contribute": "правіць", - "translate-edit-no-information": "''Гэта паведамленне не мае апісанні. Калі вы ведаеце, дзе ці як гэта паведамленне выкарыстоўваецца, то можаце дапамагчы іншым перакладчыкам, дадаўшы да яго апісанне.''", + "translate-edit-no-information": "Гэта паведамленне не мае апісання. Калі вы ведаеце, дзе ці як гэта паведамленне выкарыстоўваецца, то можаце дапамагчы іншым перакладчыкам, дадаўшы да яго апісанне.", "translate-edit-information": "Інфармацыя пра паведамленне ($1)", "translate-edit-in-other-languages": "Паведамленне на іншых мовах", "translate-edit-warnings": "Папярэджанні пра няпоўныя пераклады", @@ -54,39 +56,19 @@ "translate-use-suggestion": "Замяніць бягучы тэкст перакладу на гэту падказку.", "translate-edit-nopermission": "Для перакладу паведамленняў вам трэба атрымаць дазвол.", "translate-edit-askpermission": "Запытаць дазвол", - "translate-magic-pagename": "Паглыблены пераклад MediaWiki", - "translate-magic-help": "Вы можаце перакладаць псеўданімы службовых старонак, «чароўныя словы» і назвы прастор імёнаў.\n\nСлужбовыя старонкі і «чароўныя словы» могуць мець некалькі перакладаў.\nПераклады падзяляюцца коскай (,).\nНазвы прастор імёнаў могуць мець толькі адзін варыянт перакладу.\n\nПераклад назваў прастор імёнаў, якія змяшчаюць старонкі абмеркаванняў («$1 talk»), можа апынуцца складаней, з прычыны таго, што «$1» тут будзе заменена на імя сайта (напрыклад, «{{ns:project_talk}}»).\nКалі падобная граматычная канструкцыя для вашай мовы некарэктная без змены імя сайта, паведаміце нам пра гэта на старонцы [[Support]].\n\nКаб захаваць змены, вы павінны ўваходзіць у групу перакладчыкаў.\nЗмены не будуць захаваны, пакуль вы не націснеце кнопку ніжэй.", - "translate-magic-module": "Модуль:", - "translate-magic-submit": "Вывесці", - "translate-magic-cm-export": "Выгрузіць", - "translate-magic-nothing-to-export": "Няма чаго экспартаваць.", - "translate-magic-cm-to-be": "Павінна быць", - "translate-magic-cm-current": "Бягучае", - "translate-magic-cm-original": "Арыгінал", - "translate-magic-cm-comment": "Заўвага:", - "translate-magic-cm-save": "Запісаць", - "translate-magic-cm-savefailed": "Не атрымалася запісаць", - "translate-magic-special": "Псеўданімы адмысловых старонак", - "translate-magic-words": "Магічныя словы", - "translate-magic-namespace": "Прасторы назваў", - "translate-magic-notsaved": "Ваша праўка не запісана!", - "translate-magic-errors": "Калі ласка, выправіце {{PLURAL:$1|наступную памылку|наступныя памылкі}} ў перакладзе:", - "translate-magic-saved": "Зробленыя праўкі паспяхова запісаны.", - "translate-checks-parameters": "{{PLURAL:$2|Наступны параметр не выкарыстоўваецца|Наступныя параметры не выкарыстоўваюцца}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Невядомы параметр|Невядомыя параметры}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Наступны параметр не выкарыстоўваецца|Наступныя параметры не выкарыстоўваюцца}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Невядомы параметр|Невядомыя параметры}}:\n$1", "translate-checks-balance": "Няпарная колькасць {{PLURAL:$2|дужак}}:\n$1", "translate-checks-links": "{{PLURAL:$2|Наступная спасылка выклікае праблемы|Наступныя спасылкі выклікаюць праблемы}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Адсутнічае $2 спасылка|Адсутнічаюць $2 спасылкі|Адсутнічаюць $2 спасылак}}:\n$1", - "translate-checks-xhtml": "Калі ласка, выправіце {{PLURAL:$2|наступны тэг|наступныя тэгі}}:\n$1", "translate-checks-plural": "Арыгінал выкарыстоўвае {{PLURAL:}}, а пераклад — не.", "translate-checks-plural-forms": "Выразу {{PLURAL:}} {{PLURAL:$1|была дадзена адна форма|былі дадзены $1 формы|былі дадзены $1 формаў}}, але {{PLURAL:$2|падтрымліваецца толькі адна форма|падтрымліваюцца $2 формы|падтрымліваюцца $2 формаў}} (акрамя формаў 0= і 1=).", "translate-checks-plural-dupe": "У канцы выразу {{PLURAL:}} дзве аднолькавых формы. Замест {{PLURAL:$1|паліто|паліто}} лепш напісаць {{PLURAL:$1|паліто}}.", "translate-checks-pagename": "Змянілася вызначэнне прасторы назваў", "translate-checks-format": "Гэты пераклад не адпавядае вызначэнню ці ўтрымлівае сінтаксічную памылку: $1", "translate-checks-parametersnotequal": "Колькасць параметраў — $1, а {{PLURAL:$2|павінен|павінна}} быць — $2.", - "translate-checks-malformed": "$1 некарэктны.", + "translate-checks-malformed": "$1 няслушна сфарміраваны.", "translate-checks-fudforum-syntax": "Выкарыстоўваць у гэтым праекце $1 замест $2.", - "translate-pref-nonewsletter": "Не адпраўляць мне інфармацыйны бюлетэнь па электроннай пошце", "translate-pref-editassistlang": "Дапаможныя мовы:", "prefs-translate": "Настройкі перакладу", "translate-pref-editassistlang-help": "Падзелены коскамі спіс кодаў моў.\nПераклады на гэтыя мовы будуць указаны пры праўцы паведамленняў.\nСпіс па змоўчанні залежыць ад вашай мовы.", @@ -133,8 +115,12 @@ "translate-statsf-count-registrations": "Новыя ўдзельнікі", "translate-statsf-count-reviews": "Рэцэнзенты перакладу", "translate-statsf-count-reviewers": "Рэцэнзенты", + "translate-tag-page-desc": "Пераклад вікі-старонкі [[$2|$1]] з $3 ($4).", "translate-sidebar-alltrans": "На іншых мовах", + "translate-suppress-complete": "Схаваць цалкам перакладзеныя групы паведамленняў", "translate-language": "Мова", + "translate-total": "Паведамленні", + "translate-untranslated": "Неперакладзеныя", "translate-mgs-column-language": "Мова", "supportedlanguages": "Падтрымліваюцца мовы", "supportedlanguages-summary": "На гэтай старонцы прыведзены спіс падтрымоўваных праектам {{SITENAME}} моў\nразам з імёнамі тых, хто тут працуе над перакладамі на гэтыя мовы.\nІмя перакладчыка адлюстроўваецца тым буйней, чым больш правак ён зрабіў.\nПа колер падкрэслення можна зразумець, наколькі даўно перакладчык апошні раз здзяйсняў тут якое-небудзь дзеянне.", @@ -145,6 +131,9 @@ "translate-documentation-language": "Дакументацыя паведамлення", "translate-searchprofile": "Пераклады", "translate-searchprofile-tooltip": "Шукаць ва ўсіх перакладах", + "translate-stats-workflow": "Статус", + "tux-tab-untranslated": "Неперакладзеныя", "tux-editor-in-other-languages": "На іншых мовах", + "tux-message-filter-advanced-button": "Пашыраны пошук", "tux-editor-close-tooltip": "Закрыць" } diff --git a/MLEB/Translate/i18n/core/bg.json b/MLEB/Translate/i18n/core/bg.json index ddd71e7e..51dc869e 100644 --- a/MLEB/Translate/i18n/core/bg.json +++ b/MLEB/Translate/i18n/core/bg.json @@ -2,15 +2,18 @@ "@metadata": { "authors": [ "DCLXVI", - "පසිඳු කාවින්ද", + "ShockD", + "Spiritia", "StanProg", + "Ted Masters", + "Vlad5250", "Vodnokon4e", - "Spiritia", - "ShockD" + "පසිඳු කාවින්ද" ] }, "translate": "Превеждане", - "translate-desc": "[[Special:Translate|Специална страница]] за превеждане на МедияУики и др.", + "translate-desc": "[[Special:Translate|Специална страница]] за превеждане на МедияУики и други", + "translate-fuzzybot-desc": "Това е служебна системна сметка, която се използва от разширението [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate Превеждане] на МедияУики за поддържане на преводи.\nТази сметка е част от MediaWiki и не е собственост на никой потребител.", "translate-taskui-export-to-file": "Експортиране в собствен формат", "translate-taskui-export-as-po": "Експортиране за офлайн превод", "translate-taction-translate": "Превеждане", @@ -18,15 +21,15 @@ "translate-taction-lstats": "Езикови статистики", "translate-taction-mstats": "Статистики за групи съобщения", "translate-taction-export": "Експортиране", - "translate-taction-disabled": "Това действие е изключено в това уики.", + "translate-taction-disabled": "Действието е изключено в това уики.", "translate-page-no-such-language": "Избраният език е невалиден.", - "translate-page-no-such-group": "Избраната група е невалидна", - "translate-page-disabled": "Преводите на този език в тази група са изключени. Причина:\n\n$1", + "translate-page-no-such-group": "Избраната група е невалидна.", + "translate-page-disabled": "Преводите на този език в тази група са изключени.\nПричина:\n\n$1", "translate-language-disabled": "Преводът на този език е изключен.", "translate-page-settings-legend": "Настройки", "translate-page-group": "Група:", "translate-page-language": "Език:", - "translate-page-limit": "Показване на:", + "translate-page-limit": "Ограничение", "translate-page-limit-option": "$1 {{PLURAL:$1|съобщение|съобщения}} на страница", "translate-submit": "Извличане", "translate-page-navigation-legend": "Навигация", @@ -36,18 +39,20 @@ "translate-next": "Следваща страница", "translate-prev": "Предишна страница", "translate-page-description-legend": "Информация за групата", + "translate-page-description-hasoptional": "Тази група от съобщение съдържа незадължителни съобщения.\nНезадължителните съобщения трябва да се превеждат само, ако вашия език има специални нужди, както транслитерация на имена или неупотреба на празни интервали. $1", "translate-page-description-hasoptional-open": "Показване на допълнителни съобщения.", "translate-page-edit": "редактиране", "translate-optional": "(незадължително)", "translate-ignored": "(пренебрегнато)", "translate-edit-title": "Редактиране на „$1“", - "translate-edit-definition": "Оригинално съобщение", + "translate-edit-definition": "Дефиниция на съобщението", "translate-edit-translation": "Превод", - "translate-edit-contribute": "добавяне на документация", - "translate-edit-no-information": "За това съобщение няма документация.\nАко знаете къде и как се използва, можете да помогнете на останалите преводачи като добавите документация за това съобщение.", + "translate-edit-contribute": "принос", + "translate-edit-no-information": "За това съобщение няма документация.\nАко знаете къде и как се използва, можете да помогнете на останалите преводачи, като добавите документация за съобщението.", "translate-edit-information": "Информация за съобщението ($1)", "translate-edit-in-other-languages": "Съобщението на други езици", "translate-edit-warnings": "Предупреждения за непълни преводи", + "translate-edit-tmmatch-source": "Изходен текст за превода: $1", "translate-edit-tmmatch": "$1% съвпадение", "translate-use-suggestion": "Заместване на текущия превод с предложението.", "translate-edit-nopermission": "За превеждане на съобщения са необходими права на преводач.", @@ -56,37 +61,23 @@ "translate-export-form-format": "Формат", "translate-export-invalid-format": "Моля, посочете валиден формат.", "translate-export-not-supported": "Експортирането на превод не се поддържа.", - "translate-magic-pagename": "Разширено превеждане на МедияУики", - "translate-magic-module": "Модул:", - "translate-magic-submit": "Извличане", - "translate-magic-cm-export": "Експортиране", - "translate-magic-nothing-to-export": "Няма нищо за експортиране.", - "translate-magic-cm-to-be": "Желано", - "translate-magic-cm-current": "Текущо", - "translate-magic-cm-original": "Оригинално", - "translate-magic-cm-comment": "Коментар:", - "translate-magic-cm-save": "Съхранение", - "translate-magic-cm-updatedusing": "Обновено чрез [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Съхраняването беше неуспешно", - "translate-magic-special": "Имена на специални страници", - "translate-magic-words": "Вълшебни думички", - "translate-magic-namespace": "Имена на именни пространства", - "translate-magic-notsaved": "Редакцията не беше съхранена!", - "translate-magic-errors": "Необходимо е да {{PLURAL:$1|се отстрани следната грешка|се отстранят следните грешки}} в преводите:", - "translate-magic-saved": "Направени от вас промени са съхранени.", - "translate-checks-parameters": "{{PLURAL:$2|Следният параметър не се използва|Следните параметри не се използват}}: $1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Следният параметър е непознат|Следните параметри са непознати}}:\n$1", - "translate-checks-balance": "Съобщението съдържа необичаен брой {{PLURAL:$2|скоби|скоби}}:\n$1", - "translate-checks-links": "{{PLURAL:$2|Следната препратка е проблемна|Следните $2 препратки са проблемни}}: $1", - "translate-checks-links-missing": "{{PLURAL:$2|Липсва следата препратка|Липсват следнте $2 препратки}}:\n$1", - "translate-checks-xhtml": "Необходимо е заместване на {{PLURAL:$2|посочения етикет с правилен|посочените етикети с правилни}}: $1", + "translate-export-format-notsupported": "Указаният формат на експортиране не се поддържа от групата съобщения.", + "translate-checks-parameters": "{{PLURAL:$2|Следният параметър не се използва|Следните параметри не се използват}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Следният параметър е непознат|Следните параметри са непознати}}:\n$1", + "translate-checks-balance": "Съобщението съдържа нечетен брой {{PLURAL:$2|скоби}}:\n$1", + "translate-checks-links": "{{PLURAL:$2|Следната препратка е проблемна|Следните $2 препратки са проблемни}}:\n$1", + "translate-checks-links-missing": "{{PLURAL:$2|Липсва следната препратка|Липсват следните $2 препратки}}:\n$1", "translate-checks-plural": "Оригиналното съобщение използва {{PLURAL:}}, а преводът — не.", - "translate-pref-nonewsletter": "Без получаване на бюлетин по е-поща", + "translate-checks-pagename": "Променена е дефиницията на именното пространство", + "translate-checks-format": "Този превод не е съгласно дефиницията или има невалиден синтаксис: $1", + "translate-checks-fudforum-syntax": "Използвайте $1 вместо $2 в този проект.", "translate-pref-editassistlang": "Помощни езици:", "prefs-translate": "Настройки на превеждането", "right-translate": "Редактиране чрез интерфейса за превод", - "right-translate-import": "Импортиране на офлайн превод", - "action-translate-import": "импортиране на офлайн превод", + "right-translate-manage": "Управление на групи съобщения", + "action-translate-manage": "управление на групи съобщения", + "right-translate-import": "Внасяне на офлайн преводи", + "action-translate-import": "внасяне на офлайн превод", "right-translate-messagereview": "Проверка на преводи", "action-translate-messagereview": "проверка на преводи", "translate-rcfilters-translations": "Преводи", @@ -105,11 +96,13 @@ "translate-stats-edits": "Редакции", "translate-stats-users": "Преводачи", "translate-stats-registrations": "Регистрации", + "translate-stats-reviews": "Проверки", + "translate-stats-reviewers": "Рецензенти", "translate-statsf-intro": "Формулярът по-долу служи за генериране на статистика. Всички възможности имат минимални и максимални стойности.", "translate-statsf-options": "Графични настройки", "translate-statsf-width": "Ширина в пиксели:", "translate-statsf-height": "Височина в пиксели:", - "translate-statsf-days": "Времеви период в дни:", + "translate-statsf-days": "Период в дни:", "translate-statsf-start": "Начална дата:", "translate-statsf-scale": "Прецизност:", "translate-statsf-scale-months": "Месеци", @@ -120,6 +113,8 @@ "translate-statsf-count-edits": "Брой редакции", "translate-statsf-count-users": "Активни преводачи", "translate-statsf-count-registrations": "Нови потребители", + "translate-statsf-count-reviews": "Проверявания на преводи", + "translate-statsf-count-reviewers": "Рецензенти", "translate-statsf-language": "Списък с езикови кодове, разделени със запетаи:", "translate-statsf-group": "Списък с групови кодове, разделени със запетаи:", "translate-statsf-submit": "Преглед", @@ -127,21 +122,22 @@ "translate-sidebar-alltrans": "На други езици", "translations": "Всички преводи", "translations-summary": "Въведете име на съобщение, за да видите наличните му преводи на всички езици.", - "translate-translations-no-message": "\"Съобщение \"$1\" не е достъпно за превод", + "translate-translations-no-message": "Съобщение „$1“ не е достъпно за превод", "translate-translations-none": "Не съществуват преводи за „$1“", "translate-translations-count": "{{PLURAL:$1|Открит е $1 превод|Открити са $1 превода}}.", "translate-translations-fieldset-title": "Съобщение", "translate-translations-messagename": "Име:", "translate-translations-project": "Проект:", + "translate-translations-including-no-param": "Посочете валиден ключ на съобщението в параметъра на подстраницата", "translate-translations-history-short": "и", "languagestats": "Езикови статистики", "languagestats-summary": "Тази страница показва статистиките за преводите на всички групи съобщения за езика.", - "messagegroupstats-summary": "Тази страница показва статистиките за преводите на съобщенията по групи.", + "messagegroupstats-summary": "На страницата са показани статистики за групи съобщения.", "languagestats-stats-for": "Статистики за преводите на $1 ($2).", "languagestats-recenttranslations": "последни преводи", "translate-langstats-incomplete": "Някои от статистиките на тази страница са непълни. Моля, презаредете страницата за получаване на по-подробни данни.", - "translate-langstats-expand": "Разгръщане", - "translate-langstats-collapse": "Свиване", + "translate-langstats-expand": "разгръщане", + "translate-langstats-collapse": "свиване", "translate-langstats-expandall": "разгръщане на всички", "translate-langstats-collapseall": "свиване на всички", "translate-language-code": "Езиков код", @@ -153,6 +149,7 @@ "translate-untranslated": "Непреведени", "translate-percentage-complete": "Завършени", "translate-percentage-fuzzy": "Остарели", + "translate-percentage-proofread": "Проверени", "translate-languagestats-overall": "Съобщения за всички групи", "translate-ls-submit": "Показване на статистики", "translate-ls-column-group": "Група съобщения", @@ -164,45 +161,77 @@ "translate-mgs-submit": "Показване на статистики", "translate-mgs-column-language": "Език", "translate-mgs-totals": "{{PLURAL:$1|Всеки език|Всички $1 езици заедно}}", + "translate-mgs-invalid-group": "Посочената група $1 не съществува.", "supportedlanguages": "Поддържани езици", + "supportedlanguages-sqlite-error": "SQLite не е поддържан", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Преводач|Преводачка}}|Преводачи}}: $1", "supportedlanguages-recenttranslations": "последни преводи", "supportedlanguages-count": "$1 {{PLURAL:$1|език|езици}} общо.", - "translate-save": "Съхраняване ($1)", + "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|редакция|редакции}} - последната преди $3 {{PLURAL:$3|ден|дни}}", + "abusefilter-edit-builder-vars-translate-source-text": "Изходен текст на преводната единица", + "translate-save": "Публикуване ($1)", "translate-jssti-add": "Добавяне към списъка", + "managemessagegroups": "Управление на групи съобщения", "translate-smg-notallowed": "Не ви е позволено да извършите това действие.", "translate-smg-nochanges": "Няма промени за обработка.", + "translate-smg-submit": "Изпращане на промени за обработка", + "translate-smg-left": "Съдържание на съобщението в уикито", "translate-smg-right": "Предстоящи промени", "translate-manage-import-diff": "Съобщение $1 | Действия: $2", + "translate-manage-import-new": "Ново съобщение $1", + "translate-manage-import-deleted": "Изтрито съобщение $1", "translate-manage-action-import": "Внасяне", "translate-manage-action-ignore": "Пренебрегване", + "translate-manage-nochanges": "Няма промени в дефинициите на съобщенията за тази група.", + "translate-manage-import-summary": "Внасяне на нова версия от външен източник", + "translate-manage-conflict-summary": "Внасяне на нова версия от външен източник.\nМоля, проверете.", "translate-manage-submit": "Изпълняване", "translate-manage-intro-other": "По-долу е даден списък на промените по превода на $1.\nМоля, прегледайте промените и изберете желаното действие за всяка промяна.\nАко изберете да игнорирате промените, то това ще бъде временно действие.", + "translate-manage-import-ok": "Внесено: $1", "translate-manage-import-done": "Внасянето завърши!", "importtranslations": "Внасяне на преводи", + "translate-import-from-local": "Локално качване на файл:", "translate-import-load": "Зареждане на файла", "translate-import-err-ul-failed": "Качването на файла не беше успешно", + "translate-import-err-invalid-title": "Посоченото име на файла $1 е невалидно.", "translate-import-err-no-such-file": "Файлът $1 не съществува или не е бил качен локално.", + "translate-import-err-stale-group": "Файлът принадлежи на несъществуваща група съобщения.", "translate-js-summary": "Резюме:", - "translate-js-save": "Съхраняване", - "translate-js-next": "Съхраняване и отваряне на следващото", + "translate-js-save": "Публикуване", + "translate-js-next": "Публикуване и отваряне на следващото", "translate-js-skip": "Направо към следващото", + "translate-js-history": "История на превода", "translate-js-support": "Задаване на въпрос", - "translate-js-support-unsaved-warning": "Имате несъхранени преводи.", + "translate-js-support-unsaved-warning": "Имате непубликувани преводи.", + "translate-gs-pos": "Място", "translate-gs-code": "Код", + "translate-gs-continent": "Континент", + "translate-gs-multiple": "Повече", + "translate-gs-count": "Брой", "translate-gs-total": "Общо", "translate-documentation-language": "Документация на съобщението", "translate-searchprofile": "Преводи", + "translate-searchprofile-tooltip": "Търсене във всички преводи", + "translate-searchprofile-note": "Повече възможности за търсене ще намерите на [$1 търсенето на преводи].", "translate-search-languagefilter": "Филтриране по език:", + "translate-search-nofilter": "Без филтриране", "log-name-translationreview": "Дневник на проверките на преводи", "log-description-translationreview": "Дневник на всички проверки на преводи и групи съобщения.", "logentry-translationreview-message": "$1 {{GENDER:$2|провери}} превод $3", "logentry-translationreview-group": "$1 {{GENDER:$2|промени}} състоянието на преводите на $3 на $4 език от „$6“ на „$7“", "group-translate-sandboxed": "Неодобрени преводачи", + "group-translate-sandboxed-member": "{{GENDER:$1|неодобрен преводач}}", + "translate-workflow-state-": "(незададен)", + "translate-workflowstatus": "Статус: $1", + "translate-workflow-set-doing": "Задаване...", + "translate-workflow-autocreated-summary": "Автоматично създаване на страница за състояние на работния поток $1", "translate-stats-workflow": "Статут", + "translate-workflowgroup-label": "Състояния на работния процес", + "translate-workflowgroup-desc": "Тази група съобщения показва работното състояние на преводите.\nСъстоянията се определят с променливата $wgTranslateWorkflowStates.", "translate-dynagroup-recent-label": "Последни преводи", "translate-dynagroup-recent-desc": "Тази група съобщения показва всички скорошни преводи на избрания език.\nНай-често се използва при проверка на преводи.", "translate-dynagroup-additions-label": "Последни допълнения", + "translate-dynagroup-additions-desc": "Тази група съобщения показва нови и изменени съобщения.", "translate-msggroupselector-projects": "Група съобщения", "translate-msggroupselector-search-placeholder": "Търсене на групи", "translate-msggroupselector-search-all": "Всички", @@ -219,36 +248,62 @@ "tux-status-fuzzy": "Неактуален", "tux-status-proofread": "Проверени", "tux-status-translated": "Преведено", - "tux-status-saving": "Съхраняване...", + "tux-status-saving": "Публикуване...", + "tux-status-unsaved": "Непубликувано", + "tux-save-unknown-error": "Възникна неизвестна грешка.", + "tux-editor-placeholder": "Вашият превод", "tux-editor-editsummary-placeholder": "Незадължително резюме", - "tux-editor-save-button-label": "Съхраняване на превода", + "tux-editor-discard-changes-button-label": "Отхвърляне на промени", + "tux-editor-save-button-label": "Публикуване на превода", "tux-editor-skip-button-label": "Направо към следващото", "tux-editor-cancel-button-label": "Отказ", "tux-editor-confirm-button-label": "Потвърждаване на превода", "tux-editor-proofread-button-label": "Отбелязване като проверено", + "tux-editor-edit-desc": "Редактиране на документация", + "tux-editor-add-desc": "Добавяне на документация", "tux-editor-suggestions-title": "Предложения", "tux-editor-in-other-languages": "На други езици", "tux-editor-need-more-help": "Нуждаете се от допълнителна помощ?", - "tux-warnings-more": "{{PLURAL:$1|$1 още}}", - "tux-warnings-hide": "скриване", + "tux-editor-ask-help": "Поискайте още информация", + "tux-editor-tm-match": "$1% съвпадение", + "tux-notices-more": "{{PLURAL:$1|$1 още}}", + "tux-notices-hide": "скриване", + "tux-editor-n-uses": "използвано $1 {{PLURAL:$1|път|пъти}}", + "tux-editor-message-desc-more": "Виж още", + "tux-editor-message-desc-less": "Показване компактно", "tux-editor-clear-translated": "Скриване на преведените", "tux-editor-proofreading-mode": "Проверка", "tux-editor-translate-mode": "Списък", "tux-editor-proofreading-hide-own-translations": "Скриване на вашите преводи", + "tux-editor-proofreading-show-own-translations": "Показване на вашите преводи", "tux-proofread-action-tooltip": "Отбелязване като проверено", "tux-proofread-edit-label": "Редактиране", "tux-editor-page-mode": "Страница", + "tux-editor-outdated-notice-diff-link": "Показване на разликите", + "tux-editor-doc-editor-placeholder": "Документация на съобщението", + "tux-editor-doc-editor-save": "Публикуване на документацията", "tux-editor-doc-editor-cancel": "Отказ", "tux-messagetable-more-messages": "Още $1 {{PLURAL:$1|съобщение|съобщения}}", "tux-messagetable-loading-messages": "Зареждане на {{PLURAL:$1|съобщение|съобщения}}...", "tux-message-filter-placeholder": "Филтриране на списъка", "tux-message-filter-advanced-button": "Разширено търсене", + "tux-message-filter-optional-messages-label": "Незадължителни съобщения", "tux-proofread-translated-by-self": "Преведено от Вас", + "tux-empty-list-all": "Тази група съобщения е празна", + "tux-empty-list-all-guide": "Изберете друга група съобщения за превеждане", + "tux-translate-page-no-such-group": "Посочената група съобщения не съществува. Изберете друга.", + "tux-empty-list-translated": "Няма преведени съобщения", + "tux-empty-list-translated-guide": "Можете да помогнете с превода", "tux-empty-list-translated-action": "Превеждане", + "tux-empty-no-messages-to-display": "Няма съобщения за показване.", + "tux-empty-show-optional-messages": "Показване на допълнителните съобщения", "tux-empty-no-outdated-messages": "Няма неактуални съобщения", + "tux-empty-nothing-to-proofread": "Няма нищо за проверка", "tux-empty-you-can-help-providing": "Можете да помогнете с нови преводи", "tux-empty-nothing-new-to-proofread": "Няма нищо ново за проверка", "tux-empty-you-can-review-already-proofread": "Можете да проверите преводите, които вече са проверени от други.", + "tux-empty-list-other": "Няма нищо за превеждане", + "tux-empty-list-other-guide": "Можете да помогнете с проверката на съществуващите преводи", "tux-empty-list-other-action": "Проверка на преводите", "tux-empty-list-other-link": "Показване на всички съобщения", "tux-editor-close-tooltip": "Затваряне", @@ -258,7 +313,11 @@ "tux-editor-message-tools-history": "История", "tux-editor-message-tools-delete": "Изтриване", "tux-editor-message-tools-translations": "Всички преводи", + "tux-editor-message-tools-linktothis": "Връзка към това съобщение", "tux-editor-loading": "Зареждане...", "translate-search-more-languages-info": "още $1 {{PLURAL:$1|език|езика}}", - "translate-search-more-groups-info": "още $1 {{PLURAL:$1|група|групи}}" + "translate-statsbar-tooltip": "$1% преведени, $2% проверени", + "translate-search-more-groups-info": "още $1 {{PLURAL:$1|група|групи}}", + "tux-nojs": "Този инструмент не работи без JavaScript. JavaScript е деактивиран, не работи или не се поддържа от браузъра.", + "specialpages-group-translation": "Превод" } diff --git a/MLEB/Translate/i18n/core/bho.json b/MLEB/Translate/i18n/core/bho.json index d29fde81..97e94f01 100644 --- a/MLEB/Translate/i18n/core/bho.json +++ b/MLEB/Translate/i18n/core/bho.json @@ -40,12 +40,6 @@ "translate-edit-tmmatch": "$1% मिलान", "translate-use-suggestion": "ई सुझाव के संग ई अनुवाद के बदलीं", "translate-edit-askpermission": "अनुमती खातिर अनुरोध करीं", - "translate-magic-module": "माड्यूल:", - "translate-magic-submit": "निकालीं", - "translate-magic-cm-export": "निर्यात", - "translate-magic-nothing-to-export": "निर्यात करै खातिर किछु नइखे बा।", - "translate-magic-cm-current": "वर्तमान", - "translate-magic-cm-original": "मूल", "translate-documentation-language": "संदेस परलेखन", "tux-editor-message-tools-delete": "मिटाईं" } diff --git a/MLEB/Translate/i18n/core/bjn.json b/MLEB/Translate/i18n/core/bjn.json new file mode 100644 index 00000000..5cdcfc02 --- /dev/null +++ b/MLEB/Translate/i18n/core/bjn.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Ezagren" + ] + }, + "translate-documentation-language": "Dokuméntasi pasan" +} diff --git a/MLEB/Translate/i18n/core/bn.json b/MLEB/Translate/i18n/core/bn.json index 7660ecd3..0f875b73 100644 --- a/MLEB/Translate/i18n/core/bn.json +++ b/MLEB/Translate/i18n/core/bn.json @@ -2,13 +2,13 @@ "@metadata": { "authors": [ "Aftab1995", + "Aftabuzzaman", "Anubhab91", "Bellayet", "Gahori", "Leemon2010", - "Zaheen", "Tauhid16", - "Aftabuzzaman", + "Zaheen", "আজিজ", "আফতাবুজ্জামান" ] @@ -59,38 +59,28 @@ "translate-edit-askpermission": "অনুমতি পান", "exporttranslations": "অনুবাদসমূহ আমদানি", "translate-export-form-format": "বিন্যাস", - "translate-magic-pagename": "সম্প্রসারিত মিডিয়াউইকি অনুবাদ", - "translate-magic-module": "মডিউল:", - "translate-magic-submit": "বের করো", - "translate-magic-cm-export": "রপ্তানি", - "translate-magic-nothing-to-export": "এখানে রপ্তানি করার মত কিছু নেই।", - "translate-magic-cm-to-be": "নতুন", - "translate-magic-cm-current": "বর্তমান", - "translate-magic-cm-original": "মূল", - "translate-magic-cm-comment": "মন্তব্য:", - "translate-magic-cm-save": "সংরক্ষণ", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] ব্যবহার করে হালনাগাদ", - "translate-magic-cm-savefailed": "সংরক্ষণ ব্যর্থ", - "translate-magic-words": "ম্যাজিক শব্দগুলি", - "translate-magic-namespace": "নেমস্পেসের নাম", - "translate-magic-notsaved": "আপনার সম্পাদনা সংরক্ষিত হয়নি!", - "translate-magic-errors": "অনুবাদের মধ্যে নিম্নলিখিত {{PLURAL:$1|ত্রুটি|ত্রুটিসমূহ}} ঠিক করুন:", - "translate-magic-saved": "আপনার পরিবর্তনসমূহ সংরক্ষিত হয়েছে।", - "translate-checks-parameters": "নিম্নলিখিত {{PLURAL:$2|প্যারামিটারটি|প্যারামিটারসমূহ}} ব্যবহার করা হয়নি:\n$1", - "translate-checks-parameters-unknown": "নিম্নলিখিত {{PLURAL:$2|প্যারামিটারটি|প্যারামিটারসমূহ}} অজানা:\n$1", + "translate-checks-parameters": "নিম্নলিখিত {{PLURAL:$2|প্যারামিটারটি|প্যারামিটারসমূহ}} ব্যবহার করা হয়নি:\n$1", + "translate-checks-parameters-unknown": "নিম্নলিখিত {{PLURAL:$2|প্যারামিটারটি|প্যারামিটারসমূহ}} অজানা:\n$1", "translate-checks-balance": "সঠিক পরিমাণে {{PLURAL:$2|বন্ধনী}} দেয়া হয়নি:\n$1", "translate-checks-links": "নিম্নলিখিত {{PLURAL:$2|সংযোগটি|$2টি সংযোগ}} সমস্যাসঙ্কুল:\n$1", "translate-checks-links-missing": "নিম্নলিখিত {{PLURAL:$2|সংযোগটি|$2টি সংযোগ}} অনুপস্থিত:\n$1", - "translate-checks-xhtml": "দয়া করে নিম্নলিখিত {{PLURAL:$2|ট্যাগ|ট্যাগগুলি}} সঠিকটি দিয়ে প্রতিস্থাপন করুন:\n$1", "translate-checks-plural": "সংজ্ঞা {{PLURAL:}} ব্যবহার করেছে কিন্তু অনুবাদ তা করে নি।", "translate-checks-plural-dupe": "{{PLURAL:}}-এর শেষে অনুরূপ ফরম রয়েছে। {{PLURAL:$1|ভেড়া|ভেড়া}} কে {{PLURAL:$1|ভেড়া}} হিসাবে লিখতে হবে।", + "translate-checks-gettext-plural-missing": "এই অনুবাদে অবশ্যই {{PLURAL:GETTEXT|}} থাকতে হবে।", + "translate-checks-gettext-plural-unsupported": "এই বার্তা {{PLURAL:GETTEXT|}} সমর্থন করে না।", "translate-checks-parametersnotequal": "অনুবাদে ব্যবহৃত প্যারামিটার হচ্ছে {{PLURAL:$1|$1}}টি; হওয়া উচিত {{PLURAL:$2|$2}}টি।", "translate-checks-malformed": "$1 সঠিক নয়।", "translate-checks-fudforum-syntax": "এই প্রকল্পে $2-এর পরিবর্তে $1 ব্যবহার করুন।", - "translate-pref-nonewsletter": "আমাকে ইমেইল নিউজলেটার প্রেরণ করবেন না", + "translate-checks-newline-missing-start": "অনুবাদটির শুরুতে নতুন লাইনের $1টি {{PLURAL:$1|অক্ষর}} অনুপস্থিত রয়েছে।", + "translate-checks-newline-missing-end": "অনুবাদটির শেষে নতুন লাইনের $1টি {{PLURAL:$1|অক্ষর}} অনুপস্থিত রয়েছে।", + "translate-checks-newline-extra-start": "অনুবাদটির শুরুতে নতুন লাইনের $1টি {{PLURAL:$1|অক্ষর}} অতিরিক্ত রয়েছে।", + "translate-checks-newline-extra-end": "অনুবাদটির শেষে নতুন লাইনের $1টি {{PLURAL:$1|অক্ষর}} অতিরিক্ত রয়েছে।", + "translate-checks-replacement": "$1 এর পরিবর্তে $2 ব্যবহার করুন।", "translate-pref-editassistlang": "সহযোগী ভাষা:", "prefs-translate": "অনুবাদ অপশন", + "translate-pref-editassistlang-help": "কমা দ্বারা পৃথক করা ভাষার কোডের তালিকা। আপনি অনুবাদ করার সময় এই ভাষাগুলিতে বার্তার অনুবাদ থাকলে তা প্রদর্শিত হবে। ভাষাগুলির পূর্বনির্ধারিত তালিকা আপনার ভাষার উপর নির্ভর করে।", "right-translate": "অনুবাদ ইন্টারফেস ব্যবহার করে সম্পাদনা", + "action-translate": "অনুবাদ ইন্টারফেস ব্যবহার করে সম্পাদনা করার", "right-translate-manage": "বার্তা দল ব্যবস্থাপনা", "action-translate-manage": "বার্তা দল ব্যবস্থাপনা", "right-translate-import": "অফলাইন অনুবাদ আমদানি", @@ -137,6 +127,8 @@ "translate-translations-project": "প্রকল্প:", "translate-translations-history-short": "ই", "languagestats": "ভাষার পরিসংখ্যান", + "languagestats-summary": "এই পাতাটি একটি ভাষার জন্য সমস্ত বার্তা গোষ্ঠীর অনুবাদ পরিসংখ্যান দেখায়।", + "messagegroupstats-summary": "এই পাতাটি বার্তা গোষ্ঠীর পরিসংখ্যান দেখায়।", "languagestats-stats-for": "$1 অনুবাদের পরিসংখ্যান ($2)।", "languagestats-recenttranslations": "সাম্প্রতিক অনুবাদ", "translate-langstats-expand": "প্রসারণ", @@ -145,20 +137,26 @@ "translate-langstats-collapseall": "সকল সংকোচন", "translate-language-code": "ভাষার কোড", "translate-language-code-field-name": "ভাষার কোড:", + "translate-suppress-complete": "সম্পূর্ণ অনুবাদকৃত বার্তা গোষ্ঠীগুলি লুকান", + "translate-ls-noempty": "সম্পূর্ণ অনুবাদহীন বার্তা গোষ্ঠীগুলি লুকান", "translate-language": "ভাষা", "translate-total": "বার্তা", "translate-untranslated": "অনুবাদ হয়নি", "translate-percentage-complete": "সম্পন্ন", "translate-percentage-fuzzy": "পুরাতন", "translate-percentage-proofread": "পর্যালোচিত", + "translate-languagestats-overall": "সমস্ত বার্তা একসাথে দলবদ্ধ করে", "translate-ls-submit": "পরিসংখ্যান দেখান", "translate-ls-column-group": "বার্তা দল", "translate-mgs-pagename": "বার্তা দলের পরিসংখ্যান", "translate-mgs-fieldset": "প্রদর্শন পছন্দসমূহ", "translate-mgs-group": "বার্তা দল:", + "translate-mgs-nocomplete": "অনুবাদ সম্পূর্ণ হওয়া ভাষাগুলি প্রদর্শন করবেন না", + "translate-mgs-noempty": "কোন অনুবাদ না থাকা ভাষাগুলি প্রদর্শন করবেন না", "translate-mgs-submit": "পরিসংখ্যান দেখান", "translate-mgs-column-language": "ভাষা", "translate-mgs-totals": "একসাথে $1টি {{PLURAL:$1|ভাষায়}}।", + "translate-mgs-invalid-group": "নির্দিষ্টকৃত $1 দলটি বিদ্যমান নেই।", "supportedlanguages": "সমর্থিত ভাষাসমূহ", "supportedlanguages-colorlegend": "রঙের ব্যাখ্যা: সর্বশেষ অনুবাদ $1 দিন আগে।", "supportedlanguages-sqlite-error": "SQLite সমর্থিত নয়", @@ -167,15 +165,19 @@ "supportedlanguages-count": "সর্বমোট $1টি {{PLURAL:$1|ভাষায়}}।", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|টি সম্পাদনা}} - সর্বশেষ সম্পাদনা $3 {{PLURAL:$3|দিন}} আগে", "abusefilter-edit-builder-vars-translate-source-text": "অনুবাদ ইউনিটের উৎস পাঠ্য", - "translate-save": "সংরক্ষণ ($1)", + "translate-save": "প্রকাশ করুন ($1)", "translate-jssti-add": "তালিকায় যোগ করো", "managemessagegroups": "বার্তা দল ব্যবস্থাপনা", "translate-smg-notallowed": "আপনাকে এই কর্ম সঞ্চালনের অনুমতি দেওয়া হয়নি।", + "translate-smg-rename-select": "নির্বাচন করুন", + "translate-smg-rename-cancel": "বাতিল", + "translate-smg-rename-no-msg": "কোন বার্তা পাওয়া যায়নি।", "translate-manage-import-diff": "$1 বার্তা | কর্ম: $2", "translate-manage-import-new": "নতুন বার্তা $1", "translate-manage-import-deleted": "অপসারিত বার্তা $1", "translate-manage-action-import": "আমদানি", "translate-manage-action-ignore": "উপেক্ষা", + "translate-manage-action-rename": "নামান্তর", "translate-manage-import-summary": "বাহ্যিক উৎস থেকে একটি নতুন সংস্করণ আমদানি করা হয়েছে", "translate-manage-conflict-summary": "বাহ্যিক উৎস থেকে একটি নতুন সংস্করণ আমদানি করা হয়েছে।\nপরীক্ষা করুন।", "translate-manage-import-ok": "আমদানিকৃত: $1", @@ -185,12 +187,12 @@ "translate-import-load": "ফাইল লোড কর", "translate-import-err-ul-failed": "ফাইল আপলোড ব্যর্থ হয়েছে", "translate-js-summary": "সারাংশ:", - "translate-js-save": "সংরক্ষণ", - "translate-js-next": "সংরক্ষণ এবং পরবর্তী", + "translate-js-save": "প্রকাশ করুন", + "translate-js-next": "প্রকাশ করুন ও পরবর্তী খুলুন", "translate-js-skip": "বাতিল ও পরবর্তী", "translate-js-history": "অনুবাদ ইতিহাস", "translate-js-support": "প্রশ্ন জিজ্ঞাসা করুন", - "translate-js-support-unsaved-warning": "আপনার অসংরক্ষিত অনুবাদ রয়েছে।", + "translate-js-support-unsaved-warning": "আপনার অপ্রকাশিত অনুবাদ রয়েছে।", "translate-gs-pos": "নং", "translate-gs-code": "কোড", "translate-gs-continent": "উপমহাদেশ", @@ -232,14 +234,14 @@ "tux-status-fuzzy": "বর্তমানে অপ্রচলিত", "tux-status-proofread": "পর্যালোচিত", "tux-status-translated": "অনূদিত", - "tux-status-saving": "সংরক্ষণ করা হচ্ছে ...", - "tux-status-unsaved": "সংরক্ষণ করা হয়নি", + "tux-status-saving": "প্রকাশ করা হচ্ছে...", + "tux-status-unsaved": "প্রকাশ হয়নি", "tux-save-unknown-error": "অজানা ত্রুটি দেখা দিয়েছে।", "tux-editor-placeholder": "আপনার অনুবাদ", "tux-editor-editsummary-placeholder": "ঐচ্ছিক সারাংশ", "tux-editor-paste-original-button-label": "মূল লেখা যোগ করো", "tux-editor-discard-changes-button-label": "পরিবর্তন বাতিল", - "tux-editor-save-button-label": "অনুবাদ সংরক্ষণ করুন", + "tux-editor-save-button-label": "অনুবাদ প্রকাশ করুন", "tux-editor-skip-button-label": "বাতিল ও পরবর্তী", "tux-editor-cancel-button-label": "বাতিল", "tux-editor-confirm-button-label": "অনুবাদ নিশ্চিত করুন", @@ -252,9 +254,9 @@ "tux-editor-need-more-help": "আরও সাহায্যের প্রয়োজন?", "tux-editor-ask-help": "আরও তথ্যের জন্য জিজ্ঞাসা করুন", "tux-editor-tm-match": "{{formatnum:$1}}% মিল রয়েছে", - "tux-warnings-more": "{{PLURAL:$1|আরও $1টি}}", - "tux-warnings-hide": "আড়ালে রাখো", - "tux-editor-save-failed": "অনুবাদ সংরক্ষণ ব্যর্থ হয়েছে: $1", + "tux-notices-more": "{{PLURAL:$1|আরও $1টি}}", + "tux-notices-hide": "আড়ালে রাখো", + "tux-editor-save-failed": "অনুবাদ প্রকাশ করা ব্যর্থ হয়েছে: $1", "tux-editor-n-uses": "$1 {{PLURAL:$1|বার}} ব্যবহৃত হয়েছে", "tux-editor-message-desc-more": "আরও দেখান", "tux-editor-message-desc-less": "কম দেখান", @@ -266,10 +268,10 @@ "tux-proofread-action-tooltip": "পর্যালোচিত হিসেবে চিহ্নিত করুন", "tux-proofread-edit-label": "সম্পাদনা", "tux-editor-page-mode": "পাতা", - "tux-editor-outdated-warning": "এই অনুবাদটি হালনাগাদ করার প্রয়োজন হতে পারে।", - "tux-editor-outdated-warning-diff-link": "পার্থক্য দেখান", + "tux-editor-outdated-notice": "এই অনুবাদটি হালনাগাদ করার প্রয়োজন হতে পারে।", + "tux-editor-outdated-notice-diff-link": "পার্থক্য দেখান", "tux-editor-doc-editor-placeholder": "বার্তার নথি", - "tux-editor-doc-editor-save": "নথি সংরক্ষণ", + "tux-editor-doc-editor-save": "নথি প্রকাশ করুন", "tux-editor-doc-editor-cancel": "বাতিল", "tux-messagetable-more-messages": "আরও {{formatnum:$1}}টি {{PLURAL:$1|বার্তা}}", "tux-messagetable-loading-messages": "{{PLURAL:$1|বার্তা}} লোড হচ্ছে...", @@ -302,10 +304,12 @@ "tux-editor-message-tools-delete": "অপসারণ", "tux-editor-message-tools-translations": "সমস্ত অনুবাদসমূহ", "tux-editor-message-tools-linktothis": "এই বার্তায় সংযোগ", - "tux-editor-loading": "লোডিং...", + "tux-editor-loading": "লোড করা হচ্ছে...", + "tux-editor-loading-failed": "অনুবাদ সহায়তাগুলি লোড করা ব্যর্থ হয়েছে: $1", "translate-search-more-languages-info": "আরও $1টি {{PLURAL:$1|ভাষা}}", "translate-statsbar-tooltip": "{{formatnum:$1}}% অনূদিত, {{formatnum:$2}}% পর্যালোচিত", "translate-statsbar-tooltip-with-fuzzy": "{{formatnum:$1}}% অনূদিত, {{formatnum:$2}}% পর্যালোচিত, {{formatnum:$3}}% মেয়াদোত্তীর্ণ", "translate-search-more-groups-info": "আরও $1টি {{PLURAL:$1|দল}}", - "tux-nojs": "এই সরঞ্জামটি জাভাস্ক্রিপ্ট ছাড়া কাজ করে না। জাভাস্ক্রিপ্ট অক্ষম আছে, তাই কাজ করতে ব্যর্থ হয়েছে, বা এই ব্রাউজারটি অসমর্থিত।" + "tux-nojs": "এই সরঞ্জামটি জাভাস্ক্রিপ্ট ছাড়া কাজ করে না। জাভাস্ক্রিপ্ট অক্ষম আছে, তাই কাজ করতে ব্যর্থ হয়েছে, বা এই ব্রাউজারটি অসমর্থিত।", + "specialpages-group-translation": "অনুবাদ" } diff --git a/MLEB/Translate/i18n/core/bo.json b/MLEB/Translate/i18n/core/bo.json index 40844045..514fcd4f 100644 --- a/MLEB/Translate/i18n/core/bo.json +++ b/MLEB/Translate/i18n/core/bo.json @@ -24,10 +24,6 @@ "translate-optional": "(འདེམས་ཚན་ཅན།)", "translate-ignored": "(སྣང་མེད་བྱས་པ།)", "translate-edit-title": "\"$1\"ལ་རྩོམ་སྒྲིག་བྱེད་པ།", - "translate-magic-cm-current": "ད་ཡོད།", - "translate-magic-cm-original": "མ་ཕྱི།", - "translate-magic-cm-save": "ཉར་ཚགས།", - "translate-magic-cm-savefailed": "ཉར་ཚགས་ཕམ་ཉེས་བྱུང་བ།", "translate-rc-translation-filter-no": "ཅི་ཡང་མི་བྱེད།", "translate-statsf-scale-months": "ཟླ་བ།", "translate-statsf-scale-weeks": "བདུན་ཕྲག", diff --git a/MLEB/Translate/i18n/core/bqi.json b/MLEB/Translate/i18n/core/bqi.json index 31e7493d..b72ca009 100644 --- a/MLEB/Translate/i18n/core/bqi.json +++ b/MLEB/Translate/i18n/core/bqi.json @@ -4,5 +4,5 @@ "Mogoeilor" ] }, - "translate-documentation-language": "سندسازی سی پیغوم" + "translate-documentation-language": "سٱنٱڌسازی سی پٱیغوم" } diff --git a/MLEB/Translate/i18n/core/br.json b/MLEB/Translate/i18n/core/br.json index ecb1a4cd..01eda1d4 100644 --- a/MLEB/Translate/i18n/core/br.json +++ b/MLEB/Translate/i18n/core/br.json @@ -4,10 +4,12 @@ "Fohanno", "Fulup", "Gwendal", + "Huñvreüs", "Y-M D" ] }, "translate": "Treiñ", + "translate-extensionname": "Treiñ", "translate-desc": "[[Special:Translate|Pajenn dibar]] evit treiñ MediaWiki ha pelloc'h", "translate-taskui-export-to-file": "Ezporzhiañ er furmad orin", "translate-taskui-export-as-po": "Ezporzhiañ evit treiñ ezlinenn", @@ -31,7 +33,8 @@ "translate-page-showing": "O tiskouez kemennadennoù adal $1 betek $2 diwar $3.", "translate-page-showing-all": "War wel $1 {{PLURAL:$1|gemennadenn|kemennadenn}}", "translate-page-showing-none": "Netra da ziskouez.", - "translate-next": "Pajenn da-heul", + "translate-page-paging-links": "[ $1 ] [ $2 ]", + "translate-next": "Pajenn war-lerc'h", "translate-prev": "Pajenn gent", "translate-page-description-legend": "Titouroù diwar-benn ar strollad", "translate-page-description-hasoptional": "Kemennadennoù diret zo er strollad kemennadennoù-mañ.\nNe zlefe ar c'hemennadennoù diret bezañ troet nemet pa vez ezhommoù dibar gant ho yezh evel pa vez arabat ober gant esaouennoù pe evit treuzlizherennañ anvioù divoutin. $1", @@ -52,31 +55,15 @@ "translate-use-suggestion": "Erlec'hiañ an droidigezh a-vremañ gant ar c'hinnig-mañ.", "translate-edit-nopermission": "Ret eo deoc'h kaout gwirioù treiñ a-raok gallout treiñ kemennadennoù.", "translate-edit-askpermission": "Kaout an aotre", - "translate-magic-pagename": "Troidigezh MediaWiki astennet", - "translate-magic-help": "Gallout a rit treiñ aliasoù ar pajennoù dibar, ar gerioù burzhudus hag anvioù an esaouennoù anv.\n\nAliasoù ar pajennoù dibar hag ar gerioù burzhudus a c'hall kaout meur a droidigezh.\nDispartiet eo an troidigezhioù dre skejoù (,).\nN'hall anvioù an esaouennoù anv kaout nemet un droidigezh.\n\nTreiñ esaouennoù anv ar raktres $1 talk a c'hall bezañ luziet.\nErlec'hiet eo $1 gant anv al lec'hienn (da skouer {{ns:project_talk}}).\nMa n'haller ket sevel lavarennoù reizh en ho yezh hep kemmañ anv al lec'hienn, kit e darempred gant un diorroer [[Support]].\n\nRet eo deoc'h bezañ ezel eus ar strollad troerien evit gallout enrollañ ar c'hemmoù.\nNe vo ket enrollet ar c'hemmoù e-keit ha ne vo ket bet pouezet war ar bouton enrollañ dindan.", - "translate-magic-module": "Modulenn :", - "translate-magic-submit": "Klask", - "translate-magic-cm-export": "Ezporzhiañ", - "translate-magic-nothing-to-export": "N'eus ket netra da ezporzhiañ.", - "translate-magic-cm-to-be": "A zeu da vezañ", - "translate-magic-cm-current": "Bremañ", - "translate-magic-cm-original": "Orin", - "translate-magic-cm-comment": "Notenn :", - "translate-magic-cm-save": "Enrollañ", - "translate-magic-cm-updatedusing": "Hizivaet en ur implijout [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "C'hwitet enrollañ", - "translate-magic-special": "Aliasoù ar pajennoù dibar", - "translate-magic-words": "Gerioù burzhudus", - "translate-magic-namespace": "Anv an esaouennoù anv", - "translate-magic-notsaved": "N'eo ket bet enrollet ar c'hemmoù degaset ganeoc'h !", - "translate-magic-errors": "Reizhit ar {{PLURAL:$1|fazi|fazi}} da-heul en troidigezhioù :", - "translate-magic-saved": "Enrollet-mat eo bet ho kemmoù.", + "exporttranslations": "Ezporzhiañ an troidigezhioù", + "translate-export-form-format": "Furmad", + "translate-export-invalid-format": "Spisaat ur furmad reizh", + "translate-export-not-supported": "N'eo ket skoret an ezporzhiañ troidigezhioù.", "translate-checks-parameters": "Ne vez ket graet gant an {{PLURAL:$2|arventenn|arventennoù}} da-heul : $1", - "translate-checks-parameters-unknown": "Dianav eo an {{PLURAL:$2|arventenn|arventennoù}} da-heul :\n$1", + "translate-checks-parameters-unknown": "Dianav eo an {{PLURAL:$2|arventenn|arventennoù}} da-heul :\n$1", "translate-checks-balance": "Ampar eo an niver a {{PLURAL:$2|grommelloù|grommelloù}} : $1", "translate-checks-links": "Kudennek eo al {{PLURAL:$2|liamm|liammoù}} da-heul : $1", "translate-checks-links-missing": "Mankout a ra {{PLURAL:$2|al liamm|an $2 liamm}} da-heul :\n$1", - "translate-checks-xhtml": "Erlec'hiit an {{PLURAL:$2|dikedenn|tikedennoù}} da-heul gant ar re a zegouezh : $1", "translate-checks-plural": "Ober a ra an termenadur gant {{PLURAL:}} padal an droidigezh ne ra ket.", "translate-checks-pagename": "Anv esaouenn kemmet adalek an termenadur", "translate-checks-format": "Ne glot ket an droidigezh-mañ gant an termenadur pe faziek eo an ereadurezh anezhi : $1", @@ -84,7 +71,6 @@ "translate-checks-parametersnotequal": "{{PLURAL:$1|$1}} eo an niver a arventennoù pa zlefe bezañ {{PLURAL:$2|$2}}.", "translate-checks-malformed": "Stummet fall eo $1.", "translate-checks-fudforum-syntax": "Ober gant $1 e-lec'h $2 er raktres-mañ.", - "translate-pref-nonewsletter": "Arabat kas din kelc'hlizheroù dre bostel", "translate-pref-editassistlang": "Yezhoù skoazell :", "prefs-translate": "Dibarzhioù treiñ", "translate-pref-editassistlang-help": "Roll kodoù yezh dispartiet dre ur skej.\nDiskwelet eo an droidigezh er yezhoù-se pa vezit o treiñ ur gemennadenn.\nCheñch a ra roll dre ziouer ar yezhoù-se diouzh ar yezh a rit ganti.", @@ -95,7 +81,14 @@ "right-translate-import": "Enporzhiañ an troidigezhioù ezlinenn", "action-translate-import": "Enporzhiañ troidigezhioù ezlinenn", "right-translate-messagereview": "Adwelet an troidigezhioù", + "action-translate-messagereview": "Adwelet an troidigezhioù", "right-translate-groupreview": "Kemmañ stad lusk labour ar strolladoù kemennadennoù", + "translate-rcfilters-translations": "Troidigezhioù", + "translate-rcfilters-translations-only-label": "Troidigezhioù", + "translate-rcfilters-translations-only-desc": "Kemmoù graet er pajennoù troet.", + "translate-rcfilters-translations-filter-label": "Ket troidigezhioù", + "translate-rcfilters-translations-filter-desc": "An holl gemmoù n'int ket troidigezhioù", + "translate-rcfilters-translations-site-label": "Kemmadennoù al lec'hienn", "translate-rc-translation-filter": "Silañ an troidigezhioù :", "translate-rc-translation-filter-no": "Na ober seurt ebet", "translate-rc-translation-filter-only": "Diskouez an troidigezhioù hepken", @@ -127,7 +120,7 @@ "translate-statsf-language": "Roll kodoù yezh, dispartiet gant skejoù :", "translate-statsf-group": "Roll kodoù strolladoù, dispartiet gant skejoù :", "translate-statsf-submit": "Rakwelet", - "translate-tag-page-desc": "Troidigezh ar bajenn wiki [[$2|$1]].", + "translate-tag-page-desc": "Troidigezh ar bajenn wiki [[$2|$1]] adalek $3 ($4).", "translate-sidebar-alltrans": "E yezhoù all", "translations": "An holl droidigezhioù", "translations-summary": "Merkit anv ur c'hemenn bennak amañ evit gwelet an holl droidigezhioù hegerz.", @@ -141,6 +134,7 @@ "translate-translations-history-short": "h", "languagestats": "Stadegoù yezh", "languagestats-summary": "Diskouez a ra ar bajenn-mañ ar stadegoù treiñ evit an holl strolladoù kemennadennoù en ur yezh bennak.", + "messagegroupstats-summary": "Diskouez a ra ar bajenn-mañ stadegoù ar strolladoù kemennadennoù", "languagestats-stats-for": "Stadegoù an droidigezh evit $1 ($2).", "languagestats-recenttranslations": "troidigezhioù diwezhañ", "translate-langstats-incomplete": "Diglok eo darn eus stadegoù ar bajenn-mañ. Ret eo hec'h adkargañ evit kaout stadegoù all.", @@ -157,6 +151,7 @@ "translate-untranslated": "Didro", "translate-percentage-complete": "Echu", "translate-percentage-fuzzy": "Dispredet", + "translate-percentage-proofread": "Adlennet", "translate-languagestats-overall": "An holl strolladoù kemennadennoù war un dro", "translate-ls-submit": "Diskouez ar stadegoù", "translate-ls-column-group": "Strollad kemennadennoù", @@ -173,10 +168,14 @@ "supportedlanguages": "Yezhoù skoret", "supportedlanguages-summary": "Diskouez a ra ar bajenn-mañ roll ar yezhoù skoret gant {{SITENAME}} a-gevret gant roll an droerien a labour warno.\nSeul vrasoc'h anv ar troer, seul vui a droidigezhioù zo bet kaset da benn gantañ.\nLiv an islinennañ a verk pegen nevez zo eo bet oberiant an droerien amañ.", "supportedlanguages-colorlegend": "Alc'hwez evit al liv : Troidigezh ziwezhañ, $1 devezh zo.", + "supportedlanguages-portallink": "[$1] $2 - $3", + "supportedlanguages-portallink-nocldr": "[$1] $2", + "supportedlanguages-sqlite-error": "N'eo ket skoret SQLite", "supportedlanguages-translators": "{{PLURAL:$2|Troer|Troerien}} : $1", "supportedlanguages-recenttranslations": "troidigezhioù ziwezhañ", "supportedlanguages-count": "$1 {{PLURAL:$1|yezh|yezh}} en holl.", "supportedlanguages-activity": "$1 : $2 {{PLURAL:$2|c'hemm|kemm}} - kemm diwezhañ $3 {{PLURAL:$3|devezh|devezh}} zo", + "translate-supportedlanguages-cached": "Krubuilhet eo bet an titouroù-mañ $1 zo.", "translate-save": "Enrollañ ($1)", "translate-jssti-add": "Ouzhpennañ d'ar roll", "managemessagegroups": "Merañ ar strollad kemennadennoù", @@ -184,6 +183,8 @@ "translate-smg-nochanges": "N'eus netra da gemmañ.", "translate-smg-submit": "Kas ar c'hemmoù ma vo pledet ganto", "translate-smg-submitted": "Hizivaet eo bet termenadurioù an troidigezhioù. Plediñ a reer gant ar c'hemmoù en drekleur.", + "translate-smg-rename-select": "Diuzañ", + "translate-smg-rename-cancel": "Nullañ", "translate-manage-import-diff": "Kemennadenn $1 | Oberoù : $2", "translate-manage-import-new": "Kemennadenn nevez $1", "translate-manage-import-deleted": "Kemennadenn diverket $1", @@ -191,6 +192,7 @@ "translate-manage-action-conflict": "Enporzhiañ ha merkañ evel strafuilhet", "translate-manage-action-ignore": "Lezel a-gostez", "translate-manage-action-fuzzy": "Enporzhiañ an troidigezhioù hag o merkañ evel strafuilhet.", + "translate-manage-action-rename": "Adenvel", "translate-manage-nochanges": "N'eus bet kemm ebet e termenadurioù kemennadennoù ar strollad-mañ", "translate-manage-nochanges-other": "N'eus bet kemm ebet gant ar yezh-mañ.\nGrit gant al liamm a-is da zistreiñ d'ar gwel dre ar munud evit ar strollad", "translate-manage-inconsistent": "Merzet ez eus bet un disdalc'h er reked.\nGwiriit ha kemmoù zo bet ha klaskit en-dro.\nMunudoù : $1.", @@ -199,7 +201,7 @@ "translate-manage-conflict-summary": "Enporzhiañ ur stumm nevez adalek ur vammenn ziavaez.\nGwiriit mar plij.", "translate-manage-submit": "Erounit", "translate-manage-intro-other": "A-is emañ roll ar c'hemmoù treiñ e $1.\nGwiriit anezho ha dibabit ar pezh a fell deoc'h ober evit pep troidigezh.\nMa tibabit chom hep kemer ar c'hemmoù e kont e vint riñset-lip kentañ tro ma vo un ezporzhiadenn nevez.", - "translate-manage-import-ok": "Enporzhiet ez eus bet ur stumm nevez eus ar bajenn $1", + "translate-manage-import-ok": "Enporzhiet : $1", "translate-manage-import-done": "Enporzhiañ aet betek penn !", "importtranslations": "Enporzhiañ an troidigezhioù", "translate-import-from-local": "Enporzhiañ ur restr lec'hel :", @@ -210,7 +212,6 @@ "translate-import-err-no-such-file": "N'eus ket eus ar restr $1 pe neuze n'eo ket bet enporzhiet ent lec'hel.", "translate-import-err-stale-group": "Ar restr-mañ zo en ur strollad kemennadennoù n'eus ket anezhañ.", "translate-import-err-no-headers": "N'eo ket ar restr ur restr ''Gettext'' stummet mat er furmad gortozet gant an astenn ''Translate'' :\nDibosupl eo didermeniñ ar strollad hag ar yezh adalek talbennoù ar restr.", - "translate-import-err-warnings": "Ne oa ket stummet mat ar restr-mañ.\nBezit sur ne lam ket ho skridaozer ar maeziennoù msgctxt kuit.\nMunudoù : $1", "translate-js-summary": "Diverrañ :", "translate-js-save": "Enrollañ", "translate-js-next": "Enrollañ ha digeriñ an hini da-heul", @@ -267,6 +268,7 @@ "tux-status-translated": "Troet", "tux-status-saving": "Oc'h enrollañ...", "tux-status-unsaved": "Hep enrollañ", + "tux-save-unknown-error": "C'hoarvezet ez eus ur fazi dianav.", "tux-editor-placeholder": "Ho troidigezh", "tux-editor-paste-original-button-label": "Pegañ an destenn orin", "tux-editor-discard-changes-button-label": "Dilezel ar c'hemmoù", @@ -282,8 +284,8 @@ "tux-editor-need-more-help": "Ezhomm sikour ?", "tux-editor-ask-help": "Goulenn resisadurioù", "tux-editor-tm-match": "$1% kenglotañ", - "tux-warnings-more": "{{PLURAL:$1|$1 ouzhpenn}}", - "tux-warnings-hide": "kuzhat", + "tux-notices-more": "{{PLURAL:$1|$1 ouzhpenn}}", + "tux-notices-hide": "kuzhat", "tux-editor-save-failed": "C'hwitet eo bet an enrollañ : $1", "tux-editor-n-uses": "implijet $1 {{PLURAL:$1|wezh|gwezh}}", "tux-editor-message-desc-more": "Gwelet muioc'h", @@ -296,8 +298,8 @@ "tux-proofread-action-tooltip": "Degemer an droidigezh", "tux-proofread-edit-label": "Kemmañ", "tux-editor-page-mode": "Pajenn", - "tux-editor-outdated-warning": "Marteze eo dav nevesaat an droidigezh-mañ.", - "tux-editor-outdated-warning-diff-link": "Diskouez ar c'hemmoù", + "tux-editor-outdated-notice": "Marteze eo dav nevesaat an droidigezh-mañ.", + "tux-editor-outdated-notice-diff-link": "Diskouez ar c'hemmoù", "tux-editor-doc-editor-placeholder": "Titouroù a-zivout ar gemennadenn", "tux-editor-doc-editor-save": "Enrollañ an teulioù skoazell", "tux-editor-doc-editor-cancel": "Nullañ", @@ -328,11 +330,13 @@ "tux-editor-expand-tooltip": "Dispakañ", "tux-editor-collapse-tooltip": "Pakañ", "tux-editor-message-tools-history": "Istor", + "tux-editor-message-tools-delete": "Dilemel", "tux-editor-message-tools-translations": "An holl droidigezhioù", + "tux-editor-message-tools-linktothis": "Liamm war-zu ar gemennadenn-mañ", "tux-editor-loading": "O kargañ...", "translate-search-more-languages-info": "$1 {{PLURAL:$1|yezh}} ouzhpenn", "translate-statsbar-tooltip": "$1% troet, $2% adwelet", "translate-statsbar-tooltip-with-fuzzy": "$1% troet, $2% adwelet, $3% dispredet", "translate-search-more-groups-info": "$1 {{PLURAL:$1|strollad}} ouzhpenn", - "translate-ulsdep-title": "Fazi kefluniadur" + "specialpages-group-translation": "Troidigezh" } diff --git a/MLEB/Translate/i18n/core/bs.json b/MLEB/Translate/i18n/core/bs.json index 18a40cd4..2eef23e9 100644 --- a/MLEB/Translate/i18n/core/bs.json +++ b/MLEB/Translate/i18n/core/bs.json @@ -5,9 +5,11 @@ "DzWiki", "Edinwiki", "KWiki", + "Obsuser", "Palapa", + "Semso98", "Srdjan m", - "Semso98" + "Srđan" ] }, "translate": "Prijevod", @@ -34,7 +36,7 @@ "translate-page-showing": "Prikazane su poruke od $1 do $2 iz $3.", "translate-page-showing-all": "Prikaz $1 {{PLURAL:$1|poruke|poruke|poruka}}.", "translate-page-showing-none": "Nema poruka za prikaz.", - "translate-next": "slijedeća stranica", + "translate-next": "sljedeća stranica", "translate-prev": "Prethodna stranica", "translate-page-description-legend": "Informacije o ovoj grupi", "translate-page-description-hasoptional": "Ova grupa sadrži neobavezne poruke.\nNeobavezne poruke treba prevoditi samo kad Vaš jezik ima posebne potrebe;\nnaprimjer, ako ne treba koristiti razmake ili ako treba preslovljavati imena. $1", @@ -60,41 +62,20 @@ "translate-export-invalid-format": "Navedite ispravan format.", "translate-export-not-supported": "Izvoz prijevoda nije podržan.", "translate-export-format-notsupported": "Grupa poruka ne podržava navedeni izvozni format.", - "translate-magic-pagename": "Prošireni MediaWiki prijevod", - "translate-magic-help": "Možete prevoditi pseudonime posebnih stranica, magične riječi i nazive imenskih prostora.\n\nPseudonimi posebnih stranica i magične riječi mogu imati višestruke prijevode.\nPrijevodi su odvojeni zarezom (,).\nImenski prostori mogu imati samo jedan prijevod.\n\nPrevođenje imenskog prostora za razgovor o projektu Razgovor o $1 moglo bi biti složeno.\n$1 se zamjenjuje s imenom sajta (naprimjer, {{ns:project_talk}}).\nAko na Vašem jeziku nije moguće oblikovati pravilan izraz bez promjene imena sajta, obavijestite nas na stranici [[Support]].\n\nMorate biti prevodilac da biste sačuvali izmjene.\nIzmjene se neće sačuvati sve dok ne kliknete na donje dugme \"Sačuvaj\".", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Pronađi", - "translate-magic-cm-export": "Izvoz", - "translate-magic-nothing-to-export": "Nema ništa za izvoz.", - "translate-magic-cm-to-be": "Treba biti", - "translate-magic-cm-current": "Trenutno", - "translate-magic-cm-original": "Originalno", - "translate-magic-cm-comment": "Komentar:", - "translate-magic-cm-save": "Sačuvaj", - "translate-magic-cm-updatedusing": "Ažurirano putem [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Spremanje nije uspjelo", - "translate-magic-special": "Skraćenice posebnih stranica", - "translate-magic-words": "Magične riječi", - "translate-magic-namespace": "Nazivi imenskih prostora", - "translate-magic-notsaved": "Vaše uređivanje nije spremljeno!", - "translate-magic-errors": "Molimo ispravite {{PLURAL:$1|slijedeću grešku|slijedeće greške}} u prevodima:", - "translate-magic-saved": "Vaše izmjene su sačuvane.", - "translate-checks-parameters": "Sljedeći {{PLURAL:$2|parametar nije iskorišten|parametri nisu iskorišteni}}:\n$1", - "translate-checks-parameters-unknown": "Sljedeći {{PLURAL:$2|parametar je nepoznat|parametri su nepoznati}}:\n$1", + "translate-checks-parameters": "Sljedeći {{PLURAL:$2|parametar nije iskorišten|parametri nisu iskorišteni}}:\n$1", + "translate-checks-parameters-unknown": "Sljedeći {{PLURAL:$2|parametar je nepoznat|parametri su nepoznati}}:\n$1", "translate-checks-balance": "Neparan broj {{PLURAL:$2|zagrada}}:\n$1", "translate-checks-links": "{{PLURAL:$2|Sljedeći link je problematičan|Sljedeća $2 linka su problematični|Sljedećih $2 linkova je problematično}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Sljedeći link|Sljedeća $2 linka|Sljedeći $2 linkova}} nedostaje:\n$1", - "translate-checks-xhtml": "Molimo Vas da zamijenite {{PLURAL:$2|slijedeću oznaku|slijedeće oznake}} sa ispravnim:\n$1", "translate-checks-plural": "Definicija poruke koristi {{PLURAL:}} ali ga nema u prijevodu.", "translate-checks-plural-forms": "U {{PLURAL:}} {{PLURAL:$1|je upisan jedan oblik|su upisana $1 oblika|je upisano $1 oblika}}, ali on {{PLURAL:$2|podržava samo jedan|podržava samo $2}} (izuzimajući oblike 0= i 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} ima duplicirane oblike na kraju. {{PLURAL:$1|vrata|vrata}} trebalo bi pisati kao {{PLURAL:$1|vrata}}.", "translate-checks-pagename": "Imenski prostor je promijenjen u odnosu na definiciju", "translate-checks-format": "Ovaj prijevod nije usklađen sa definicijom ili nema validnu sintaksu: $1", - "translate-checks-escape": "Slijedeće escape-sekvence mogle bi biti slučajne: $1", + "translate-checks-escape": "Sljedeće escape-sekvence mogle bi biti slučajne: $1", "translate-checks-parametersnotequal": "Broj parametara iznosi {{PLURAL:$1|$1}}; trebao bi biti {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 je pogrešno upisano.", "translate-checks-fudforum-syntax": "Koristite nowiki>$1umjesto $2 u ovom projektu.", - "translate-pref-nonewsletter": "Ne šalji mi pismo s vijestima putem e-pošte", "translate-pref-editassistlang": "Pomoćni jezici:", "prefs-translate": "Opcije prevođenja", "translate-pref-editassistlang-help": "Spisak kodova jezika razdvojenih zarezom.\nPrijevod neke poruke na ovim jezicima prikazuje se dok prevodite.\nPretpostavljeni spisak jezika zavisi od Vašeg jezika.", @@ -228,10 +209,9 @@ "translate-import-err-no-such-file": "Datoteka $1 ne postoji ili nije postavljena lokalno.", "translate-import-err-stale-group": "Grupa poruka kojoj ova datoteka pripada ne postoji.", "translate-import-err-no-headers": "Datoteka nije dobro formiran Gettext datoteka u formatu proširenja Translate:\nNe mogu da odredim grupu i jezik iz zaglavlja datoteke.", - "translate-import-err-warnings": "Datoteka nije dobro formirana.\nProvjerite da li je Vaš uređivač uklonio msgctxt polja.\nDetalji: $1", "translate-js-summary": "Sažetak:", "translate-js-save": "Sačuvaj", - "translate-js-next": "Spremi i idi na slijedeću", + "translate-js-next": "Spremi i idi na sljedeću", "translate-js-skip": "Pređi na sljedeću poruku", "translate-js-history": "Historija prijevoda", "translate-js-support": "Postavi pitanje", @@ -309,8 +289,8 @@ "tux-editor-need-more-help": "Trebate pomoć?", "tux-editor-ask-help": "Zatražite više informacija", "tux-editor-tm-match": "$1% slaganja", - "tux-warnings-more": "{{PLURAL:$1|još $1}}", - "tux-warnings-hide": "sakrij", + "tux-notices-more": "{{PLURAL:$1|još $1}}", + "tux-notices-hide": "sakrij", "tux-editor-save-failed": "Čuvanje prijevoda nije uspjelo: $1", "tux-editor-n-uses": "korišteno $1 {{PLURAL:$1|put|puta}}", "tux-editor-message-desc-more": "Prikaži više", @@ -323,8 +303,8 @@ "tux-proofread-action-tooltip": "Označi pregledanim", "tux-proofread-edit-label": "Uredi", "tux-editor-page-mode": "Stranica", - "tux-editor-outdated-warning": "Možda bi trebalo ažurirati ovaj prijevod.", - "tux-editor-outdated-warning-diff-link": "Prikaži razlike", + "tux-editor-outdated-notice": "Možda bi trebalo ažurirati ovaj prijevod.", + "tux-editor-outdated-notice-diff-link": "Prikaži razlike", "tux-editor-doc-editor-placeholder": "Dokumentacija poruke", "tux-editor-doc-editor-save": "Sačuvaj dokumentaciju", "tux-editor-doc-editor-cancel": "Otkaži", @@ -366,8 +346,6 @@ "translate-statsbar-tooltip": "$1% prevedeno, $2% pregledano", "translate-statsbar-tooltip-with-fuzzy": "‎$1% prevedeno, $2% pregledano, $3% zastareno", "translate-search-more-groups-info": "još $1 {{PLURAL:$1|grupa|grupe|grupa}}", - "translate-ulsdep-title": "Greška u konfiguraciji", - "translate-ulsdep-body": "Proširenje Translate ovisi o [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector Univerzalnom jezičkom selektoru].", "tux-session-expired": "Više niste prijavljeni. Prijavite se u drugoj kartici. Druga mogućnost je da prekopirate nesačuvane prijevode, prijavite se, vratite se na ovu stranicu i ponovo upišete svoje prijevode.", "tux-nojs": "Ova stranica zahtijeva JavaScript." } diff --git a/MLEB/Translate/i18n/core/bug.json b/MLEB/Translate/i18n/core/bug.json index c4c025ab..966ed106 100644 --- a/MLEB/Translate/i18n/core/bug.json +++ b/MLEB/Translate/i18n/core/bug.json @@ -9,6 +9,5 @@ "translate-page-edit": "padeccéŋ", "translate-edit-no-information": "''Iyyedé méséjeë degaga dokuméntasina. Rékko idi isseŋi kotégaï na pakogaï ripaké, weddiŋi idi maŋinriŋ patare'juma laiŋë menambahkan dokumentasina.''", "translate-edit-information": "Informasina iyyéde leppa ($1)", - "translate-magic-cm-save": "Taro", "translate-statsf-submit": "Pribiu" } diff --git a/MLEB/Translate/i18n/core/ca.json b/MLEB/Translate/i18n/core/ca.json index c9f09660..d1c52011 100644 --- a/MLEB/Translate/i18n/core/ca.json +++ b/MLEB/Translate/i18n/core/ca.json @@ -2,8 +2,12 @@ "@metadata": { "authors": [ "Aleator", + "Cedric31", "Fitoschido", + "Jlrb+", + "Jmarchn", "Jordi Roqué", + "Macofe", "Paucabot", "Pginer", "QuimGil", @@ -13,10 +17,7 @@ "Toniher", "Vriullop", "XVEC", - "පසිඳු කාවින්ද", - "Jmarchn", - "Macofe", - "Cedric31" + "පසිඳු කාවින්ද" ] }, "translate": "Tradueix", @@ -68,46 +69,28 @@ "exporttranslations": "Exporta les traduccions", "translate-export-form-format": "Format", "translate-export-invalid-format": "Especifiqueu un format vàlid.", - "translate-magic-pagename": "Traducció ampliada del MediaWiki", - "translate-magic-help": "Aquí podeu traduir els àlies de les pàgines especials, les paraules màgiques i els títols dels diferents espais de noms (''namespaces'').\n\nEls àlies de les pàgines especials i les paraules màgiques poden tenir múltiples traduccions. Separeu-les per una coma (,). Els espais de noms només poden tenir una traducció.\n\nDins les traduccions dels espais de noms, la $1 talk és especial. $1 es substitueix pel nom del projecte (per exemple {{ns:project_talk}}). Si no és possible fer-ho així en el vostre idioma sense canviar la forma gramatical del nom del projecte, siusplau contacteu amb nosaltres: [[Support]].\n\nHeu de tenir permisos de traductor per a desar els canvis, que no es guardaran fins que no cliqueu el botó corresponent.", - "translate-magic-module": "Mòdul:", - "translate-magic-submit": "Mostra", - "translate-magic-cm-export": "Exporta", - "translate-magic-nothing-to-export": "No hi ha res per exportar.", - "translate-magic-cm-to-be": "Serà", - "translate-magic-cm-current": "Actual", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Comentari:", - "translate-magic-cm-save": "Desa", - "translate-magic-cm-updatedusing": "Actualitzat amb [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Error al desar", - "translate-magic-special": "Noms de les pàgines especials", - "translate-magic-words": "Paraules màgiques", - "translate-magic-namespace": "Noms dels espais de noms", - "translate-magic-notsaved": "No s'ha desat la modificació!", - "translate-magic-errors": "Al que arregleu {{PLURAL:$1|el següent error|els següents errors}} a les traduccions:", - "translate-magic-saved": "Els vostres canvis s'han desat.", - "translate-checks-parameters": "{{PLURAL:$2|El paràmetre següent no s'està|Els paràmetres següents no s'estan}} usant:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|El paràmetre següent és desconegut|Els paràmetres següent són desconeguts}}:\n$1", + "translate-export-not-supported": "L'exportació de traduccions no està admesa.", + "translate-checks-parameters": "{{PLURAL:$2|El paràmetre següent no s'està|Els paràmetres següents no s'estan}} usant:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|El paràmetre següent és desconegut|Els paràmetres següent són desconeguts}}:\n$1", "translate-checks-balance": "Hi ha un nombre senar de {{PLURAL:$2|parèntesis, claus i/o claudàtors|parèntesis, claus i/o claudàtors}}:\n$1", "translate-checks-links": "{{PLURAL:$2|L'enllaç següent és problemàtic|Els enllaços següents són problemàtics}}:\n$1", "translate-checks-links-missing": "No hi ha {{PLURAL:$2|l'enllaç següent|els següents $2 enllaços}}:\n$1", - "translate-checks-xhtml": "{{PLURAL:$2|Reemplaceu l'etiqueta següent per la correcta|Reemplaceu les etiquetes següents per les correctes}}:\n$1", "translate-checks-plural": "La definició utilitza {{PLURAL:}} i en canvi la traducció no.", "translate-checks-plural-forms": "{{PLURAL:}} es va donar {{PLURAL:$1|una forma|$1 formes}} però {{PLURAL:$2|només una forma és|$2 formes són}} compatible/s (excloent les formes 0= i 1=)", "translate-checks-plural-dupe": "{{PLURAL:}} conté una forma duplicada al final. {{PLURAL:$1|atles|atles}} s'hauria d'escriure {{PLURAL:$1|atles}}.", + "translate-checks-smartformat-plural-unsupported": "Aquest missatge no admet els plurals a la variable $1.", "translate-checks-pagename": "S’ha canviat l’espai de noms de la definició", "translate-checks-format": "Aquesta traducció no segueix la definició o té una sintaxi invàlida: $1", "translate-checks-escape": "Les següents seqüències d'escapament poden ser accidentals: $1", "translate-checks-parametersnotequal": "El compte de paràmetres és {{PLURAL:$1|$1}}; hauria de ser{{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 té un format incorrecte.", "translate-checks-fudforum-syntax": "Feu servir $1 en comptes de $2 en aquest projecte.", - "translate-pref-nonewsletter": "No m’enviïs per correu electrònic el recull de notícies", "translate-pref-editassistlang": "Idiomes d'ajuda:", "prefs-translate": "Opcions de traducció", "translate-pref-editassistlang-help": "Llista separada per comes dels codis dels idiomes que vulgueu utilitzar. Quan traduïu un missatge podreu veure les seves traduccions a aquests idiomes. La llista d'idiomes per defecte depèn del vostre idioma.", "translate-pref-editassistlang-bad": "Codi d'idioma incorrecte a la llista:\n$1.", "right-translate": "Editar fent servir la interfície de traducció", + "action-translate": "modifica fent servir la interfície de traducció", "right-translate-manage": "Gestiona els grups de missatge", "action-translate-manage": "Gestiona els grups de missatges", "right-translate-import": "Importar traduccions fora de línia", @@ -115,11 +98,14 @@ "right-translate-messagereview": "Revisa les traduccions", "action-translate-messagereview": "revisa les traduccions", "right-translate-groupreview": "Canvia l'estat del flux de treball dels grups de missatges", + "action-translate-groupreview": "canvia l'estat del flux de treball dels grups de missatges", "translate-rcfilters-translations": "Traduccions", "translate-rcfilters-translations-only-label": "Traduccions", + "translate-rcfilters-translations-only-desc": "Canvis a pàgines traduïdes.", "translate-rcfilters-translations-filter-label": "No traduccions", "translate-rcfilters-translations-filter-desc": "Tots els canvis que no són traduccions.", "translate-rcfilters-translations-site-label": "Missatges del lloc", + "translate-rcfilters-translations-site-desc": "Personalitzacions dels missatges del lloc a l'espai de noms MediaWiki.", "translate-rc-translation-filter": "Filtra traduccions:", "translate-rc-translation-filter-no": "No facis res", "translate-rc-translation-filter-only": "Mostra només traduccions", @@ -199,10 +185,12 @@ "supportedlanguages": "Llengües admeses", "supportedlanguages-summary": "Aquesta pàgina mostra una llista de tots els idiomes que es poden utilitzar a {{SITENAME}} juntament amb els noms dels traductors que treballen en cadascun d'ells.\nEl nom del traductor apareix més gran com més traduccions hagi contribuït a fer.\nEl color del subratllat indica si el traductor ha estat actiu recentment.", "supportedlanguages-colorlegend": "Llegenda per al color: La darrera traducció va ser fa $1 dies.", + "supportedlanguages-sqlite-error": "SQLite no està admès", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Traductor}}|Traductors}}: $1", "supportedlanguages-recenttranslations": "traduccions recents", "supportedlanguages-count": "$1 {{PLURAL:$1|idioma|idiomes}} en total.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|modificació|modificacions}}, la darrera va ser fa $3 {{PLURAL:$3|dia|dies}}", + "abusefilter-edit-builder-vars-translate-source-text": "Text font de la unitat de traducció", "translate-save": "Desa ($1)", "translate-jssti-add": "Afegeix a la llista", "managemessagegroups": "Gestió del grup de missatges", @@ -210,8 +198,18 @@ "translate-smg-nochanges": "No hi ha canvis per processar.", "translate-smg-submit": "Penja els canvis per al seu processament", "translate-smg-submitted": "Les definicions dels missatges s'han actualitzat. Els canvis estàn sent processats al rerefons.", + "translate-smg-more": "Hi haurà més canvis per processar després d'enviar aquests canvis.", "translate-smg-left": "Contingut del missatge al wiki", "translate-smg-right": "Canvis entrants", + "translate-smg-rename-select": "Selecciona", + "translate-smg-rename-cancel": "Cancel·la", + "translate-smg-rename-search": "Cerca un missatge coincident...", + "translate-smg-rename-select-err": "Selecciona un missatge per a ser rebatejat", + "translate-smg-rename-no-msg": "No s'ha trobat cap missatge.", + "translate-smg-rename-new": "Afegeix com a nou...", + "translate-smg-rename-rename": "Afegeix com a nou nom de...", + "translate-smg-rename-dialog-title": "Selecciona un rebateig coincident per a $1", + "translate-smg-changeset-modified": "Un altre usuari o procés ha modificat aquest conjunt de canvis. Els teus canvis no es poden desar perquè eliminaria els seus canvis. Recarrega la pàgina per a veure els darrers canvis.", "translate-manage-import-diff": "Missatge $1 | Accions: $2", "translate-manage-import-new": "Nou missatge $1", "translate-manage-import-deleted": "Missatge eliminat $1", @@ -219,13 +217,18 @@ "translate-manage-action-conflict": "Importar i marcar per revisar", "translate-manage-action-ignore": "Ignora", "translate-manage-action-fuzzy": "Importa i marca per revisar les traduccions", + "translate-manage-action-rename-fuzzy": "Rebateja i traduccions ambigües", + "translate-manage-action-rename": "Canvia el nom", + "translate-manage-action-ignore-change": "Ignora el canvi en la traducció", "translate-manage-nochanges": "No hi ha canvis en les definicions dels missatges per a aquest grup.", "translate-manage-nochanges-other": "No hi han canvis en aquest idioma.\n\nUtilitzeu l'enllaç de sota per tornar als detalls del grup.", "translate-manage-inconsistent": "Detectada una inconsistència en la \nsol· licitud.\nSiusplau comproveu els canvis i proveu-ho una altra vegada.\nDetalls: $1 .", "translate-manage-toolong": "El temps màxim de processament de $1 s'ha excedit {{PLURAL:$1|segon|segons}} \nSiusplau reintroduiu el formulari per continuar el processament.", "translate-manage-import-summary": "Important una nova versió des d'una font externa", + "translate-manage-import-rename-summary": "Rebatejat en font externa", "translate-manage-conflict-summary": "Important una nova versió des d'una font externa.\nSiusplau, comproveu-ho.", "translate-manage-submit": "Executa", + "translate-manage-intro-other": "A continuació hi ha una llista de canvis de traducció en la llengua $1.\nReviseu els canvis i trieu una acció que voleu realitzar en cada actualització.\nSi trieu ignorar els canvis, l'acció només serà temporal.", "translate-manage-import-ok": "Importat: $1", "translate-manage-import-done": "S'ha completat la importació!", "importtranslations": "Importa traduccions", @@ -237,7 +240,6 @@ "translate-import-err-no-such-file": "El fitxer $1no existeix o no s'ha carregat localment.", "translate-import-err-stale-group": "El grup de missatges al qual aquest fitxer pertany no existeix.", "translate-import-err-no-headers": "Aquest no és un fitxer Gettext ben formatat en el format d’extensió del Translate:\n\nNo s’ha pogut determinar el grup de missatges i l’idioma des dels encapçalaments.", - "translate-import-err-warnings": "El fitxer no està correctament formatejat.\nAssegureu-vos que el vostre editor no elimini els camps msgctxt.\nDetalls: $1", "translate-js-summary": "Resum:", "translate-js-save": "Desa", "translate-js-next": "Desa i passa al següent", @@ -258,6 +260,7 @@ "translate-documentation-language": "Documentació del missatge", "translate-searchprofile": "Traduccions", "translate-searchprofile-tooltip": "Cerca a totes les traduccions", + "translate-searchprofile-note": "Hi ha més opcions de cerca disponibles a la [$1 cerca de traduccions].", "translate-search-languagefilter": "Filtra per idioma:", "translate-search-nofilter": "Sense filtrat", "log-name-translationreview": "Historial de revisió de la traducció", @@ -278,7 +281,7 @@ "translate-workflowgroup-label": "Estats dels fluxs de treball", "translate-dynagroup-recent-label": "Traduccions recents", "translate-dynagroup-recent-desc": "Aquest grup de missatges mostra totes les traduccions recents a aquest idioma.\nEl més útil per a les tasques de revisió.", - "translate-dynagroup-additions-label": "Adicions recents", + "translate-dynagroup-additions-label": "Addicions recents", "translate-dynagroup-additions-desc": "Aquest grup de missatges mostra els missatges nous i els que han estat canviats", "translate-msggroupselector-projects": "Grup de missatges", "translate-msggroupselector-search-placeholder": "Cerca als grups", @@ -316,8 +319,8 @@ "tux-editor-need-more-help": "Necessiteu més ajuda?", "tux-editor-ask-help": "Demaneu més informació", "tux-editor-tm-match": "coincidència del $1%", - "tux-warnings-more": "{{PLURAL:$1|$1 més}}", - "tux-warnings-hide": "amaga", + "tux-notices-more": "{{PLURAL:$1|$1 més}}", + "tux-notices-hide": "amaga", "tux-editor-save-failed": "Error en desar la traducció : $1", "tux-editor-n-uses": "utilitzat $1 {{PLURAL:$1|vegada|vegades}}", "tux-editor-message-desc-more": "Mostra'n més", @@ -330,8 +333,8 @@ "tux-proofread-action-tooltip": "Marca-ho com a revisat", "tux-proofread-edit-label": "Edita-ho", "tux-editor-page-mode": "Pàgina", - "tux-editor-outdated-warning": "Aquesta traducció potser necessita ser actualitzada.", - "tux-editor-outdated-warning-diff-link": "Mostra les diferències", + "tux-editor-outdated-notice": "Aquesta traducció potser necessita ser actualitzada.", + "tux-editor-outdated-notice-diff-link": "Mostra les diferències", "tux-editor-doc-editor-placeholder": "Documetació del missatge", "tux-editor-doc-editor-save": "Guarda la documentació", "tux-editor-doc-editor-cancel": "Cancel·la", @@ -373,6 +376,8 @@ "translate-statsbar-tooltip": "$1% traduït, $2% revisat", "translate-statsbar-tooltip-with-fuzzy": "$1% traduït, $2 % revisat, $3% desfasat", "translate-search-more-groups-info": "$1 {{PLURAL:$1|grup|grups}} més", - "translate-ulsdep-title": "Error de configuració", - "tux-nojs": "Aquesta eina no funciona sense JavaScript. El JavaScript està inhabilitat, no funciona o el navegador no el permet." + "translate-syntax-error": "La traducció conté errors de sintaxi", + "tux-session-expired": "Jo no teniu la sessió iniciada. Inicieu la sessió en una altra pestanya. Alternativament, feu una còpia de les traduccions no desades, inicieu la sessió, torneu a la pàgina i torneu a introduir les traduccions.", + "tux-nojs": "Aquesta eina no funciona sense JavaScript. El JavaScript està inhabilitat, no funciona o el navegador no el permet.", + "specialpages-group-translation": "Traducció" } diff --git a/MLEB/Translate/i18n/core/cdo.json b/MLEB/Translate/i18n/core/cdo.json index 95e42165..b39bb1e3 100644 --- a/MLEB/Translate/i18n/core/cdo.json +++ b/MLEB/Translate/i18n/core/cdo.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "唐吉訶德的侍從", - "Davidzdh" + "Davidzdh", + "唐吉訶德的侍從" ] }, "translate-pref-editassistlang-help": "使逗號來分隔語言代碼。敆汝翻譯其辰候,會同時顯示茲幾隻語言其訊息。 預設會使汝其語言。", diff --git a/MLEB/Translate/i18n/core/ce.json b/MLEB/Translate/i18n/core/ce.json index 56312b9f..009d9af2 100644 --- a/MLEB/Translate/i18n/core/ce.json +++ b/MLEB/Translate/i18n/core/ce.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Sasan700", - "Умар", - "Исмаил Садуев" + "Исмаил Садуев", + "Умар" ] }, "translate": "Гоч", @@ -30,8 +30,8 @@ "translate-page-showing": "Гайтина хаамаш $1 тӀера $2 кхаччалц ($3 чура).", "translate-page-showing-all": "Ара баьккхина $1 {{PLURAL:$1|хаам}}.", "translate-page-showing-none": "Гайта хаамаш бац.", - "translate-next": "тӀаьхьа йогӀу агӀо", - "translate-prev": "хьалха йоьду агӀо", + "translate-next": "рогӀера агӀо", + "translate-prev": "хьалхара агӀо", "translate-page-description-legend": "Тобанах хаам", "translate-page-description-hasoptional-open": "Кхин тӀе хаамаш гайта.", "translate-page-edit": "Нисъе", @@ -46,26 +46,8 @@ "translate-edit-warnings": "ДӀахаийтар кхочуш гоч йин ца хилар", "translate-edit-tmmatch": "$1% цхьаьнадогӀуш", "translate-edit-askpermission": "Бакъо яккха", - "translate-magic-pagename": "Къоргера MediaWiki гочяр", - "translate-magic-module": "Модуль:", - "translate-magic-submit": "Арайаккха", - "translate-magic-cm-export": "Экспорт ян", - "translate-magic-nothing-to-export": "ХӀума цаоьшу экспорт ян.", - "translate-magic-cm-to-be": "Хийла еза", - "translate-magic-cm-current": "ХӀинцлера", - "translate-magic-cm-original": "ДӀайолалун", - "translate-magic-cm-comment": "Билгалдаккхар:", - "translate-magic-cm-save": "Ӏалашдан", - "translate-magic-cm-updatedusing": "Карлаяьккхина [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] гӀоьнца", - "translate-magic-cm-savefailed": "Ӏалашъян цаелира", - "translate-magic-special": "Белхан агӀонийн псевдонимаш", - "translate-magic-words": "Бозбуунчаллин дешнаш", - "translate-magic-namespace": "ЦӀерийн меттигаш", - "translate-magic-notsaved": "Хьан нисдар дӏайазъдина дац!", - "translate-magic-errors": "Дехар до, {{PLURAL:$1|1=хӀара гӀалат|хӀара гӀалаташ}} нисдар гочдар чохь:", - "translate-magic-saved": "Хийцамаш кхиамца Ӏалашбина.", - "translate-checks-parameters": "{{PLURAL:$2|1=Параметр лелош яц|Параметраш лелош яц}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|1=Евзаш йоцу параметр|Евзаш йоцу параметраш}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|1=Параметр лелош яц|Параметраш лелош яц}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|1=Евзаш йоцу параметр|Евзаш йоцу параметраш}}:\n$1", "translate-checks-balance": "Елла а, дӀакъовла а {{PLURAL:$2|къовларш}} нийса яц:\n$1", "translate-checks-links": "{{PLURAL:$2|1=Хьалхара хьажорго халонаш йо|Хьалхара хьажоргаш халонаш йо}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|$2 хьажоргаш яц}}:\n$1", @@ -102,7 +84,7 @@ "translate-statsf-count-registrations": "Керла декъашхой", "translate-statsf-count-reviews": "Гочдаре хьажар", "translate-statsf-count-reviewers": "Хьажархой", - "translate-statsf-submit": "Хьалха хьажар", + "translate-statsf-submit": "Хьалххе хьажар", "translate-tag-page-desc": "Вики-агӀонаш гочяр [[$2|$1]].", "translate-sidebar-alltrans": "Кхечу меттанашкахь", "translations": "Массо а гочдарш", @@ -129,7 +111,7 @@ "translate-ls-noempty": "Ма гайта юьззина гочянза хаамийн тобанаш", "translate-language": "Мотт", "translate-total": "Хаам", - "translate-untranslated": "Гочянзарш", + "translate-untranslated": "Гочянза", "translate-percentage-complete": "Кхочушдина", "translate-percentage-fuzzy": "Ширъелла", "translate-languagestats-overall": "Массо тобанийн чура хаамаш", @@ -157,20 +139,20 @@ "translate-smg-submit": "ДӀабахьийта хийцамаш кечбан", "translate-manage-import-new": "Керла хаам $1", "translate-manage-action-import": "Импорт ян", - "translate-manage-action-ignore": "Игнор ян", + "translate-manage-action-ignore": "Тергал ца дан", "translate-manage-submit": "Кхочушдé", "translate-manage-import-ok": "Импортйина: $1", "translate-manage-import-done": "Импортйина йаьлла!", "importtranslations": "Гочдарийн импорт", - "translate-import-from-local": "Чуяккха локальни файл:", + "translate-import-from-local": "Чуяккха локалан файл:", "translate-import-load": "Файл чуяккхар", "translate-import-err-dl-failed": "Цатарло чуяккха файл:\n$1", "translate-import-err-ul-failed": "Цатарло чуяккха файл", "translate-import-err-invalid-title": "Билгалйина файлан цӀе $1 нийса яц.", - "translate-import-err-no-such-file": "Файл $1 яц я локальни чуяккхина яц.", + "translate-import-err-no-such-file": "Файл $1 яц я локалан чуяьккхина яц.", "translate-js-summary": "Цунах лаьцна:", "translate-js-save": "Ӏалашъян", - "translate-js-next": "Ӏалашйин алла важа", + "translate-js-next": "Ӏалашйина схьаелла рогӀераниг", "translate-js-history": "Гочан истори", "translate-js-support": "Хаттар далар", "translate-js-support-unsaved-warning": "Ӏалашданза гочдарш ду.", @@ -203,10 +185,10 @@ "translate-msggroupselector-view-subprojects": "{{PLURAL:$1|1=Цхьаъ бухара тоба|$1 бухара тобанаш}}", "tux-languageselector": "Гочдар тӀе", "tux-tab-all": "Массо", - "tux-tab-untranslated": "Гочянзарш", + "tux-tab-untranslated": "Гочянза", "tux-tab-outdated": "Ширъелларш", "tux-tab-translated": "Гочйинарш", - "tux-tab-unproofread": "Талламбанзарш", + "tux-tab-unproofread": "Талланзарш", "tux-edit": "Нисдар", "tux-status-optional": "ТӀехь дац", "tux-status-fuzzy": "Ширъелла", @@ -215,11 +197,11 @@ "tux-status-saving": "Ӏалашъеш ю...", "tux-status-unsaved": "Ӏалаш цайина", "tux-editor-placeholder": "Хьан гочдар", - "tux-editor-editsummary-placeholder": "ТӀехь йоцу коммент", + "tux-editor-editsummary-placeholder": "ТӀехьйоцу коммент", "tux-editor-paste-original-button-label": "Дилла дӀадолалун йоза", "tux-editor-discard-changes-button-label": "Цаоьшу хийцамаш", "tux-editor-save-button-label": "Ӏалаш де гоч динарг", - "tux-editor-skip-button-label": "ТӀаьхьа догӀург", + "tux-editor-skip-button-label": "РогӀера", "tux-editor-cancel-button-label": "Цаоьшу", "tux-editor-confirm-button-label": "Бакъде гочдар", "tux-editor-shortcut-info": "ТӀетаӀе «$1» Ӏалашъян я «$2» таӀа яй дехьагӀо.", @@ -230,8 +212,8 @@ "tux-editor-need-more-help": "ГӀо оьшу?", "tux-editor-ask-help": "Деха кхин тӀедиллинарг", "tux-editor-tm-match": "$1% цхьаьнадогӀуш", - "tux-warnings-more": "{{PLURAL:$1|кхин $1}}", - "tux-warnings-hide": "къайлаяккха", + "tux-notices-more": "{{PLURAL:$1|кхин $1}}", + "tux-notices-hide": "къайлаяккха", "tux-editor-save-failed": "Ӏалашъян цаделира: $1", "tux-editor-n-uses": "{{PLURAL:$1|лелина}} $1", "tux-editor-message-desc-more": "Гайта мадарра", @@ -244,8 +226,8 @@ "tux-proofread-action-tooltip": "Теллина сана билгалъе", "tux-proofread-edit-label": "Хийцам бе", "tux-editor-page-mode": "АгӀо", - "tux-editor-outdated-warning": "ХӀара гочдар карладаккха дезаш хила мега.", - "tux-editor-outdated-warning-diff-link": "Схьагайта башхаллонаш", + "tux-editor-outdated-notice": "ХӀара гочдар карладаккха дезаш хила мега.", + "tux-editor-outdated-notice-diff-link": "Схьагайта башхаллонаш", "tux-editor-doc-editor-placeholder": "хаамийн документаци", "tux-editor-doc-editor-save": "Ӏалашъе документаци", "tux-editor-doc-editor-cancel": "Цаоьшу", @@ -277,13 +259,14 @@ "tux-editor-close-tooltip": "ДӀачӀагӀа", "tux-editor-expand-tooltip": "Схьаяста", "tux-editor-collapse-tooltip": "ДӀахьарчо", + "tux-editor-message-tools-show-editor": "Вики-йоза редактор тӀе гӀо", "tux-editor-message-tools-history": "Истори", "tux-editor-message-tools-delete": "ДӀаяккха", "tux-editor-message-tools-translations": "Массо а гочдарш", + "tux-editor-message-tools-linktothis": "ХӀокху хаамна тӀе хьажорг", "tux-editor-loading": "Чуйолуш…", "translate-search-more-languages-info": "кхин $1 {{PLURAL:$1|мотт|меттанаш}}", "translate-statsbar-tooltip": "$1% гочйинарш, $2% хьаьжнаш", "translate-statsbar-tooltip-with-fuzzy": "$1% гочйинарш, $2% хьаьжнаш, $3% шираеларш", - "translate-search-more-groups-info": "кхин $1 {{PLURAL:$1|тоба}}", - "translate-ulsdep-title": "Конфигурацин гӀалат" + "translate-search-more-groups-info": "кхин $1 {{PLURAL:$1|тоба}}" } diff --git a/MLEB/Translate/i18n/core/ceb.json b/MLEB/Translate/i18n/core/ceb.json index 89577066..75cf5303 100644 --- a/MLEB/Translate/i18n/core/ceb.json +++ b/MLEB/Translate/i18n/core/ceb.json @@ -1,8 +1,10 @@ { "@metadata": { "authors": [ + "BaRaN6161 TURK", "Bentong Isles" ] }, + "translate-taction-translate": "Gihubad", "translate-documentation-language": "Tabang sa paghubad" } diff --git a/MLEB/Translate/i18n/core/ckb.json b/MLEB/Translate/i18n/core/ckb.json index 9b63f270..e51a3184 100644 --- a/MLEB/Translate/i18n/core/ckb.json +++ b/MLEB/Translate/i18n/core/ckb.json @@ -3,12 +3,14 @@ "authors": [ "Asoxor", "Calak", + "Cwtiyar", + "Lost Whispers", "Marmzok", "Muhammed taha", - "رزگار", "Sarchia", - "Lost Whispers", - "Épine" + "Épine", + "ئارام بکر", + "رزگار" ] }, "translate": "وەرگێڕان", @@ -22,7 +24,7 @@ "translate-page-group": "گرووپ", "translate-page-language": "زمان", "translate-page-limit": "سنوور", - "translate-page-limit-option": "$1 {{PLURAL:$1|پەیام|پەیام}} لەھەر پەڕەیکدا", + "translate-page-limit-option": "$1 {{PLURAL:$1|پەیام|پەیام}} لەھەر پەڕەیەکدا", "translate-submit": "گەڕان", "translate-page-navigation-legend": "ڕێدۆزی", "translate-page-showing": "نیشاندانی پەیامەکانی $1 تا $2 لە کۆی $3.", @@ -42,22 +44,8 @@ "translate-edit-in-other-languages": "پەیام لە زمانەکانی تردا", "translate-edit-warnings": "ئاگادارییەکان سەبارەت بە وەرگێڕانی ناتەواو", "translate-edit-tmmatch": "$1% یەکسانی", - "translate-magic-module": "Module:", - "translate-magic-submit": "بەدەستی بهێنە", - "translate-magic-cm-export": "هەناردن", - "translate-magic-nothing-to-export": "هیچ شتێک نیە بۆ هەناردن.", - "translate-magic-cm-current": "هەنووکە", - "translate-magic-cm-original": "بنەڕەتی", - "translate-magic-cm-comment": "بۆچوون:", - "translate-magic-cm-save": "پاشەکەوت", - "translate-magic-cm-savefailed": "پاشەکەوت‌کردن سەرکەوتوو نەبوو", - "translate-magic-words": "وشە سیحراوییەکان", - "translate-magic-notsaved": "دەستکارییەکەت پاشەکەوت نەکرا!", - "translate-magic-errors": "تکایە ئەم {{PLURAL:$1|ھەڵە|ھەڵانە}}ی خوارەوە چاک بکەوە لە وەرگێڕاندا :", - "translate-magic-saved": "گۆڕانکاریەکانت بە سەرکەوتووی پاشەکەوت کرا.", - "translate-checks-parameters": "ئەم {{PLURAL:$2|پارامەترە بەکارنەھێنراوە|پارامەترانە بەکارنەھێنراون}} :\n$1", - "translate-checks-parameters-unknown": "ئەم {{PLURAL:$2|پارامەترە نەناسراوە|پارامەترانە نەناسراون}} :\n$1", - "translate-pref-nonewsletter": "ئی‌مێڵی هەواڵ‌نامە بۆ من مەنێرە", + "translate-checks-parameters": "ئەم {{PLURAL:$2|پارامەترە بەکارنەھێنراوە|پارامەترانە بەکارنەھێنراون}} :\n$1", + "translate-checks-parameters-unknown": "ئەم {{PLURAL:$2|پارامەترە نەناسراوە|پارامەترانە نەناسراون}} :\n$1", "prefs-translate": "هەڵبژاردەکانی وەرگێڕان", "right-translate": "دەستکاری کردن بە کەڵک وەرگرتن لە ڕووکاری وەرگێڕانەوە", "translate-rcfilters-translations": "وەرگێڕانەکان", @@ -113,14 +101,14 @@ "supportedlanguages-recenttranslations": "دوایین وەرگێڕانەکان", "supportedlanguages-count": "$1 {{PLURAL:$1|زمان|زمانەکان}} بەگشتی.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|دەستکاری}} - دوایین دەستکاری $3 {{PLURAL:$3|ڕۆژ}} لەمە پێش", - "translate-save": "پاشەکەوتی بکە ($1)", + "translate-save": "بڵاویبکەرەوە ($1)", "translate-jssti-add": "زیادکردن بۆ سەر لیست", "translate-manage-import-diff": "پەیام $1 | کردارەکان: $2", "translate-manage-import-new": "پەیامی نوێ $1", "translate-manage-action-import": "هاوردن", "translate-js-summary": "پوختە:", "translate-js-save": "پاشەکەوتی بکە", - "translate-js-next": "پاشەکەتی بکە و دواتر بکەوە", + "translate-js-next": "پاشەکەوتی بکە و دواتر بکەوە", "translate-js-skip": "باز ببە بۆ دواتر", "translate-js-history": "مێژووی وەرگێڕان", "translate-js-support": "پرسیار بکە", @@ -141,7 +129,8 @@ "tux-tab-translated": "وەرگێڕدراو", "tux-edit": "دەستکاری", "tux-status-translated": "وەرگێڕدراو", - "tux-status-saving": "دەپارێزرێت...", + "tux-status-saving": "خەریکە بڵاو دەکرێتەوە...", + "tux-status-unsaved": "بڵاونەکراوە", "tux-editor-placeholder": "وەرگێڕانەکانت", "tux-editor-paste-original-button-label": "دەقی بنەڕەتی دابنێ", "tux-editor-save-button-label": "پاشەکەوتکردنی وەرگێڕانەکە", @@ -149,8 +138,8 @@ "tux-editor-cancel-button-label": "ھەڵوەشاندنەوە", "tux-editor-suggestions-title": "پێشنیارەکان", "tux-editor-in-other-languages": "بە زمانەکانی تر", - "tux-warnings-more": "{{PLURAL:$1|$1 زیاتر}}", - "tux-warnings-hide": "بیشارەوە", + "tux-notices-more": "{{PLURAL:$1|$1 زیاتر}}", + "tux-notices-hide": "بیشارەوە", "tux-editor-n-uses": "$1 جار بەکارھاتووە", "tux-editor-message-desc-more": "زیاتر ببینە", "tux-editor-message-desc-less": "کەمتر ببینە", @@ -159,7 +148,8 @@ "tux-editor-translate-mode": "پێرست", "tux-proofread-edit-label": "دەستکاری", "tux-editor-page-mode": "پەڕە", - "tux-editor-outdated-warning-diff-link": "جیاوازییەکان نیشان بدە", + "tux-editor-outdated-notice-diff-link": "جیاوازییەکان نیشان بدە", + "tux-editor-doc-editor-save": "بەڵگەنامە بڵاوبکەرەوە", "tux-editor-doc-editor-cancel": "ھەڵوەشاندنەوە", "tux-messagetable-loading-messages": "بارکردنی {{PLURAL:$1|پەیام|پەیامەکان}}...", "tux-message-filter-result": "$1 {{PLURAL:$1|ئاکام}} دۆزرایەوە بۆ «$2»", diff --git a/MLEB/Translate/i18n/core/cnr-latn.json b/MLEB/Translate/i18n/core/cnr-latn.json new file mode 100644 index 00000000..6e588934 --- /dev/null +++ b/MLEB/Translate/i18n/core/cnr-latn.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Bellatrix10" + ] + }, + "translate-documentation-language": "Dokumentacija poruke" +} diff --git a/MLEB/Translate/i18n/core/cop.json b/MLEB/Translate/i18n/core/cop.json new file mode 100644 index 00000000..14ca883f --- /dev/null +++ b/MLEB/Translate/i18n/core/cop.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Bloomaround" + ] + }, + "translate-documentation-language": "ⲗⲁϫⲱⲙ ⲛ̀ⲟⲩⲱ" +} diff --git a/MLEB/Translate/i18n/core/cs.json b/MLEB/Translate/i18n/core/cs.json index 0109045d..9ec8f9b1 100644 --- a/MLEB/Translate/i18n/core/cs.json +++ b/MLEB/Translate/i18n/core/cs.json @@ -2,18 +2,19 @@ "@metadata": { "authors": [ "Chmee2", + "Clon", "Danny B.", + "Dvorapa", + "Ilimanaq29", "Li-sung", "Littledogboy", + "Marek Pavlica", + "Martin Urbanec", "Matěj Grabovský", - "Mormegil", - "Vks", "Matěj Suchánek", + "Mormegil", "Utar", - "Clon", - "Marek Pavlica", - "Dvorapa", - "Ilimanaq29" + "Vks" ] }, "translate": "Překládání", @@ -62,31 +63,16 @@ "translate-use-suggestion": "Nahradit stávající překlad tímto návrhem.", "translate-edit-nopermission": "K překládání zpráv potřebujete překladatelská práva.", "translate-edit-askpermission": "Získat oprávnění", - "translate-magic-pagename": "Rozšířená možnost překladu MediaWiki", - "translate-magic-help": "Můžete překládat aliasy speciálních stránek, kouzelná slova a názvy jmenných prostorů.\n\nAliasy speciálních stránek a kouzelná slova mohou mít více překladů.\nPřeklady se oddělují čárkou (,).\nNázvy jmenných prostorů mohou mít jen jeden překlad.\n\nV překladech jmenných prostorů se $1 talk chová zvláštně.\n$1 se nahradí názvem projektu (např. {{ns:project_talk}}).\nPokud není ve vašem jazyce možné vytvořit smysluplný výraz bez změny názvu projektu, dejte nám vědět na stránce [[Support]].\n\nAbyste mohli ukládat změny, musíte být překladatel.\nZměny se neuloží, dokud nekliknete na tlačítko „Uložit změny“ dole.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Zobrazit", - "translate-magic-cm-export": "Exportovat", - "translate-magic-nothing-to-export": "Není co exportovat.", - "translate-magic-cm-to-be": "nové", - "translate-magic-cm-current": "současné", - "translate-magic-cm-original": "původní", - "translate-magic-cm-comment": "Komentář:", - "translate-magic-cm-save": "Uložit", - "translate-magic-cm-updatedusing": "Aktualizovat pomocí [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Uložení se nepovedlo", - "translate-magic-special": "Alternativní jména speciálních stránek", - "translate-magic-words": "Kouzelná slůvka", - "translate-magic-namespace": "Názvy jmenných prostorů", - "translate-magic-notsaved": "Vaše editace nebyla uložena!", - "translate-magic-errors": "Opravte následující {{PLURAL:$1|chybu|chyby}} v překladech:", - "translate-magic-saved": "Vaše změny byly úspěšně uloženy.", - "translate-checks-parameters": "Následující {{PLURAL:$2|parametr není použit|parametry nejsou použity}}:\n$1", - "translate-checks-parameters-unknown": "Následující {{PLURAL:$2|parametr není definován|parametry nejsou definovány}}:\n$1", + "exporttranslations": "Exportovat překlady", + "translate-export-form-format": "Formát", + "translate-export-invalid-format": "Prosím, specifikujte platný formát.", + "translate-export-not-supported": "Export překladů není podporován.", + "translate-export-format-notsupported": "Specifikovaný formát není podporovaný touto skupinou zpráv.", + "translate-checks-parameters": "Následující {{PLURAL:$2|parametr není použit|parametry nejsou použity}}:\n$1", + "translate-checks-parameters-unknown": "Následující {{PLURAL:$2|parametr není definován|parametry nejsou definovány}}:\n$1", "translate-checks-balance": "Následující {{PLURAL:$2|typ závorek není správně spárován|typy závorek nejsou správně spárovány}}:\n$1", "translate-checks-links": "Následující {{PLURAL:$2|odkaz je problematický|odkazy jsou problematické}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Následující odkaz|Následující $2 odkazy|Následujících $2 odkazů}} chybí:\n$1", - "translate-checks-xhtml": "Opravte následující {{PLURAL:$2|značku|značky}}:\n$1", "translate-checks-plural": "Zdroj používá {{PLURAL:}}, ale překlad nikoliv.", "translate-checks-plural-forms": "Do {{PLURAL:}} {{PLURAL:$1|byla vložena jedna varianta|byly vloženy $1 varianty|bylo vloženo $1 variant}}, ale {{PLURAL:$2|podporována je pouze jedna|podporovány jsou pouze $2|podporováno je pouze $2}} (kromě variant 0= a 1=).", "translate-checks-plural-dupe": "Na konci {{PLURAL:}} jsou uvedeny duplicitní varianty. Místo {{PLURAL:$1|náměstí|náměstí|náměstí}} má být zadáno jen {{PLURAL:$1|náměstí}}.", @@ -96,7 +82,6 @@ "translate-checks-parametersnotequal": "Počet parametrů je {{PLURAL:$1|$1}}; měl by být {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 má nesprávný formát.", "translate-checks-fudforum-syntax": "V tomto projektu musíte namísto $2 používat $1.", - "translate-pref-nonewsletter": "Neposílat mi novinky emailem", "translate-pref-editassistlang": "Pomocné jazyky:", "prefs-translate": "Nastavení pro překládání", "translate-pref-editassistlang-help": "Seznam kódů jazyků oddělených čárkami.\nPřeklady zvolené zprávy do těchto jazyků jsou zobrazeny při překládání.\nImplicitní seznam (''default'') závisí na vašem jazyce.", @@ -194,6 +179,7 @@ "supportedlanguages-summary": "Na této stránce se nachází seznam všech jazyků podporovaných na {{grammar:6sg|{{SITENAME}}}}\nspolu se jmény překladatelů, kteří na jazyku pracují.\nČím více editací překladatel poskytnul, tím větší se jeho jméno zobrazuje.\nBarva podtržení znázorňuje, jak nedávno zde byl překladatel aktivní.", "supportedlanguages-colorlegend": "Legenda k barvám: Poslední překlad před $1 dny.", "supportedlanguages-portallink": "[$1] $2 – $3", + "supportedlanguages-sqlite-error": "SQLite není podporován", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Překladatel|Překladatelka}}|Překladatelé}}: $1", "supportedlanguages-recenttranslations": "nedávné překlady", "supportedlanguages-count": "Celkem $1 {{PLURAL:$1|jazyk|jazyky|jazyků}}.", @@ -235,7 +221,6 @@ "translate-import-err-no-such-file": "Soubor $1 neexistuje nebo nebyl načten lokálně.", "translate-import-err-stale-group": "Skupina zpráv, do které tento soubor patří, neexistuje.", "translate-import-err-no-headers": "Soubor není platným souborem ve formátu Gettext pro rozšíření Translate:\nZ hlaviček souboru se nepodařilo skupinu zpráv a jazyk.", - "translate-import-err-warnings": "Soubor nemá platný formát.\nUjistěte se, že váš editor neodstraňuje pole msgctxt.\nPodrobnosti: $1", "translate-js-summary": "Shrnutí:", "translate-js-save": "Uložit", "translate-js-next": "Uložit a otevřít další", @@ -311,8 +296,8 @@ "tux-editor-need-more-help": "Potřebujete další pomoc?", "tux-editor-ask-help": "Požádejte o více informací", "tux-editor-tm-match": "$1% shoda", - "tux-warnings-more": "{{PLURAL:$1|$1 další|$1 další|$1 dalších}}", - "tux-warnings-hide": "skrýt", + "tux-notices-more": "{{PLURAL:$1|$1 další|$1 další|$1 dalších}}", + "tux-notices-hide": "skrýt", "tux-editor-save-failed": "Ukládání překladu se nezdařilo: $1", "tux-editor-n-uses": "použito {{PLURAL:$1|jednou|$1krát}}", "tux-editor-message-desc-more": "Zobrazit více", @@ -325,8 +310,8 @@ "tux-proofread-action-tooltip": "Označit jako zkontrolované", "tux-proofread-edit-label": "Editovat", "tux-editor-page-mode": "Stránka", - "tux-editor-outdated-warning": "Tento překlad možná potřebuje aktualizaci.", - "tux-editor-outdated-warning-diff-link": "Zobrazit rozdíly", + "tux-editor-outdated-notice": "Tento překlad možná potřebuje aktualizaci.", + "tux-editor-outdated-notice-diff-link": "Zobrazit rozdíly", "tux-editor-doc-editor-placeholder": "Dokumentace ke zprávě", "tux-editor-doc-editor-save": "Uložit dokumentaci", "tux-editor-doc-editor-cancel": "Storno", @@ -368,8 +353,7 @@ "translate-statsbar-tooltip": "$1 % přeloženo, $2 % zkontrolováno", "translate-statsbar-tooltip-with-fuzzy": "$1 % přeloženo, $2 % zkontrolováno, $3 % zastaralých", "translate-search-more-groups-info": "$1 {{PLURAL:$1|další skupina|další skupiny|dalších skupin}}", - "translate-ulsdep-title": "Chyba konfigurace", - "translate-ulsdep-body": "Rozšíření Translate závisí na [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector rozšíření Universal Language Selector].", "tux-session-expired": "Již nejste přihlášen(a). Přihlaste se prosím v jiné záložce. Anebo si okopírujte neuložené překlady, přihlaste se, vraťte se na tuto stránku a zadejte je znovu.", - "tux-nojs": "Tento nástroj nefunguje bez JavaScriptu. JavaScript je buď vypnut, nebo zkolaboval anebo není podporován tento prohlížeč." + "tux-nojs": "Tento nástroj nefunguje bez JavaScriptu. JavaScript je buď vypnut, nebo zkolaboval anebo není podporován tento prohlížeč.", + "specialpages-group-translation": "Překlad" } diff --git a/MLEB/Translate/i18n/core/cv.json b/MLEB/Translate/i18n/core/cv.json index 03643149..9e1beea9 100644 --- a/MLEB/Translate/i18n/core/cv.json +++ b/MLEB/Translate/i18n/core/cv.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Chuvash2014", - "Chuvash" + "Chuvash", + "Chuvash2014" ] }, "translate": "Куçарни", diff --git a/MLEB/Translate/i18n/core/cy.json b/MLEB/Translate/i18n/core/cy.json index c752e49f..91345b55 100644 --- a/MLEB/Translate/i18n/core/cy.json +++ b/MLEB/Translate/i18n/core/cy.json @@ -51,35 +51,14 @@ "translate-use-suggestion": "Bydd y cynnig hwn yn disodli'r cyfieithiad cyfredol.", "translate-edit-nopermission": "Mae angen galluoedd cyfieithu arnoch i gyfieithu negeseuon.", "translate-edit-askpermission": "Cael caniatâd", - "translate-magic-pagename": "Cyfieithu MediaWiki Estynedig", - "translate-magic-help": "Mae modd cyfieithu arallenwau ar dudalennau arbennig, geiriau hud ac enwau parthau.\n\nMae modd cael mwy nag un cyfieithiad ar arallenw tudalen arbennig neu ar air hud.\nGwahenir cyfieithiadau gan goma (,).\nDim ond un cyfieithiad gall enw parth ei gael.\n\nGall cyfieithu enw parthau sgwrs y prosiect, sgwrs $1, fod yn waith cymhleth. Mae $1 yn cael ei ddisodli gan enw'r wefan (er enghraifft {{ns:project_talk}}).\nOs nad yw'n bosibl cyfieithu hwn yn ramadegol gywir heb dreiglo enw'r wefan neu ei newid mewn rhyw fodd, rhowch wybod ar [[Support]].\n\nMae angen i chi fod yn gyfieithydd er mwyn gallu rhoi newidiadau ar gadw.\nNi fydd y newidiadau yn cael eu rhoi ar gadw nes i chi bwyso'r botwm 'Cadwer' isod.", - "translate-magic-module": "Uned:", - "translate-magic-submit": "Cyrcher", - "translate-magic-cm-export": "Allforier", - "translate-magic-nothing-to-export": "Nid oes dim i'w allforio.", - "translate-magic-cm-to-be": "Darpar", - "translate-magic-cm-current": "Cyfredol", - "translate-magic-cm-original": "Gwreiddiol", - "translate-magic-cm-comment": "Sylw:", - "translate-magic-cm-save": "Cadw", - "translate-magic-cm-updatedusing": "Wedi ei ddiweddaru gan ddefnyddio [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Methodd yr ymgais i gadw", - "translate-magic-special": "Arallenwau ar dudalennau arbennig", - "translate-magic-words": "Geiriau hud", - "translate-magic-namespace": "Enwau'r parthau", - "translate-magic-notsaved": "Ni roddwyd eich golygiad ar gadw!", - "translate-magic-errors": "Byddwch gystal â chywiro' r {{PLURAL:$1|gwall|gwall|gwallau}} cyfieithu canlynol:", - "translate-magic-saved": "Rhoddwyd eich newidiadau ar gadw.", - "translate-checks-parameters": "Ni ddefnyddir y {{PLURAL:$2|paramedr|paramedr|paramedrau}} canlynol:\n$1", - "translate-checks-parameters-unknown": "Nid yw'r {{PLURAL:$2|paramedr|paramedr|paramedrau}} canlynol yn hysbys:\n$1", + "translate-checks-parameters": "Ni ddefnyddir y {{PLURAL:$2|paramedr|paramedr|paramedrau}} canlynol:\n$1", + "translate-checks-parameters-unknown": "Nid yw'r {{PLURAL:$2|paramedr|paramedr|paramedrau}} canlynol yn hysbys:\n$1", "translate-checks-balance": "Mae nifer y {{PLURAL:$2|cromfachau}} yn odrif, fel a ganlyn:\n$1", "translate-checks-links": "Ymddengys bod nam ar y {{PLURAL:$2|cyswllt|cyswllt|$2 gyswllt|$2 cyswllt|£2 chyswllt|$2 cyswllt}} canlynol:\n$1", "translate-checks-links-missing": "Mae'r {{PLURAL:$2|cyswllt|cyswllt|$2 gyswllt|$2 cyswllt|£2 chyswllt|$2 cyswllt}} canlynol yn eisiau:\n$1", - "translate-checks-xhtml": "Rhowch {{PLURAL:$2|tag|tag|tagiau}} cywir yn lle'r rhai canlynol:\n$1", "translate-checks-plural": "Mae'r gwreiddiol yn defnyddio {{PLURAL:}} ond nid y cyfieithiad.", "translate-checks-pagename": "Mae'r parth yn y cyfieithiad yn wahanol i'r parth yn y neges wreiddiol", "translate-checks-format": "Nid yw'r cyfieithiad yn gydnaws â'r gwreiddiol, ynteu mae cystrawen annilys ynddo: $1", - "translate-pref-nonewsletter": "Peidier ag anfon cylchlythyron e-bost ataf", "translate-pref-editassistlang": "Ieithoedd cynorthwyol:", "prefs-translate": "Dewisiadau cyfieithu", "translate-pref-editassistlang-help": "Rhestr coma-wahanedig o godau iaith.\nWrth gyfieithu neges, bydd cyfieithiadau ohono yn yr ieithoedd hyn i'w gweld.\nBydd y rhestr diofyn o ieithoedd yn dibynnu ar eich iaith chi.", @@ -187,7 +166,7 @@ "translate-gs-code": "Cod", "translate-gs-continent": "Cyfandir", "translate-gs-speakers": "Siaradwyr", - "translate-gs-score": "Sgôr", + "translate-gs-score": "Sgor", "translate-gs-multiple": "Mwy nag un", "translate-gs-count": "Nifer", "translate-gs-total": "Cyfanswm", @@ -228,5 +207,6 @@ "tux-editor-edit-desc": "Golygu'r nodiadau", "tux-editor-suggestions-title": "Awgrymiadau", "tux-editor-in-other-languages": "Mewn ieithoedd eraill", - "tux-editor-need-more-help": "Oes angen mwy o gymorth?" + "tux-editor-need-more-help": "Oes angen mwy o gymorth?", + "tux-notices-hide": "cuddio" } diff --git a/MLEB/Translate/i18n/core/da.json b/MLEB/Translate/i18n/core/da.json index 27355296..c7bb103b 100644 --- a/MLEB/Translate/i18n/core/da.json +++ b/MLEB/Translate/i18n/core/da.json @@ -10,8 +10,8 @@ "MGA73", "Nghtwlkr", "Peter Alberti", - "Sarrus", - "Saederup92" + "Saederup92", + "Sarrus" ] }, "translate": "Oversæt", @@ -63,31 +63,11 @@ "exporttranslations": "Eksporter oversættelser", "translate-export-form-format": "Format", "translate-export-not-supported": "Eksportering af oversættelser understøttes ikke.", - "translate-magic-pagename": "Udvidet MediaWiki-oversættelse", - "translate-magic-help": "Du kan oversætte specialsiders aliaser, magiske ord og navnerumsnavne.\n\nSpecialsiders aliaser og magiske ord kan have flere oversættelser.\nOversættelserne adskilles med komma (,).\nNavnerum kan kun have én oversættelse.\n\nOversættelse af projektdiskussionsnavnerummet $1 talk kan være kompliceret.\n$1 erstattes af projektets webstedsnavn (eksempelvis {{ns:project_talk}}).\nHvis det ikke er muligt på dit sprog, at danne en meningsgivende sætning uden at ændre webstedsnavnet, så giv os besked på [[Support]].\n\nDu skal være oversætter for at kunne gemme ændringer.\nÆndringerne gemmes ikke før du klikker på gem-knappen herunder.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Hent", - "translate-magic-cm-export": "Eksportér", - "translate-magic-nothing-to-export": "Der er intet at eksportere.", - "translate-magic-cm-to-be": "Skal være", - "translate-magic-cm-current": "Nuværende", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Kommentar:", - "translate-magic-cm-save": "Gem", - "translate-magic-cm-updatedusing": "Opdateret med [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Gemning mislykkedes", - "translate-magic-special": "Specialside-aliaser", - "translate-magic-words": "Magiske ord", - "translate-magic-namespace": "Navnerumsnavne", - "translate-magic-notsaved": "Din redigering er ikke gemt!", - "translate-magic-errors": "Ret venligst følgende {{PLURAL:$1|fejl|fejl}} i oversættelserne:", - "translate-magic-saved": "Dine ændringer er blevet gemt.", - "translate-checks-parameters": "Følgende {{PLURAL:$2|parameter|parametre}} bruges ikke:\n$1", - "translate-checks-parameters-unknown": "Følgende {{PLURAL:$2|parameter er ukendt|parametre er ukendte}}:\n$1", + "translate-checks-parameters": "Følgende {{PLURAL:$2|parameter|parametre}} bruges ikke:\n$1", + "translate-checks-parameters-unknown": "Følgende {{PLURAL:$2|parameter er ukendt|parametre er ukendte}}:\n$1", "translate-checks-balance": "Der er et ulige antal {{PLURAL:$2|parenteser|parenteser}}:\n$1", "translate-checks-links": "Følgende {{PLURAL:$2|henvisning er problematisk|$2 henvisninger er problematiske}}:\n$1", "translate-checks-links-missing": "Følgende {{PLURAL:$2|henvisning|$2 henvisninger}} mangler:\n$1", - "translate-checks-xhtml": "Erstat venligst følgende {{PLURAL:$2|tag|$2 tags}} med de korrekte:\n$1", "translate-checks-plural": "Originalen bruger {{PLURAL:}}, men oversættelsen gør det ikke.", "translate-checks-plural-forms": "{{PLURAL:}} fik {{PLURAL:$1|en form|$1 forme}}, men {{PLURAL:$2|kun en form|$2 forme}} er understøttet (fraregnet 0=- og 1=-forme).", "translate-checks-plural-dupe": "{{PLURAL:}} har en gentaget form til sidst. {{PLURAL:$1|får|får}} bør skrives som {{PLURAL:$1|får}}.", @@ -97,7 +77,7 @@ "translate-checks-parametersnotequal": "Antallet af parametre er {{PLURAL:$1|$1}}; det burde være {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 er fejlbehæftet.", "translate-checks-fudforum-syntax": "Brug $1 i stedet for $2 i dette projekt.", - "translate-pref-nonewsletter": "Send ikke e-mail-nyhedsbreve til mig", + "translate-checks-replacement": "Brug $2 i stedet for $1.", "translate-pref-editassistlang": "Hjælpesprog:", "prefs-translate": "Oversættelsesindstillinger", "translate-pref-editassistlang-help": "Kommasepareret liste med sprogkoder.\nOversættelsen af en besked til disse sprog vises når du oversætter.\nStandardlisten afhænger af dit sprog.", @@ -209,6 +189,8 @@ "translate-smg-more": "Der vil være flere ændringer at behandle efter indsendelse af disse ændringer.", "translate-smg-left": "Meddelelsesindhold i wiki", "translate-smg-right": "Indkommende ændringer", + "translate-smg-rename-select": "Vælg", + "translate-smg-rename-cancel": "Annullér", "translate-manage-import-diff": "Besked $1 | Handlinger: $2", "translate-manage-import-new": "Ny meddelelse $1", "translate-manage-import-deleted": "Slettet meddelelse $1", @@ -216,6 +198,7 @@ "translate-manage-action-conflict": "Importér og markér som forældet", "translate-manage-action-ignore": "Ignorér", "translate-manage-action-fuzzy": "Importer og markér som forældet", + "translate-manage-action-rename": "Omdøb", "translate-manage-nochanges": "Der er ingen ændringer i meddelelsesdefinitionerne for denne gruppe.", "translate-manage-nochanges-other": "Der var ingen ændringer til dette sprog.\nBrug linket nedenfor til at vende tilbage til visning af gruppedetaljer.", "translate-manage-inconsistent": "Opdagede en inkonsistens i anmodningen.\nTjek venligst for ændringer og prøv igen.\nDetaljer: $1.", @@ -235,10 +218,9 @@ "translate-import-err-no-such-file": "Fil $1 eksisterer ikke eller er ikke blevet uploadet lokalt.", "translate-import-err-stale-group": "Beskedgruppen, som denne fil tilhører, findes ikke.", "translate-import-err-no-headers": "Filen er ikke en velformateret Gettext-fil i Oversæt-udvidelsens format:\nKan ikke bestemme gruppe og sprog fra fil-headere.", - "translate-import-err-warnings": "Filen er ikke velformateret.\nSørg for, at din editor ikke fjerner msgctxt-felter.\nDetaljer: $1", "translate-js-summary": "Beskrivelse:", - "translate-js-save": "Gem", - "translate-js-next": "Gem og åben næste", + "translate-js-save": "Offentliggør", + "translate-js-next": "Offentliggør og åben næste", "translate-js-skip": "Gå til næste", "translate-js-history": "Oversættelseshistorik", "translate-js-support": "Stil spørgsmål", @@ -295,8 +277,8 @@ "tux-status-fuzzy": "Forældet", "tux-status-proofread": "Korrekturlæst", "tux-status-translated": "Oversat", - "tux-status-saving": "Gemmer ...", - "tux-status-unsaved": "Ikke gemt", + "tux-status-saving": "Offentliggør...", + "tux-status-unsaved": "Ikke offentliggjort", "tux-save-unknown-error": "Der opstod en ukendt fejl.", "tux-editor-placeholder": "Din oversættelse", "tux-editor-paste-original-button-label": "Indsæt kildeteksten", @@ -314,8 +296,8 @@ "tux-editor-need-more-help": "Brug for mere hjælp?", "tux-editor-ask-help": "Anmod om yderligere oplysninger", "tux-editor-tm-match": "$1% overensstemmelse", - "tux-warnings-more": "{{PLURAL:$1|$1 flere}}", - "tux-warnings-hide": "skjul", + "tux-notices-more": "{{PLURAL:$1|$1 flere}}", + "tux-notices-hide": "skjul", "tux-editor-save-failed": "Kunne ikke gemme oversættelsen:$1", "tux-editor-n-uses": "brugt $1 {{PLURAL:$1|gang|gange}}", "tux-editor-message-desc-more": "Se mere", @@ -328,8 +310,8 @@ "tux-proofread-action-tooltip": "Markér som korrekturlæst", "tux-proofread-edit-label": "Redigér", "tux-editor-page-mode": "Side", - "tux-editor-outdated-warning": "Denne oversættelse trænger måske til opdatering.", - "tux-editor-outdated-warning-diff-link": "Vis forskelle", + "tux-editor-outdated-notice": "Denne oversættelse trænger måske til opdatering.", + "tux-editor-outdated-notice-diff-link": "Vis forskelle", "tux-editor-doc-editor-placeholder": "Dokumentation for besked", "tux-editor-doc-editor-save": "Gem dokumentation", "tux-editor-doc-editor-cancel": "Annullér", @@ -371,5 +353,5 @@ "translate-statsbar-tooltip": "$1% oversatte, $2% korrekturlæste", "translate-statsbar-tooltip-with-fuzzy": "$1% oversatte, $2% korrekturlæste, $3% forældede", "translate-search-more-groups-info": "$1 {{PLURAL:$1|mere gruppe|flere grupper}}", - "translate-ulsdep-body": "Oversættelseudvidelsen er afhængig af [https://www.mediawiki.stjæle/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector udvidelsen Universal Language Selector]." + "specialpages-group-translation": "Oversættelse" } diff --git a/MLEB/Translate/i18n/core/de-formal.json b/MLEB/Translate/i18n/core/de-formal.json index 717ee2b5..3c152718 100644 --- a/MLEB/Translate/i18n/core/de-formal.json +++ b/MLEB/Translate/i18n/core/de-formal.json @@ -5,17 +5,14 @@ "Imre", "Kghbln", "MichaelFrey", - "Umherirrender", - "Tacsipacsi" + "Tacsipacsi", + "Umherirrender" ] }, "translate-page-description-hasoptional": "Diese Nachrichtengruppe enthält optionale Nachrichten.\nOptionale Nachrichten sollten nur dann übersetzt werden, sofern es in Ihrer Sprache Bedarf für sie gibt,\nwie beispielsweise die Nichtverwendung von Leerzeichen oder die Transkription von Eigennamen. $1", "translate-edit-no-information": "''Zu dieser Nachricht ist keine Dokumentation vorhanden.''\nSofern Sie wissen, wo und in welchem Zusammenhang sie genutzt wird, können Sie anderen Übersetzern bei ihrer Arbeit helfen, indem Sie eine Dokumentation hinzufügen.", "translate-use-suggestion": "Ersetzen Sie die aktuelle Übersetzung mit diesem Vorschlag.", "translate-edit-nopermission": "Sie benötigen Übersetzerrechte, um Nachrichten übersetzen zu können.", - "translate-magic-help": "Sie können hier Aliase für Spezialseiten, magische Wörter und Namensraumnamen übersetzen.\n\nSpezialseiten und magische Wörter können mehrere Übersetzungen haben, sie werden jeweils durch ein Komma (,) getrennt. Namensraumnamen dürfen nur je eine Übersetzung haben.\n\nIn der Übersetzung eines Namensraumnamens hat $1 talk eine spezielle Bedeutung. $1 wird durch den Projektnamen ersetzt (zum Beispiel {{ns:project_talk}}).\nWenn es in Ihrer Sprache nicht möglich ist, eine grammatikalisch korrekte Form davon zu bilden ohne den Projektnamen zu verändern, kontaktieren Sie bitte einen Softwareentwickler.\n\nSie müssen in der Übersetzer-Gruppe sein, um Änderungen zu speichern.\nÄnderungen werden erst beim Klick auf den Speichern-Button gespeichert.", - "translate-magic-errors": "Bitte beheben Sie {{PLURAL:$1|nachfolgenden|nachfolgende}} Fehler in der Übersetzung:", - "translate-checks-xhtml": "Bitte ersetzen Sie {{PLURAL:$2|den folgenden Tag|die folgenden Tags}} durch die korrekten: $1", "translate-checks-fudforum-syntax": "Bitte benutzen Sie $1 anstatt $2 in diesem Projekt.", "translate-statsf-intro": "Sie können einfache Statistiken mit diesem Formular erstellen. Alle Werte haben untere und oberere Limits.", "translations-summary": "Geben Sie einen Nachrichtennamen ein, um alle verfügbaren Übersetzungen anzuzeigen.", @@ -24,6 +21,5 @@ "translate-manage-nochanges-other": "Es gibt keine Änderungen für diese Sprache.\nVerwenden Sie den Verweis unten, um zur Gruppendetailübersicht zurück zu gehen.", "translate-manage-inconsistent": "Es wurden Inkonsistenzen in der Anfrage festgestellt.\nBitte überprüfen Sie Ihre Änderungen und versuchen Sie es erneut.\nDetails: $1", "translate-manage-toolong": "Die maximale Verarbeitungszeit von $1 {{PLURAL:$1|Sekunde|Sekunden}} ist abgelaufen.\nBitte schicken Sie das Formular noch einmal ab, um die Verarbeitung fortzusetzen.", - "translate-manage-intro-other": "Hier ist eine Liste von Übersetzungsänderungen der Sprache $1.\nBitte kontrollieren Sie die Änderungen und wählen Sie je eine Aktion, die Sie auf die Übersetzungen anwenden möchten.\nWenn Sie sich entscheiden, Änderungen zu ignorieren, werden sie mit dem nächsten Export überschrieben.", - "translate-import-err-warnings": "Die Datei entspricht nicht dem erwarteten Format.\nStellen Sie sicher, dass der Editor keine msgctxt-Felder entfernt.\nDetails: $1" + "translate-manage-intro-other": "Hier ist eine Liste von Übersetzungsänderungen der Sprache $1.\nBitte kontrollieren Sie die Änderungen und wählen Sie je eine Aktion, die Sie auf die Übersetzungen anwenden möchten.\nWenn Sie sich entscheiden, Änderungen zu ignorieren, werden sie mit dem nächsten Export überschrieben." } diff --git a/MLEB/Translate/i18n/core/de.json b/MLEB/Translate/i18n/core/de.json index 1d2521bd..499cd855 100644 --- a/MLEB/Translate/i18n/core/de.json +++ b/MLEB/Translate/i18n/core/de.json @@ -20,13 +20,14 @@ "Shirayuki", "Tbleher", "The Evil IP address", + "Tobi 406", "Umherirrender" ] }, "translate": "Übersetzen", "translate-extensionname": "Translate", "translate-desc": "Erweitert das Wiki um eine [[Special:Translate|Spezialseite]] zum Übersetzen von MediaWiki und weiterem", - "translate-fuzzybot-desc": "Dies ist ein spezielles System-Benutzerkonto, das von der MediaWiki-Softwareerweiterung [https://www.mediawiki.org/wiki/Extension:Translate „Translate“] verwendet wird, um Übersetzungen zu warten.\nDieses Benutzerkonto ist Teil der MediaWiki-Software und gehört keinem Benutzer.", + "translate-fuzzybot-desc": "Dies ist ein spezielles System-Benutzerkonto, das von der MediaWiki-Softwareerweiterung [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate „Translate“] verwendet wird, um Übersetzungen zu warten.\nDieses Benutzerkonto ist Teil der MediaWiki-Software und gehört keinem Benutzer.", "translate-taskui-export-to-file": "Im systemeigenen Format exportieren", "translate-taskui-export-as-po": "Für die Offline-Übersetzung exportieren", "translate-taction-translate": "Übersetzen", @@ -75,46 +76,42 @@ "translate-export-invalid-format": "Bitte ein gültiges Format angeben.", "translate-export-not-supported": "Das Exportieren von Übersetzungen wird nicht unterstützt.", "translate-export-format-notsupported": "Das angegebene Exportformat wird von der Nachrichtengruppe nicht unterstützt.", - "translate-magic-pagename": "Übersetzen (extra)", - "translate-magic-help": "Du kannst hier Aliase für Spezialseiten, magische Wörter und Namensraumnamen übersetzen.\n\nSpezialseiten und magische Wörter können mehrere Übersetzungen haben,\nsie werden jeweils durch ein Komma (,) getrennt.\nNamensräume dürfen nur je eine Übersetzung haben.\n\nDas Übersetzen des Projektdiskussionsseitennamensraums $1 talk kann kompliziert werden.\n$1 wird durch den Projektnamen ersetzt (zum Beispiel {{ns:project_talk}}).\nSofern es in deiner Sprache nicht möglich ist eine grammatikalisch korrekte Form zu bilden, ohne den Projektnamen zu verändern, lasse es uns bitte auf [[Support]] wissen.\n\nDu musst Übersetzer sein, um Änderungen speichern zu können.\nÄnderungen werden erst beim Klick auf den Button „Speichern“ gespeichert.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Hole", - "translate-magic-cm-export": "Export", - "translate-magic-nothing-to-export": "Es ist nichts zum Exportieren vorhanden.", - "translate-magic-cm-to-be": "Sollte sein", - "translate-magic-cm-current": "Aktuell", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Kommentar:", - "translate-magic-cm-save": "Speichern", - "translate-magic-cm-updatedusing": "Aktualisiert über [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Speichern fehlgeschlagen", - "translate-magic-special": "Aliase von Spezialseiten", - "translate-magic-words": "Magische Wörter", - "translate-magic-namespace": "Namen von Namensräumen", - "translate-magic-notsaved": "Die Änderungen wurden nicht gespeichert.", - "translate-magic-errors": "Bitte behebe {{PLURAL:$1|nachfolgenden|nachfolgende}} Fehler in der Übersetzung:", - "translate-magic-saved": "Die Änderungen wurden gespeichert.", - "translate-checks-parameters": "{{PLURAL:$2|Der folgende Parameter wird|Die folgenden Parameter werden}} nicht benutzt:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Der folgende Parameter ist|Die folgenden Parameter sind}} unbekannt:\n$1", + "translate-export-group-too-large": "Die gewählte Nachrichtengruppe ist zu groß. Wähle eine Nachrichtengruppe, die weniger als $1 {{PLURAL:$1|Nachricht|Nachrichten}} enthält oder wende dich an einen Übersetzungsadministrator, um Rat zu erhalten.", + "translate-checks-parameters": "{{PLURAL:$2|Der folgende Parameter wird|Die folgenden Parameter werden}} nicht benutzt:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Der folgende Parameter ist|Die folgenden Parameter sind}} unbekannt:\n$1", "translate-checks-balance": "Die {{PLURAL:$2|folgende Klammersetzung ist|folgenden Klammersetzungen sind}} nicht ausgeglichen:\n$1", "translate-checks-links": "{{PLURAL:$2|Der folgende Link ist|Die folgenden $2 Links sind}} problematisch:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Der folgende Link fehlt|Die folgenden $2 Links fehlen}}:\n$1", - "translate-checks-xhtml": "Bitte ersetze {{PLURAL:$2|den folgenden Tag|die folgenden Tags}} durch die korrekten:\n$1", "translate-checks-plural": "Die Übersetzungsvorlage verwendet {{PLURAL:}}, die Übersetzung aber nicht.", "translate-checks-plural-forms": "Zu {{PLURAL:}}{{PLURAL:$1|wurde eine Ausprägung|wurden $1 Ausprägungen}} angegeben. Es {{PLURAL:$2|wird allerdings nur eine Ausprägung|werden allerdings nur $2 Ausprägungen}} unterstützt (auschließlich 0= und 1= forms).", "translate-checks-plural-dupe": "Zu {{PLURAL:}} wurden zwei gleiche Ausprägungen angegeben. Bspw. sollte aber {{PLURAL:$1|Milch|Milch}} als {{PLURAL:$1|Milch}} angegeben werden.", + "translate-checks-gettext-plural-missing": "Diese Übersetzung muss {{PLURAL:GETTEXT|}} haben.", + "translate-checks-gettext-plural-unsupported": "Diese Nachricht unterstützt kein {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} akzeptiert genau $1 {{PLURAL:$1|Pluralform|Pluralformen}}. Gegenwärtig {{PLURAL:$2|ist eine Pluralform|sind $2 Pluralformen}} angegeben.", + "translate-checks-smartformat-plural-missing": "Diese Übersetzung muss Plural in der Variable $1 verwenden.", + "translate-checks-smartformat-plural-unsupported": "Diese Nachricht unterstützt keinen Plural in der Variable $1.", + "translate-checks-smartformat-plural-count": "Falsche Anzahl an Pluralformen in $3. Notwending {{PLURAL:$1|ist eine Pluralforme|sind $2 Pluralformen}}. Gegenwärtig {{PLURAL:$2|ist eine Pluralform|sind $2 Pluralformen}} vorhanden.", + "translate-checks-unicode-plural-missing": "Diese Übersetzung muss {{PLURAL|}} haben.", + "translate-checks-unicode-plural-unsupported": "Diese Nachricht unterstützt kein {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "Pluralformen sollten als $1 definiert sein. Diese Übersetzung enthält $2.", "translate-checks-pagename": "Der Namensraum weicht von dem in der Übersetzungsvorlage ab.", "translate-checks-format": "Diese Übersetzung entspricht nicht der Übersetzungsvorlage oder enthält eine ungültige Syntax: $1", - "translate-checks-escape": "Die folgenden Escape-Sequenzen könnten versehentlich vorhanden sein: $1", + "translate-checks-escape": "{{PLURAL:$2|Das folgende Escape-Zeichen kann|Die folgenden Escape-Zeichen können}} versehentlich vorhanden sein: $1. {{PLURAL:$4|Ein gültiges Escape-Zeichen ist|Gültige Escape-Zeichen sind:}} $3.", "translate-checks-parametersnotequal": "Die Parameteranzahl ist {{PLURAL:$1|$1}}, sollte aber {{PLURAL:$2|$2}} sein.", "translate-checks-malformed": "$1 ist formal ungültig.", "translate-checks-fudforum-syntax": "Bitte benutze in diesem Projekt $1 anstatt $2.", - "translate-pref-nonewsletter": "Sende mir keinen E-Mail-Newsletter zu", + "translate-checks-newline-missing-start": "Am Anfang der Übersetzung {{PLURAL:$1|fehlt ein|fehlen $1}} Zeilenumbruchzeichen.", + "translate-checks-newline-missing-end": "Am Ende der Übersetzung {{PLURAL:$1|fehlt ein|fehlen $1}} Zeilenumbruchzeichen.", + "translate-checks-newline-extra-start": "Am Anfang der Übersetzung {{PLURAL:$1|ist ein zusätzliches|sind $1 zusätzliche}} Zeilenumbruchzeichen.", + "translate-checks-newline-extra-end": "Am Ende der Übersetzung {{PLURAL:$1|ist ein zusätzliches|sind $1 zusätzliche}} Zeilenumbruchzeichen.", + "translate-checks-value-not-present": "Die Übersetzung muss {{PLURAL:$1|1=|einem der folgenden Werte entsprechen:}} $1.", + "translate-checks-replacement": "Verwende $2 anstatt $1.", "translate-pref-editassistlang": "Unterstützungssprachen:", "prefs-translate": "Übersetzungsoptionen", "translate-pref-editassistlang-help": "Mit Kommas getrennte Liste von Sprachcodes.\nDie Übersetzungen der Nachrichten in den gewählten Sprachen werden beim Übersetzen angezeigt.\nDie Standardliste ist abhängig von der Sprache der Benutzeroberfläche.", "translate-pref-editassistlang-bad": "In der Liste ist ein ungültiger Sprachcode enthalten:\n$1.", "right-translate": "Bearbeitungen mithilfe der Übersetzungsoberfläche tätigen", + "action-translate": "Bearbeitungen mithilfe der Übersetzungsoberfläche zu tätigen", "right-translate-manage": "Nachrichtengruppen verwalten", "action-translate-manage": "Nachrichtengruppen zu verwalten", "right-translate-import": "Offlineübersetzungen importieren", @@ -214,17 +211,30 @@ "supportedlanguages-recenttranslations": "Aktuelle Übersetzungen", "supportedlanguages-count": "Insgesamt $1 {{PLURAL:$1|Sprache|Sprachen}}.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|Bearbeitung|Bearbeitungen}} - letzte Bearbeitung vor $3 {{PLURAL:$3|Tag|Tagen}}", + "translate-supportedlanguages-cached": "Diese Informationen wurden vor $1 zwischengespeichert.", "abusefilter-edit-builder-vars-translate-source-text": "Quelltext der Übersetzungseinheit", - "translate-save": "Speichern ($1)", + "abusefilter-edit-builder-vars-translate-target-language": "Zielsprache für die Übersetzung", + "translate-save": "Veröffentlichen ($1)", "translate-jssti-add": "Zur Liste hinzufügen", "managemessagegroups": "Nachrichtengruppenverwaltung", "translate-smg-notallowed": "Du bist nicht berechtigt, diese Aktion durchzuführen.", "translate-smg-nochanges": "Es gibt keine zu verarbeitenden Änderungen.", "translate-smg-submit": "Änderungen zum Verarbeiten übertragen", "translate-smg-submitted": "Nachrichtendefinitionen wurden aktualisiert. Änderungen werden im Hintergrund verarbeitet.", + "translate-smg-submitted-with-failure": "Die Aktualisierung der {{PLURAL:$1|Nachrichtendefinition|Nachrichtendefinitionen}} für die {{PLURAL:$1|folgende Gruppe|folgenden Gruppe}} schlug fehl - $2. $3", + "translate-smg-submitted-others-processing": "Nachrichtendefintionen für andere Gruppen werden im Hintergrund verarbeitet.", "translate-smg-more": "Nach dem Speichern dieser Änderungen müssen weitere Änderungen verarbeitet werden.", "translate-smg-left": "Nachrichteninhalt im Wiki", "translate-smg-right": "Eingegangene Änderungen", + "translate-smg-rename-select": "Auswählen", + "translate-smg-rename-cancel": "Abbrechen", + "translate-smg-rename-search": "Nach passender Nachricht suchen ...", + "translate-smg-rename-select-err": "Bitte eine Nachricht zum Umbenennen auswählen", + "translate-smg-rename-no-msg": "Keine Nachrichten gefunden.", + "translate-smg-rename-new": "Hinzufügen als neu ...", + "translate-smg-rename-rename": "Hinzufügen als Umbenennung von ...", + "translate-smg-rename-dialog-title": "Passende Umbenennung für $1 auswählen", + "translate-smg-changeset-modified": "Das Änderungsset wurde von einem anderen Benutzer oder Prozess geändert. Deine Änderungen können nicht veröffentlicht werden, da sie deren Änderungen möglicherweise überschreiben. Bitte lade die Seite neu, um die neuesten Änderungen zu sehen.", "translate-manage-import-diff": "Nachricht $1 | Aktionen: $2", "translate-manage-import-new": "Neue Nachricht $1", "translate-manage-import-deleted": "Gelöschte Nachricht $1", @@ -232,11 +242,15 @@ "translate-manage-action-conflict": "Importieren und als „zu kontrollieren“ markieren", "translate-manage-action-ignore": "Ignorieren", "translate-manage-action-fuzzy": "Importiere und markiere Übersetzung als „zu kontrollieren“", + "translate-manage-action-rename-fuzzy": "Umbenennen und Übersetzungen als fuzzy markieren", + "translate-manage-action-rename": "Umbenennen", + "translate-manage-action-ignore-change": "Änderung der Übersetzung ignorieren", "translate-manage-nochanges": "Es gibt keine Änderungen an Definitionen zu Nachrichten dieser Gruppe.", "translate-manage-nochanges-other": "Es gibt keine Änderungen für diese Sprache.\nVerwende den Verweis unten, um zur Gruppendetailübersicht zurück zu gehen.", "translate-manage-inconsistent": "Es wurden Inkonsistenzen in der Anfrage festgestellt.\nBitte überprüfe deine Änderungen und versuche es erneut.\nDetails: $1", "translate-manage-toolong": "Die maximale Verarbeitungszeit von $1 {{PLURAL:$1|Sekunde|Sekunden}} ist abgelaufen.\nBitte schicke das Formular noch einmal ab, um die Verarbeitung fortzusetzen.", "translate-manage-import-summary": "Neue Version von externer Quelle importiert", + "translate-manage-import-rename-summary": "In externer Quelle umbenannt", "translate-manage-conflict-summary": "Neue Version von externer Quelle importiert.\nBitte überprüfen.", "translate-manage-submit": "Ausführen", "translate-manage-intro-other": "Hier ist eine Liste von Übersetzungsänderungen der Sprache $1.\nBitte kontrolliere die Änderungen und wähle je eine Aktion, die du auf die Aktualisierungen anwenden möchtest.\nWenn du dich entscheidest, Änderungen zu ignorieren, ist diese Aktion nur vorübergehend.", @@ -251,15 +265,14 @@ "translate-import-err-no-such-file": "Die Datei $1 existiert nicht oder wurde nicht lokal hochgeladen.", "translate-import-err-stale-group": "Die Nachrichtengruppe, der diese Datei zugeordnet wurde, ist nicht vorhanden.", "translate-import-err-no-headers": "Die Datei ist keine Datei im Gettext-Format der Erweiterung „Translate“:\nDie Gruppen und Sprache konnte nicht aus dem Dateikopf ermittelt werden.", - "translate-import-err-warnings": "Die Datei entspricht nicht dem erwarteten Format.\nStelle sicher, dass der Editor keine msgctxt-Felder entfernt.\nDetails: $1", "translate-js-summary": "Zusammenfassung:", - "translate-js-save": "Speichern", - "translate-js-next": "Speichern und nächste öffnen", + "translate-js-save": "Veröffentlichen", + "translate-js-next": "Veröffentlichen und nächste öffnen", "translate-js-skip": "Weiter zur nächsten", "translate-js-history": "Übersetzungsgeschichte", "translate-js-support": "Frage stellen", "translate-js-support-title": "Frage nach Hilfe, sofern nicht ausreichend Informationen vorhanden sind, diese Nachricht richtig zu übersetzen.", - "translate-js-support-unsaved-warning": "Es sind nicht gespeicherte Übersetzungen vorhanden.", + "translate-js-support-unsaved-warning": "Es sind nicht veröffentlichte Übersetzungen vorhanden.", "translate-gs-pos": "Pos.", "translate-gs-code": "Code", "translate-gs-continent": "Kontinent", @@ -312,8 +325,8 @@ "tux-status-fuzzy": "Veraltet", "tux-status-proofread": "Überprüft", "tux-status-translated": "Übersetzt", - "tux-status-saving": "Speichere …", - "tux-status-unsaved": "Nicht gespeichert", + "tux-status-saving": "Veröffentlichen …", + "tux-status-unsaved": "Nicht veröffentlicht", "tux-save-unknown-error": "Es ist ein unbekannter Fehler aufgetreten.", "tux-editor-placeholder": "Deine Übersetzung", "tux-editor-editsummary-placeholder": "Optionale Zusammenfassung", @@ -332,9 +345,9 @@ "tux-editor-need-more-help": "Wird weitere Hilfe benötigt?", "tux-editor-ask-help": "Nach zusätzlichen Informationen fragen", "tux-editor-tm-match": "$1 % Übereinstimmung", - "tux-warnings-more": "{{PLURAL:$1|Eine weitere|$1 weitere}}", - "tux-warnings-hide": "verstecken", - "tux-editor-save-failed": "Das Speichern der Übersetzung ist fehlgeschlagen: $1", + "tux-notices-more": "{{PLURAL:$1|Eine weitere|$1 weitere}}", + "tux-notices-hide": "verstecken", + "tux-editor-save-failed": "Das Veröffentlichen der Übersetzung ist fehlgeschlagen: $1", "tux-editor-n-uses": "{{PLURAL:$1|Einmal|$1-mal}} verwendet", "tux-editor-message-desc-more": "Mehr ansehen", "tux-editor-message-desc-less": "Weniger ansehen", @@ -346,10 +359,10 @@ "tux-proofread-action-tooltip": "Als überprüft markieren", "tux-proofread-edit-label": "Bearbeiten", "tux-editor-page-mode": "Seite", - "tux-editor-outdated-warning": "Diese Übersetzung muss eventuell aktualisiert werden.", - "tux-editor-outdated-warning-diff-link": "Unterschiede zeigen", + "tux-editor-outdated-notice": "Diese Übersetzung muss eventuell aktualisiert werden.", + "tux-editor-outdated-notice-diff-link": "Unterschiede zeigen", "tux-editor-doc-editor-placeholder": "Nachrichtendokumentation", - "tux-editor-doc-editor-save": "Dokumentation speichern", + "tux-editor-doc-editor-save": "Dokumentation veröffentlichen", "tux-editor-doc-editor-cancel": "Abbrechen", "tux-messagetable-more-messages": "{{PLURAL:$1|Eine weitere Nachricht|$1 weitere Nachrichten}}", "tux-messagetable-loading-messages": "Lade {{PLURAL:$1|Nachricht|Nachrichten}} …", @@ -385,12 +398,13 @@ "tux-editor-message-tools-translations": "Alle Übersetzungen", "tux-editor-message-tools-linktothis": "Auf diese Systemnachricht verlinken", "tux-editor-loading": "Lade …", + "tux-editor-loading-failed": "Fehler beim Laden der Übersetzungshilfen: $1", "translate-search-more-languages-info": "{{PLURAL:$1|Eine weitere Sprache|$1 weitere Sprachen}}", "translate-statsbar-tooltip": "$1 % übersetzt, $2 % überprüft", "translate-statsbar-tooltip-with-fuzzy": "$1 % übersetzt, $2 % überprüft, $3 % veraltet", "translate-search-more-groups-info": "{{PLURAL:$1|Eine weitere Gruppe|$1 weitere Gruppen}}", - "translate-ulsdep-title": "Konfigurationsfehler", - "translate-ulsdep-body": "Die Übersetzungserweiterung hängt von der [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector Erweiterung für die universelle Sprachauswahl] ab.", + "translate-syntax-error": "Die Übersetzung enthält Syntaxfehler", "tux-session-expired": "Du bist nicht mehr angemeldet. Bitte melde dich auf einer getrennten Registerkarte an. Alternativ kannst du eine Kopie deiner ungespeicherten Übersetzungen machen, dich anmelden, zu dieser Seite zurückkehren und deine Übersetzungen erneut eingeben.", - "tux-nojs": "Dieses Werkzeug funktioniert ohne JavaScript nicht. Es ist deaktiviert, funktioniert nicht oder dieser Browser wird nicht unterstützt." + "tux-nojs": "Dieses Werkzeug funktioniert ohne JavaScript nicht. Es ist deaktiviert, funktioniert nicht oder dieser Browser wird nicht unterstützt.", + "specialpages-group-translation": "Übersetzung" } diff --git a/MLEB/Translate/i18n/core/diq.json b/MLEB/Translate/i18n/core/diq.json index b34afc9e..98e1e02c 100644 --- a/MLEB/Translate/i18n/core/diq.json +++ b/MLEB/Translate/i18n/core/diq.json @@ -1,17 +1,18 @@ { "@metadata": { "authors": [ + "1917 Ekim Devrimi", + "Archaeodontosaurus", + "Asmen", + "Dılmıc", "Erdemaslancan", + "Gambollar", "Gorizon", + "Gırd", + "Kumkumuk", "Marmase", "Mirzali", - "Kumkumuk", - "Asmen", - "Gırd", - "1917 Ekim Devrimi", - "Gambollar", - "Dılmıc", - "Archaeodontosaurus" + "Orbot707" ] }, "translate": "Açarnayış", @@ -27,8 +28,8 @@ "translate-page-no-such-language": "Sılaste zıwan ravërde niyo.", "translate-page-no-such-group": "Sılaste grub ravërde niya.", "translate-page-disabled": "Ena grub dı çerx kerdena zıwani dewre ra vıciyabya. \n\n\nÇıkı:\n$1", - "translate-language-disabled": "Ena zıwan dı açarnayış dewre ra veto", - "translate-page-settings-legend": "Sazi", + "translate-language-disabled": "Açarnayış no zıwan de dewre ra veto.", + "translate-page-settings-legend": "Eyari", "translate-page-group": "Grube", "translate-page-language": "Zıwan", "translate-page-limit": "Limit", @@ -39,8 +40,8 @@ "translate-page-showing-all": "$1 {{PLURAL:$1|mesac|mesaci}} asenê.", "translate-page-showing-none": "Mesaco ke bımocneyo çınyo.", "translate-page-paging-links": "[ $1 ] [ $2 ]", - "translate-next": "Perra peyêne", - "translate-prev": "Perra verêne", + "translate-next": "Pela bahdoyêne", + "translate-prev": "Pela veri", "translate-page-description-legend": "Heqa grube de melumat", "translate-page-description-hasoptional-open": "Mesacanê waşteyan bımocne.", "translate-page-edit": "bıvurne", @@ -48,7 +49,7 @@ "translate-ignored": "(Nê hesıbneyine)", "translate-edit-title": "\"$1\"i bıvurne", "translate-edit-definition": "Şınasnayışê mesaci", - "translate-edit-translation": "Çarnayışi", + "translate-edit-translation": "Açarnayışi", "translate-edit-contribute": "iştırak ke", "translate-edit-no-information": "''Wesiqay nê mesaci çıniya.\nŞıma ke zanê kamca ya zi senên no mesac gırweniyeno, şıma şenê tadaoğanê (açarnoğanê) binan rê qandê cıkerdışê wesiqa be nê mesaci ra peşti cı dê.", "translate-edit-information": "Heqa mesacê ($1) de melumat", @@ -56,37 +57,23 @@ "translate-edit-tmmatch-source": "Metınê çımey açarnayışi: $1", "translate-edit-tmmatch": "Zey $1%", "translate-use-suggestion": "Mewcud açarnayışi tewsiye ya bıvurnê", - "translate-edit-nopermission": "Mrsaca guryayışi rê hrqa icazeta şıma icab kena.", - "translate-edit-askpermission": "İcazet bıgi", + "translate-edit-nopermission": "Açarnayışê mesacan rê heqa icazetê açarnayışi icab kena.", + "translate-edit-askpermission": "İcazet bıgê", "exporttranslations": "Açarnayışi ateber dı", "translate-export-form-format": "Format", - "translate-magic-pagename": "Açarnayışê MediaWiki yo hera", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Biya", - "translate-magic-cm-export": "Teberdayış", - "translate-magic-nothing-to-export": "A teber deyaye qırşê çıniyo.", - "translate-magic-cm-to-be": "Bıke", - "translate-magic-cm-current": "Newe resnayış", - "translate-magic-cm-original": "Oricinal", - "translate-magic-cm-comment": "Mışewre:", - "translate-magic-cm-save": "Qeyd ke", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] karyayışa biyo racaniye.", - "translate-magic-cm-savefailed": "Starê nêkewt", - "translate-magic-special": "Leqebê pela xısusiye", - "translate-magic-words": "Çekuyê nuşteyıni", - "translate-magic-namespace": "Nameyê heruna nameyan", - "translate-magic-notsaved": "Vurnayışê şıma qeyd nêbi!", - "translate-magic-errors": "Reca kem wexteyo ke açarnayış ken ê se {{PLURAL:$1|xetaya|xeteyabê}} cêri bıvurne:", - "translate-magic-saved": "Vırnayışê şıma qeyd bi.", - "translate-checks-parameters": "{{PLURAL:$2|Parametreyê cêrêni nêgureniyayê|Parametreyo cêrên nêgureniyayo}}: $1", + "translate-checks-parameters": "{{PLURAL:$2|Parametreyê cêrêni nêgureniyayê|Parametreyo cêrên nêgureniyayo}}: $1", "translate-checks-links": "{{PLURAL:$2|Gıra|$2 Gırey}} ceri berbata: $1", "translate-pref-editassistlang": "Zıwanê peşti:", "prefs-translate": "Opsiyonê çarnayışi", + "translate-pref-editassistlang-help": "Virgula abıryaye lista qodanê zıwanan. Nê zıwanan de açarnayışê yew zıwani, şıma wexteyo ke açarnayış kenê aseno. Hesabyaye lista zıwani aitê zıwanê şımaya.", "right-translate-manage": "İdareyê grubanê mesacan", "action-translate-manage": "idareyê grubanê mesacan", "right-translate-import": "Şıma tadayışanê (çarnayışanê) teberê çerxi bıgêrê zerre (import kerê)", "action-translate-import": "Şıma tadayışanê (çarnayışanê) teberê çerxi bıkırışê teber (ixrac kerê)", "right-translate-messagereview": "Açarnayışan bıvinê", + "translate-rcfilters-translations": "Açarnayışi", + "translate-rcfilters-translations-only-label": "Açarnayışi", + "translate-rcfilters-translations-site-label": "Mesacê sitey", "translate-rc-translation-filter": "Açarnayışê parzûni:", "translate-rc-translation-filter-no": "Qırşê mekı", "translate-rc-translation-filter-only": "Teyna tadayışan bıasne", @@ -95,7 +82,7 @@ "translationstats": "Açarnayışe İstatıstıkan", "translate-stats-edits": "Vurnayışi", "translate-stats-users": "Açarnayoği", - "translate-stats-registrations": "Qeydi", + "translate-stats-registrations": "Qeydbiyayışi", "translate-stats-reviews": "Çımraraviyarnayışi", "translate-stats-reviewers": "Vênayoği", "translate-statsf-intro": "Ena form ra şıma şenê basit istatistiki vırazê. Ser u bın limitê herg erci est o.", @@ -103,12 +90,12 @@ "translate-statsf-width": "Hetê pikseli ra herayiye:", "translate-statsf-height": "Hetê pikseli ra dergiye:", "translate-statsf-days": "Hetê roce ra zeman:", - "translate-statsf-start": "Demê destpêkerdışi:", + "translate-statsf-start": "Tarixê destpêkerdışi:", "translate-statsf-scale": "Melumat:", "translate-statsf-scale-months": "Aşmi", - "translate-statsf-scale-weeks": "Heftey", + "translate-statsf-scale-weeks": "Hefteyi", "translate-statsf-scale-days": "Roci", - "translate-statsf-scale-hours": "Seati", + "translate-statsf-scale-hours": "Saeti", "translate-statsf-count": "Senciye:", "translate-statsf-count-edits": "Amarê vurnayışan:", "translate-statsf-count-users": "Açarnayoğê aktifi", @@ -125,14 +112,14 @@ "translate-translations-history-short": "s", "languagestats": "İstatistikê zıwani", "languagestats-summary": "Ena perre qandê grubanê mesacan rê istatiskanê açarnayışê yew zıwani motnena.", - "messagegroupstats-summary": "Ena per istatistikanê grubanê mesacan motnena", - "languagestats-stats-for": "Qan dê $1 istatistikê açarnayışi ($2).", + "messagegroupstats-summary": "Ena pele istatistikanê grubanê mesacan mocnena.", + "languagestats-stats-for": "Seba $1 istatistikê açarnayışi ($2).", "languagestats-recenttranslations": "Tadayışê peyêni", "translate-langstats-incomplete": "Tay istatistiki ena pela dı nêratneyay. İstatistikan mocnayışi rê pela newe kerê.", - "translate-langstats-expand": "Hera ke", + "translate-langstats-expand": "hera kerê", "translate-langstats-collapse": "teng ke", - "translate-langstats-expandall": "pêrıne hera ke", - "translate-langstats-collapseall": "Pêron teng kı", + "translate-langstats-expandall": "pêrıne hera kerê", + "translate-langstats-collapseall": "pêrıne teng kerê", "translate-language-code": "Kodê zıwani", "translate-language-code-field-name": "Kodê zıwani:", "translate-suppress-complete": "Grubanê mesacanê ke pêro açarniyayê bınımne", @@ -142,34 +129,50 @@ "translate-untranslated": "Nêaçarniyaye", "translate-percentage-complete": "Qediyayış", "translate-percentage-fuzzy": "Vêrde", + "translate-percentage-proofread": "Vineya", "translate-languagestats-overall": "Grubanê mesacan ra pêro piya", "translate-ls-submit": "İstatistikan bımocne", "translate-ls-column-group": "Gruba mesacan", "translate-mgs-pagename": "İstatistikê gruba mesacan", "translate-mgs-fieldset": "Asengeyê tercihan", "translate-mgs-group": "Gruba mesacan", + "translate-mgs-nocomplete": "Açarnayışê cı baş bıyaye zıwana mocnayış", "translate-mgs-submit": "İstatistikan bımocne", "translate-mgs-column-language": "Zıwan", "translate-mgs-totals": "Zıwani heme piya", "supportedlanguages": "Zıwanê ke peşti gırewta", "supportedlanguages-summary": "Ena perre lista zıwananê ke hetê {{SITENAME}}y ra qebul biy, be namanê çarnayoğan inan motnena. \nhem zi tewr vêşi iştirak kerdaye karbera goreya zoni rezkeno. \nAçarnayoğe ke namey cı gırdo ina zaf iştiraqkkerdo. \nNara ke ek namey cı bın de reng asena aktivi yana racbayeyi.", "supportedlanguages-colorlegend": "Asengeya Renga: açarnayışo peyên verdê $1 roca biyo", + "supportedlanguages-sqlite-error": "SQLite nêpheştiyêno", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Açarnoğ}}|Açarnoği}}: $1", "supportedlanguages-recenttranslations": "Tadayışê peyêni", "supportedlanguages-count": "Pêro piya $1 {{PLURAL:$1|zon|zoni}}", "supportedlanguages-activity": "$1: pêro piya $2 {{PLURAL:$2|vurnayış|vurnayışi}} - vurnayışo peyên $3 {{PLURAL:$3|roce|roci}} aver keriya", + "abusefilter-edit-builder-vars-translate-source-text": "Çımê metinê unitey açarnayışi", + "abusefilter-edit-builder-vars-translate-target-language": "Seba açarnayışi etiketê zıwani", "translate-save": "($1) qeyd ke", "translate-jssti-add": "Listiy miyan fi", "managemessagegroups": "Hetenayışê gruba mesacan", "translate-smg-notallowed": "Semeda ena herketi rê icazeta sima cina.", "translate-smg-nochanges": "Theba yo kı bıvuriyo çıni yo.", "translate-smg-submit": "Averşiyaene rê vırnayışan bırışe", + "translate-smg-left": "Wiki de zerrey mesacanaı", + "translate-smg-right": "Vurnayışê ameyayey", + "translate-smg-rename-select": "Weçine", + "translate-smg-rename-cancel": "Bıtexelne", + "translate-smg-rename-select-err": "Kerem kerên mesaco ke reyna name bo", + "translate-smg-rename-no-msg": "Mesac nêvineya.", + "translate-smg-rename-new": "Zey Newe dekere...", + "translate-smg-rename-rename": "Zey namey ney dekerê...", "translate-manage-import-diff": "Mesace $1 | hereket: $2", "translate-manage-import-new": "$1 ra yew mesaco newe", "translate-manage-import-deleted": "Mesaco besternaye: $1", "translate-manage-action-import": "Azare de", "translate-manage-action-conflict": "A zereke u FUZZY nışan bıke", "translate-manage-action-ignore": "Mehesıbne", + "translate-manage-action-fuzzy": "Açarnayışa azere kerê u kehan kerê", + "translate-manage-action-rename-fuzzy": "Açarnayışa reyna name kerê u kehan kerê", + "translate-manage-action-rename": "Babetna name ke", "translate-manage-submit": "Kay fi", "translate-manage-import-ok": "Dekerdaye:$1", "translate-manage-import-done": "Dekerdayış biyo temem", @@ -180,24 +183,29 @@ "translate-import-err-ul-failed": "Barkerdışê dosya nêbi", "translate-js-summary": "Xulasa:", "translate-js-save": "Qeyd ke", + "translate-js-next": "Qeyd kerê u ravêrê bahdoyêni akerê", "translate-js-skip": "Ravêr peyêni", "translate-js-history": "Verorê çarnayışi", "translate-js-support": "Bıperse", + "translate-js-support-unsaved-warning": "Şıma açarnayışê ho qeyd nêkerdê.", "translate-gs-pos": "Ca", "translate-gs-code": "Kod", "translate-gs-continent": "Qıta", "translate-gs-speakers": "Qısekari", "translate-gs-score": "Skor", "translate-gs-multiple": "Zafının", - "translate-gs-count": "Tene", + "translate-gs-count": "Amar", "translate-gs-total": "Pêro piya", "translate-gs-avgscore": "Ort. skor", - "translate-documentation-language": "Pelgekerdışê mesacan", - "translate-searchprofile": "Çarnayışi", + "translate-documentation-language": "Pelekerdışê mesacan", + "translate-searchprofile": "Açarnayışi", "translate-searchprofile-tooltip": "Heme açarnayışan de cıgeyre", + "translate-searchprofile-note": "Pê [$1 vinayışê açarnayışi] ya zêde weçenegê cıgeyrayışê estê.", "translate-search-languagefilter": "Gorey zıwani filtre ke:", "translate-search-nofilter": "Bê filtre", - "log-name-translationreview": "Qeydê çım ra raviyarnayışê çarnayışan", + "log-name-translationreview": "Qeydê çımraviyarnayışê çarnayışan", + "log-description-translationreview": "Vatışan pêroyın açarnayış u grubanê mesaci rê qeyd kerdış", + "logentry-translationreview-message": "$1, $3 açarnayışi {{GENDER:$2|vineyay }}", "group-translate-sandboxed": "Açarnayoğê tesdiqnêbiyayey", "group-translate-sandboxed-member": "{{GENDER:$1|açarnayoğê tesdiqnêbiyayey}}", "right-translate-sandboxmanage": "İdareya qumdora karberi", @@ -215,7 +223,7 @@ "translate-msggroupselector-search-all": "Pêro", "translate-msggroupselector-search-recent": "Peyên", "translate-msggroupselector-view-subprojects": "$1 {{PLURAL:$1|bıngrube|bıngrubi}}", - "tux-languageselector": "Tadê", + "tux-languageselector": "Bıçarne era", "tux-tab-all": "Pêro", "tux-tab-untranslated": "Nêaçarniyaye", "tux-tab-outdated": "Vêrde", @@ -231,7 +239,7 @@ "tux-save-unknown-error": "Yew xetay ke nêşınasiyena biye.", "tux-editor-placeholder": "Açarnayışê şıma", "tux-editor-editsummary-placeholder": "Xulasaya hesabiyayiye", - "tux-editor-paste-original-button-label": "Çıme meyini pronı", + "tux-editor-paste-original-button-label": "Çıme metini pırone", "tux-editor-discard-changes-button-label": "Vurriyayışan vece", "tux-editor-save-button-label": "Açarnayışi qeyd ke", "tux-editor-skip-button-label": "Ravêr peyêni", @@ -240,14 +248,14 @@ "tux-editor-proofread-button-label": "Vêniyaye nişan ke", "tux-editor-shortcut-info": "Seba qeydkerdışi \"$1\" ya zi ravêrdışê mesacê bini \"$2\" ya zi dayışê xulasa \"$4\" ya zi rayanê binanê kılman rê \"$3\" bıtıkne.", "tux-editor-edit-desc": "Belgekerdışi bıvurne", - "tux-editor-add-desc": "Belge cı ke", - "tux-editor-suggestions-title": "Wesıbi", + "tux-editor-add-desc": "Dokuman cı kerê", + "tux-editor-suggestions-title": "Teklifi", "tux-editor-in-other-languages": "Zıwananê binan de", "tux-editor-need-more-help": "Hewna peşti lazıma?", "tux-editor-ask-help": "Tayêna vêşi melumat bıperse", "tux-editor-tm-match": "Zey $1%", - "tux-warnings-more": "{{PLURAL:$1|$1 zêde}}", - "tux-warnings-hide": "bınımne", + "tux-notices-more": "{{PLURAL:$1|$1 zêde}}", + "tux-notices-hide": "bınımne", "tux-editor-save-failed": "Qeyd kerdışa açarnayışi nêbi:$1", "tux-editor-n-uses": "$1 {{PLURAL:$1|raye gureno|reyi gurenê}}", "tux-editor-message-desc-more": "Zêde bıvêne", @@ -260,14 +268,14 @@ "tux-proofread-action-tooltip": "Çım ra raviyarnaey nışan ke", "tux-proofread-edit-label": "Bıvurne", "tux-editor-page-mode": "Pele", - "tux-editor-outdated-warning": "Rocanebiyayışê nê açarnayışi beno ke lazım bo.", - "tux-editor-outdated-warning-diff-link": "Ferqi bıvin", - "tux-editor-doc-editor-placeholder": "Mesaca dokumani", + "tux-editor-outdated-notice": "Rocanebiyayışê nê açarnayışi beno ke lazım bo.", + "tux-editor-outdated-notice-diff-link": "Ferqi bıvin", + "tux-editor-doc-editor-placeholder": "Pelekerdışê mesacan", "tux-editor-doc-editor-save": "Dokumani qeyd ke", "tux-editor-doc-editor-cancel": "Bıtexelne", "tux-messagetable-more-messages": "$1 tayêna {{PLURAL:$1|mesac|mesaci}}", "tux-messagetable-loading-messages": "{{PLURAL:$1|Mesac bar beno|Mesaci bar benê}}...", - "tux-message-filter-placeholder": "Lista filtrey", + "tux-message-filter-placeholder": "Lista parzûni", "tux-message-filter-result": "$1 de Qandë \"$2\" {{PLURAL:$1|netice |neticey}} vineya yê", "tux-message-filter-advanced-button": "Cıgeyrayışo hera", "tux-message-filter-optional-messages-label": "Mesacê keyfi", @@ -287,18 +295,22 @@ "tux-empty-list-other": "Açarniyaye theba çıni yo", "tux-empty-list-other-guide": "Şıma şenê çım berzê açarnayışanê mewcudan pheşti bıdê", "tux-empty-list-other-action": "Vênayışê açarnayışan", - "tux-empty-list-other-link": "Mesaca hemın bıvin", - "tux-editor-close-tooltip": "Racnê", - "tux-editor-expand-tooltip": "Hera ke", - "tux-editor-collapse-tooltip": "Teng kı", + "tux-empty-list-other-link": "Heme mesacan bımocne", + "tux-editor-close-tooltip": "Kip ke", + "tux-editor-expand-tooltip": "Hera kerê", + "tux-editor-collapse-tooltip": "Teng ke", "tux-editor-message-tools-show-editor": "Wiki-Editor de bımocne", "tux-editor-message-tools-history": "Tarix", "tux-editor-message-tools-delete": "Bestere", - "tux-editor-message-tools-translations": "Heme açarnayışi", + "tux-editor-message-tools-translations": "Açarnayışi pêro", + "tux-editor-message-tools-linktothis": "Gıreyê nê mesaci", "tux-editor-loading": "Bar beno...", + "tux-editor-loading-failed": "Pheştigerê açarnayışi bar nêbiyê :$1", "translate-search-more-languages-info": "$1 deha {{PLURAL:$1|zon|zoni}}", "translate-statsbar-tooltip": "%$1 açarneya, %$2 weyneya", "translate-statsbar-tooltip-with-fuzzy": "$1% açarneya, $2% weyneya, $3% kehano", "translate-search-more-groups-info": "$1 tayêna {{PLURAL:$1|grube|grubi}}", - "translate-ulsdep-title": "Vıraziyen nêbı" + "translate-syntax-error": "Açarnayış xetay rêzaqısan ihtiwa keno", + "tux-nojs": "Ena halet bê JavaScript nêgurweyêna. JavaScript dewrê ra veto, nêguriyeno ya zi pheşti nêbeno", + "specialpages-group-translation": "Açarnayış" } diff --git a/MLEB/Translate/i18n/core/dsb.json b/MLEB/Translate/i18n/core/dsb.json index 30b502f6..b0027852 100644 --- a/MLEB/Translate/i18n/core/dsb.json +++ b/MLEB/Translate/i18n/core/dsb.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ + "Derbeth", "Dundak", "Michawiki", - "Shirayuki", - "Derbeth" + "Shirayuki" ] }, "translate": "Pśełožyś", @@ -52,31 +52,11 @@ "translate-use-suggestion": "Aktualny pśełožk pśez toś to naraźenje wuměniś", "translate-edit-nopermission": "Trjebaš pśełožowańske pšawa, aby mógał powěźeńki pśełožowaś.", "translate-edit-askpermission": "Pšawo dostaś", - "translate-magic-pagename": "Rozšyrjony pśełožk MediaWiki", - "translate-magic-help": "Móžoš aliasy specialnych bokow, magiske słowa a mjenja mjenjowych rumow pśełožyś.\n\nAliasy specialnych bokow a magiske słowa mógu měś někotare pśełožki. Pśełožki wótźěluju se pśez komu (,). Mjenjowe rumy mógu jano jaden pśełožk měś.\n\nPśełožowanje mjenjowego ruma projektoweje diskusije $1 talk móžo komplicěrowane byś. $1 se pśez mjenjom sedła wuměnja (na pśikład {{ns:project_talk}}). Jolic w twójej rěcy njejo móžno, płaśiwy wuraz tworiś, mimo až dejš mě sedła změniš, daj nam to na boku [[Support|Pódpěra]] k wěsći.\n\nMusyš pśełožowaŕ byś, aby mogł změny cyniś.\nZměny se njeskładuju, až njekliknjoš na tłocašk \"Składowaś\" dołojce.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Pokazaś", - "translate-magic-cm-export": "Eksportěrowaś", - "translate-magic-nothing-to-export": "Njedajo nic eksportěrowaś.", - "translate-magic-cm-to-be": "Ma byś", - "translate-magic-cm-current": "aktualne", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Komentar", - "translate-magic-cm-save": "Składowaś", - "translate-magic-cm-updatedusing": "Z pomocu [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] zaktualizěrowany", - "translate-magic-cm-savefailed": "Składowanje njejo se raźiło", - "translate-magic-special": "Aliasy specialnych bokow", - "translate-magic-words": "Magiske słowa", - "translate-magic-namespace": "Mjenja mjenjowych rumow", - "translate-magic-notsaved": "Twója změna njejo se składła!", - "translate-magic-errors": "Pšosym skorigěruj {{PLURAL:$1|slědujucu zmólku|slědujucej zmólce|slědujuce zmólki|slědujuce zmólki}} w pśełožkach:", - "translate-magic-saved": "Twóje změny su se wuspěšnje składli.", - "translate-checks-parameters": "{{PLURAL:$2|Slědujucy parameter|Slědujucej parametra|Slědujuce parametry|Slědujucych parametrow}} se {{PLURAL:$2|njewužywa|njewužywatej|njewužywaju|njwužywa}}: $1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Slědujucy parameter jo njeznaty|Slědujucej parametra stej njeznatej|Slědujuce parametry su njeznate|Slědujucych parametrow jo njeznate}}: $1", + "translate-checks-parameters": "{{PLURAL:$2|Slědujucy parameter|Slědujucej parametra|Slědujuce parametry|Slědujucych parametrow}} se {{PLURAL:$2|njewužywa|njewužywatej|njewužywaju|njwužywa}}: $1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Slědujucy parameter jo njeznaty|Slědujucej parametra stej njeznatej|Slědujuce parametry su njeznate|Slědujucych parametrow jo njeznate}}: $1", "translate-checks-balance": "Jo njerowna licba {{PLURAL:$2|spinka|spinkow}}: $1", "translate-checks-links": "{{PLURAL:$2|Slědujucy wótkaz jo problematiski|Slědujucej wótkaza stej problematiskej|Slědujuce wótkaze su problematiske|Slědujucych wótkazow jo problematiske}}: $1", "translate-checks-links-missing": "{{PLURAL:$2|Slědujucy wótkaz felujo|Slědujucej $2 wótkaza felujotej|Slědujuce $2 wótkaze feluju|Slědujucych $2 wótkazow felujo}}: $1", - "translate-checks-xhtml": "Wuměń pšosym {{PLURAL:$2|Slědujucy tag|slědujucej taga|slědujuce tagi|slědujuce tagi}} pśez {{PLURAL:$2|korektny|korektnej|korektne|korektne}}: $1", "translate-checks-plural": "Definicija {{PLURAL:}} wužywa, pśełožk pak nic.", "translate-checks-plural-forms": "Za {{PLURAL:}} {{PLURAL:$1|jo se jadna forma pódała|stej se $1 formje pódałej|su se $1 formy pódali|jo se $1 formow pódało}}, ale {{PLURAL:$2|pódpěra se jano jadna forma|pódpěratej se $2 formje|pódpěraju se $2 formy|pódpěra se $2 formow}} (bźez formow 0= a 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} ma dwě jadnuckej formje na kóńcu. {{PLURAL:$1|mloko|mloko}} měł se ako {{PLURAL:$1|mloko}} pisaś.", @@ -86,7 +66,6 @@ "translate-checks-parametersnotequal": "Licba parametrow jo {{PLURAL:$1|$1}}; to měł {{PLURAL:$2|$2}} byś.", "translate-checks-malformed": "$1 ma njepłaśiwu formu.", "translate-checks-fudforum-syntax": "$1 město $2 w toś tom projekśe wužywaś.", - "translate-pref-nonewsletter": "Njesćelśo mě emailowy list nowosćow", "translate-pref-editassistlang": "Pomocne rěcy:", "prefs-translate": "Pśełožowańske opcije", "translate-pref-editassistlang-help": "Lisćina rěcnych kodow z komu ako źěleńske znamuško.\nPśełožowanje powěźeńki w toś tych rěcach se pokazuju, gaž pśełožujoš.\nStandardna lisćina rěcow wótwisujo wót swójeje rěcy.", @@ -215,7 +194,6 @@ "translate-import-err-no-such-file": "Dataja $1 njeeksistěrujo abo jnejo se lokalnje nagrała.", "translate-import-err-stale-group": "Kupka powěźeńkow, ku kótarejž toś ta dataja słuša, njeeksistěrujo.", "translate-import-err-no-headers": "Dataja mjejp derje wuformowana dataja gettext we formaśe pśełožowańskego formata:\nNjemóžno kupku a rěc z datajowych głowow zwěsćiś.", - "translate-import-err-warnings": "Dataja njejo derje wuformowana.\nZawěsć, až twój editor njewótpórujo póla msgctxt.\nDrobnostki: $1", "translate-js-summary": "Zespominanje:", "translate-js-save": "Składowaś", "translate-js-next": "Pśiducu powěźeńku składowaś a wocyniś", @@ -292,8 +270,8 @@ "tux-editor-need-more-help": "Trjebaš wěcej pomocy?", "tux-editor-ask-help": "Wó dalšne informacije pšosyś", "tux-editor-tm-match": "$1 % makanja", - "tux-warnings-more": "{{PLURAL:$1|$1 dalšne|$1dalšnej|$1dalšne|$1 dalšnych}}", - "tux-warnings-hide": "schowaś", + "tux-notices-more": "{{PLURAL:$1|$1 dalšne|$1dalšnej|$1dalšne|$1 dalšnych}}", + "tux-notices-hide": "schowaś", "tux-editor-save-failed": "Pśełožk njedajo se składowaś: $1", "tux-editor-n-uses": "{{PLURAL:$1|$1 raz|dwójcy|$1 raze|$1 razow}} wužyty", "tux-editor-message-desc-more": "Wěcej se woglědaś", @@ -306,8 +284,8 @@ "tux-proofread-action-tooltip": "Ako pśeglědany markěrowaś", "tux-proofread-edit-label": "Wobźěłaś", "tux-editor-page-mode": "Bok", - "tux-editor-outdated-warning": "Toś ten pśełožk musy se snaź aktualizěrowaś.", - "tux-editor-outdated-warning-diff-link": "Rozdźěle pokazaś", + "tux-editor-outdated-notice": "Toś ten pśełožk musy se snaź aktualizěrowaś.", + "tux-editor-outdated-notice-diff-link": "Rozdźěle pokazaś", "tux-editor-doc-editor-placeholder": "Dokumentacija powěźeńki", "tux-editor-doc-editor-save": "Dokumentaciju składowaś", "tux-editor-doc-editor-cancel": "Pśetergnuś", @@ -345,7 +323,5 @@ "translate-search-more-languages-info": "$1 {{PLURAL:$1|dalšna rěc|dalšnej rěcy|dalšne rěcy|dalšnych rěcow}}", "translate-statsbar-tooltip": "$1 % pśełožone, $2 % pśeglědane", "translate-statsbar-tooltip-with-fuzzy": "$1 % pśełožone, $2 % pśeglědane, $3 % zestarjone", - "translate-search-more-groups-info": "$1 {{PLURAL:$1|dalšna kupka|dalšnej kupce|dalšne kupki|dalšnych kupkow}}", - "translate-ulsdep-title": "Konfiguraciska zmólka", - "translate-ulsdep-body": "Pśełožowańske rozšyrjenje wótwisujo wót [https://www.mediawiki.org/wiki/Extension:UniversalLanguageSelector rozšyrjenja Universal Language Selector]." + "translate-search-more-groups-info": "$1 {{PLURAL:$1|dalšna kupka|dalšnej kupce|dalšne kupki|dalšnych kupkow}}" } diff --git a/MLEB/Translate/i18n/core/dtp.json b/MLEB/Translate/i18n/core/dtp.json index d67bf42a..24bed2b7 100644 --- a/MLEB/Translate/i18n/core/dtp.json +++ b/MLEB/Translate/i18n/core/dtp.json @@ -6,7 +6,5 @@ }, "translate-page-navigation-legend": "Popotunud", "translate-next": "Bolikon sumuhut", - "translate-page-edit": "idito", - "translate-magic-cm-current": "Timpu diti", - "translate-magic-cm-comment": "Kanu:" + "translate-page-edit": "idito" } diff --git a/MLEB/Translate/i18n/core/dty.json b/MLEB/Translate/i18n/core/dty.json index f2e1c7b0..f7b27829 100644 --- a/MLEB/Translate/i18n/core/dty.json +++ b/MLEB/Translate/i18n/core/dty.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Nirajan pant", "रमेश सिंह बोहरा", - "राम प्रसाद जोशी", - "Nirajan pant" + "राम प्रसाद जोशी" ] }, "translate-edit-no-information": "यै रैबारको दस्तावेजीकरण नाइथिन।\nयदि तम यो सन्देश काँ और कस्याँ प्रयोग अरीन्छ भण्णेइ कुरडी जाणन्छौ भँण्या तम येइ सन्देश को दस्तावेजीकरण थपीबर और अनुवादकअन लाई मद्दत अरी सकन्छौ।", diff --git a/MLEB/Translate/i18n/core/ee.json b/MLEB/Translate/i18n/core/ee.json index 0a0c7a4e..355eba93 100644 --- a/MLEB/Translate/i18n/core/ee.json +++ b/MLEB/Translate/i18n/core/ee.json @@ -17,10 +17,6 @@ "translate-edit-title": "Trɔ asi le \"$1\" ŋu", "translate-edit-in-other-languages": "Du le gbe bubuwo me", "translate-edit-tmmatch": "$1% sɔsɔme", - "translate-magic-cm-save": "Dzrae ɖo", - "translate-magic-cm-savefailed": "Wometeŋu dzrae ɖo o", - "translate-magic-notsaved": "Wometeŋu le nusiwo wòtrɔ la ɖe anyi o", - "translate-magic-saved": "Wodzra wò tɔtrɔwo ɖo dedie.", "translate-rc-translation-filter-no": "Megawɔ trɔtrɔ aɖeke o", "translate-rc-translation-filter-only": "Fia gɔmeɖeɖewo ko", "translate-rc-translation-filter-filter": "Ɖe gɔmeɖeɖewo le eme", diff --git a/MLEB/Translate/i18n/core/el.json b/MLEB/Translate/i18n/core/el.json index 85206e1e..1c0e02c5 100644 --- a/MLEB/Translate/i18n/core/el.json +++ b/MLEB/Translate/i18n/core/el.json @@ -9,14 +9,15 @@ "Flyax", "Geraki", "Glavkos", + "KATRINE1992", + "KATRINE1993", "Lou", + "Nikosgranturismogt", + "Norhorn", "Omnipaedista", "Protnet", "ZaDiak", - "Περίεργος", - "KATRINE1992", - "Nikosgranturismogt", - "KATRINE1993" + "Περίεργος" ] }, "translate": "Μεταφράστε", @@ -70,31 +71,11 @@ "translate-export-invalid-format": "Παρακαλούμε καθορίστε έγκυρη μορφή.", "translate-export-not-supported": "Η εξαγωγή μετάφρασης δεν υποστηρίζεται.", "translate-export-format-notsupported": "Η καθορισμένη μορφή εξαγωγής δεν υποστηρίζεται από την ομάδα μηνυμάτων.", - "translate-magic-pagename": "Μετάφραση εκτεταμένου MediaWiki", - "translate-magic-help": "Μπορείτε να μεταφράσετε ψευδώνυμα ειδικών σελίδων, μαγικές λέξεις και ονοματοχώρους.\n\nΤα ψευδώνυμα ειδικών σελίδων και οι μαγικές λέξεις μπορούν να έχουν πολλαπλές μεταφράσεις.\nΟι μεταφράσεις χωρίζονται με κόμμα (,).\nΟι ονοματοχώροι μπορούν να έχουν μόνο μία μετάφραση.\n\nΟι μεταφράσεις σελίδων συζήτησης του ονοματοχώρου του εγχειρήματος $1 talk μπορεί να είναι περίπλοκες. Η μεταβλητή $1 αντικαθίσταται με το όνομα του ιστοτόπου (για παράδειγμα {{ns:project_talk}}).\n\nΑν δεν είναι δυνατόν στη γλώσσα σας να σχηματίσετε έγκυρη έκφραση χωρίς να αλλάξετε το όνομα του ιστοτόπου, παρακαλούμε επικοινωνήστε μαζί μας στην [[Support|Υποστήριξη]].\n\nΠρέπει να είστε στην ομάδα των μεταφραστών για να αποθηκεύσετε τις αλλαγές.\nΟι αλλαγές δεν αποθηκεύονται μέχρι να κάνετε κλικ στο κουμπί αποθήκευσης παρακάτω.", - "translate-magic-module": "Λειτουργική μονάδα:", - "translate-magic-submit": "Προσκόμισε", - "translate-magic-cm-export": "Εξαγωγή", - "translate-magic-nothing-to-export": "Δεν υπάρχει τίποτα για εξαγωγή.", - "translate-magic-cm-to-be": "Να γίνει", - "translate-magic-cm-current": "Τρέχον", - "translate-magic-cm-original": "Πρωτότυπο", - "translate-magic-cm-comment": "Σχόλιο:", - "translate-magic-cm-save": "Αποθήκευση", - "translate-magic-cm-updatedusing": "Ενημερώθηκε χρησιμοποιώντας τη σελίδα [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Η αποθήκευση απέτυχε", - "translate-magic-special": "Ψευδώνυμα ειδικών σελίδων", - "translate-magic-words": "Μαγικές λέξεις", - "translate-magic-namespace": "Ονομασίες ονοματοχώρων", - "translate-magic-notsaved": "Η αλλαγή σας δεν αποθηκεύθηκε!", - "translate-magic-errors": "Παρακαλώ διορθώστε {{PLURAL:$1|το ακόλουθο σφάλμα|τα ακόλουθα σφάλματα}} στις μεταφράσεις:", - "translate-magic-saved": "Οι αλλαγές σας αποθηκεύτηκαν.", - "translate-checks-parameters": "{{PLURAL:$2|Η ακόλουθη παράμετρος δεν χρησιμοποιείται|Οι ακόλουθες παράμετροι δεν χρησιμοποιούνται}}: $1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Η ακόλουθη παράμετρος|Οι ακόλουθες παράμετροι}} είναι {{PLURAL:$2|άγνωστη|άγνωστες}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Η ακόλουθη παράμετρος δεν χρησιμοποιείται|Οι ακόλουθες παράμετροι δεν χρησιμοποιούνται}}: $1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Η ακόλουθη παράμετρος|Οι ακόλουθες παράμετροι}} είναι {{PLURAL:$2|άγνωστη|άγνωστες}}:\n$1", "translate-checks-balance": "Υπάρχει ακανόνιστη ποσότητα {{PLURAL:$2|παρενθέσεων|παρενθέσεων}}:\n$1", "translate-checks-links": "{{PLURAL:$2|Ο ακόλουθος σύνδεσμος|Οι ακόλουθοι $2 σύνδεσμοι}} είναι {{PLURAL:$2|προβληματικός|προβληματικοί}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Ο ακόλουθος σύνδεσμος απουσιάζει|Οι ακόλουθοι $2 σύνδεσμοι απουσιάζει}}:\n$1", - "translate-checks-xhtml": "Παρακαλώ αντικαταστήστε {{PLURAL:$2|την ακόλουθη ετικέτα|τις ακόλουθες ετικέτες}} με {{PLURAL:$2|τη σωστή|τις σωστές}}:\n$1", "translate-checks-plural": "Ο ορισμός χρησιμοποιεί τη συνάρτηση {{PLURAL:}} αλλά η μετάφραση όχι.", "translate-checks-plural-forms": "Στη συνάρτηση {{PLURAL:}} {{PLURAL:$1|δόθηκε μια μορφή|δόθηκαν $1 μορφές}} αλλά {{PLURAL:$2|αλλά μόνο μια μορφή υποστηρίζεται|υποστηρίζονται $2 μορφές}} (εξαιρώντας τις μορφές 0= και 1=).", "translate-checks-plural-dupe": "Η συνάρτηση {{PLURAL:}} έχει διπλές μορφές στο τέλος. Το {{PLURAL:$1|sheep|sheep}} πρέπει να γράφεται ως {{PLURAL:$1|sheep}}.", @@ -104,7 +85,6 @@ "translate-checks-parametersnotequal": "Το πλήθος των παραμέτρων είναι {{PLURAL:$1|$1}} ενώ θα έπρεπε να είναι {{PLURAL:$2|$2}}.", "translate-checks-malformed": "Το $1 έχει λανθασμένη μορφή.", "translate-checks-fudforum-syntax": "Χρήση του $1 αντί του $2 σε αυτό το εγχείρημα.", - "translate-pref-nonewsletter": "Μην μου στέλνετε e-mail newsletters", "translate-pref-editassistlang": "Βοηθητικές γλώσσες:", "prefs-translate": "Επιλογές μετάφρασης", "translate-pref-editassistlang-help": "Κατάλογος κωδικών γλωσσών χωρισμένων με κόμματα.\nΗ μετάφραση ενός μηνύματος σε αυτές τις γλώσσες εμφανίζεται μόνο κατά τη διενέργεια μιας μετάφρασης.\nΗ προεπιλεγμένη λίστα των γλωσσών εξαρτάται από τη γλώσσα σου.", @@ -121,7 +101,7 @@ "translate-rcfilters-translations": "Μεταφράσεις", "translate-rcfilters-translations-only-label": "Μεταφράσεις", "translate-rcfilters-translations-only-desc": "Αλλαγές στις μεταφρασμένες σελίδες", - "translate-rcfilters-translations-filter-label": "Δεν υπάρχουν μεταφράσεις", + "translate-rcfilters-translations-filter-label": "Όχι μεταφράσεις", "translate-rcfilters-translations-filter-desc": "Όλες οι αλλαγές που δεν αφορούν μεταφράσεις.", "translate-rcfilters-translations-site-label": "Μηνύματα της ιστοσελίδας", "translate-rcfilters-translations-site-desc": "Προσωποποιημένα μηνύματα στο MediaWiki", @@ -210,6 +190,7 @@ "supportedlanguages-count": "$1 {{PLURAL:$1|γλώσσα|γλώσσες}} συνολικά.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|επεξεργασία|επεξεργασίες}} - τελευταία επεξεργασία $3 {{PLURAL:$3|day|days}} πριν", "abusefilter-edit-builder-vars-translate-source-text": "Αρχικό κείμενο μεταφραστικής ενότητας", + "abusefilter-edit-builder-vars-translate-target-language": "Γλώσσα στόχος για μετάφραση", "translate-save": "Αποθήκευση ($1)", "translate-jssti-add": "Προσθήκη στην λίστα", "managemessagegroups": "Διαχείριση ομάδας μηνυμάτων", @@ -220,6 +201,8 @@ "translate-smg-more": "Θα υπάρχουν περισσότερες αλλαγές για διεκπεραίωση μετά την υποβολή αυτών των αλλαγών.", "translate-smg-left": "Περιεχόμενο μηνύματος στο wiki", "translate-smg-right": "Εισερχόμενες αλλαγές", + "translate-smg-rename-select": "Επιλογή", + "translate-smg-rename-cancel": "Άκυρο", "translate-manage-import-diff": "Μήνυμα $1 | Ενέργειες: $2", "translate-manage-import-new": "Νέο μήνυμα $1", "translate-manage-import-deleted": "Διαγεγραμμένο μήνυμα $1", @@ -227,6 +210,7 @@ "translate-manage-action-conflict": "Εισαγωγή και ασαφοποίηση", "translate-manage-action-ignore": "Αγνόηση", "translate-manage-action-fuzzy": "Εισαγωγή και ασαφοποίηση μεταφράσεων", + "translate-manage-action-rename": "Μετονομασία", "translate-manage-nochanges": "Δεν υπάρχουν αλλαγές στους ορισμούς μηνυμάτων για αυτήν την ομάδα.", "translate-manage-nochanges-other": "Δεν υπήρξαν μεταβολές για αυτήν τη γλώσσα.\nΧρησιμοποιήστε τον παρακάτω σύνδεσμο για να επιστρέψετε σε προβολή λεπτομερειών ομάδας.", "translate-manage-inconsistent": "Εντοπίστηκε ασυνέπεια στο αίτημα.\nΠαρακαλούμε ελέγξτε για αλλαγές και προσπαθήστε ξανά.\nΛεπτομέρειες: $1.", @@ -246,10 +230,9 @@ "translate-import-err-no-such-file": "Το αρχείο $1 δεν υπάρχει ή δεν έχει φορτωθεί τοπικά.", "translate-import-err-stale-group": "Η ομάδα μηνυμάτων στην οποία ανήκει αυτό το αρχείο δεν υπάρχει.", "translate-import-err-no-headers": "Το αρχείο δεν είναι ένα σωστά σχηματισμένο αρχείο τύπου Gettext στη μορφή που αναγνωρίζει η επέκταση Translate:\nΑδύνατος ο προσδιορισμός ομάδας μηνυμάτων και γλώσσας από την κεφαλίδα του αρχείου.", - "translate-import-err-warnings": "Το αρχείο δεν είναι σωστά σχηματισμένο.\nΒεβαιωθείτε ότι το πρόγραμμα επεξεργασίας σας δεν αφαιρεί τα πεδία msgctxt.\nΛεπτομέρειες: $1", "translate-js-summary": "Σύνοψη:", "translate-js-save": "Αποθήκευση", - "translate-js-next": "Αποθήκευση και άνοιγμα του επόμενου", + "translate-js-next": "Δημοσίευση και άνοιγμα του επόμενου", "translate-js-skip": "Μετάβαση στο επόμενο", "translate-js-history": "Ιστορικό μετάφρασης", "translate-js-support": "Κάντε ερώτηση", @@ -304,7 +287,7 @@ "tux-tab-unproofread": "Αθεώρητα", "tux-edit": "Επεξεργασία", "tux-status-optional": "Προαιρετικά", - "tux-status-fuzzy": "Παρωχημένα", + "tux-status-fuzzy": "Παρωχημένο", "tux-status-proofread": "Θεωρημένο", "tux-status-translated": "Μεταφρασμένο", "tux-status-saving": "Αποθήκευση...", @@ -327,8 +310,8 @@ "tux-editor-need-more-help": "Χρειάζεστε περισσότερη βοήθεια;", "tux-editor-ask-help": "Ζητήστε περισσότερες πληροφορίες", "tux-editor-tm-match": "$1% αντιστοίχιση", - "tux-warnings-more": "{{PLURAL:$1|περισσότερες $1}}", - "tux-warnings-hide": "απόκρυψη", + "tux-notices-more": "{{PLURAL:$1|περισσότερες $1}}", + "tux-notices-hide": "απόκρυψη", "tux-editor-save-failed": "Η αποθήκευση της μετάφρασης απέτυχε: $1", "tux-editor-n-uses": "χρησιμοποιήθηκε $1 {{PLURAL:$1|φορά|φορές}}", "tux-editor-message-desc-more": "Δείτε περισσότερα", @@ -341,8 +324,8 @@ "tux-proofread-action-tooltip": "Σήμανση ως θεωρημένο", "tux-proofread-edit-label": "Επεξεργασία", "tux-editor-page-mode": "Σελίδα", - "tux-editor-outdated-warning": "Αυτή η μετάφραση μπορεί να χρειάζεται ενημέρωση.", - "tux-editor-outdated-warning-diff-link": "Εμφάνιση διαφορών", + "tux-editor-outdated-notice": "Αυτή η μετάφραση μπορεί να χρειάζεται ενημέρωση.", + "tux-editor-outdated-notice-diff-link": "Εμφάνιση διαφορών", "tux-editor-doc-editor-placeholder": "Τεκμηρίωση μηνύματος", "tux-editor-doc-editor-save": "Αποθήκευση τεκμηρίωσης", "tux-editor-doc-editor-cancel": "Ακύρωση", @@ -382,10 +365,9 @@ "tux-editor-loading": "Γίνεται φόρτωση...", "translate-search-more-languages-info": "$1 ακόμη {{PLURAL:$1|γλώσσα|γλώσσες}}", "translate-statsbar-tooltip": "$1% μεταφρασμένα, $2% θεωρημένα", - "translate-statsbar-tooltip-with-fuzzy": "$1% μεταφρασμένα, $2% θεωρημένα, $3 παρωχημένα", + "translate-statsbar-tooltip-with-fuzzy": "$1% μεταφρασμένα, $2% θεωρημένα, $3% παρωχημένα", "translate-search-more-groups-info": "$1 ακόμα {{PLURAL:$1|ομάδα|ομάδες}}", - "translate-ulsdep-title": "Σφάλμα ρύθμισης", - "translate-ulsdep-body": "Η επέκταση Μετάφραση εξαρτάται από την [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector επέκταση Καθολικός Επιλογέας Γλώσσας].", "tux-session-expired": "Δεν είστε πια σε σύνδεση. Παρακαλούμε συνδεθείτε σε ξεχωριστή καρτέλα. Εναλλακτικά, δημιουργήστε ένα αντίγραφο των μη αποθηκευμένων μεταφράσεων, συνδεθείτε, επιστρέψετε σε αυτή τη σελίδα και εισαγάγετε τις μεταφράσεις σας ξανά.", - "tux-nojs": "Αυτό το εργαλείο δεν λειτουργεί χωρίς JavaScript. Ή το JavaScript είναι απενεργοποιημένο, ή απέτυχε να δουλέψει ή αυτό το πρόγραμμα περιήγησης δεν υποστηρίζεται." + "tux-nojs": "Αυτό το εργαλείο δεν λειτουργεί χωρίς JavaScript. Ή το JavaScript είναι απενεργοποιημένο, ή απέτυχε να δουλέψει ή αυτό το πρόγραμμα περιήγησης δεν υποστηρίζεται.", + "specialpages-group-translation": "Μετάφραση" } diff --git a/MLEB/Translate/i18n/core/en-gb.json b/MLEB/Translate/i18n/core/en-gb.json index 217c618f..5d585e86 100644 --- a/MLEB/Translate/i18n/core/en-gb.json +++ b/MLEB/Translate/i18n/core/en-gb.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ + "Chase me ladies, I'm the Cavalry", "Lloffiwr", "Shirayuki", - "Thehelpfulone", - "Chase me ladies, I'm the Cavalry" + "Thehelpfulone" ] }, "supportedlanguages-summary": "This page shows a list of all languages supported by {{SITENAME}},\ntogether with the names of the translators working on that language.\nA translator's name appears larger, the more edits the translator has contributed.\nThe colour of an underline indicates how recently a translator has been active here.", diff --git a/MLEB/Translate/i18n/core/en.json b/MLEB/Translate/i18n/core/en.json index d2ddc9b6..c5c67457 100644 --- a/MLEB/Translate/i18n/core/en.json +++ b/MLEB/Translate/i18n/core/en.json @@ -11,7 +11,7 @@ "translate": "Translate", "translate-extensionname": "Translate", "translate-desc": "[[Special:Translate|Special page]] for translating MediaWiki and beyond", - "translate-fuzzybot-desc": "This is a special system account used by the MediaWiki [https://www.mediawiki.org/wiki/Extension:Translate Translate extension] used to maintain translations.\nThis account is part of the MediaWiki software and it is not owned by any user.", + "translate-fuzzybot-desc": "This is a special system account used by the MediaWiki [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate Translate extension] used to maintain translations.\nThis account is part of the MediaWiki software and it is not owned by any user.", "translate-taskui-export-to-file": "Export in native format", "translate-taskui-export-as-po": "Export for off-line translation", "translate-taction-translate": "Translate", @@ -61,46 +61,42 @@ "translate-export-invalid-format": "Please specify a valid format.", "translate-export-not-supported": "Translation export is not supported.", "translate-export-format-notsupported": "The specified export format is not supported by the message group.", - "translate-magic-pagename": "Extended MediaWiki translation", - "translate-magic-help": "You can translate special pages aliases, magic words and namespace names.\n\nSpecial page aliases and magic words can have multiple translations.\nTranslations are separated by a comma (,).\nNamespaces can have only one translation.\n\nTranslating the project talk namespace $1 talk may be complicated.\n$1 is replaced with the project sitename (for example {{ns:project_talk}}).\nIf it is not possible in your language to form a valid expression without changing the sitename, please let us know on [[Support]].\n\nYou need to be a translator to save changes.\nChanges are not saved until you click the save button below.", - "translate-magic-module": "Module:", - "translate-magic-submit": "Fetch", - "translate-magic-cm-export": "Export", - "translate-magic-nothing-to-export": "There is nothing to export.", - "translate-magic-cm-to-be": "To-be", - "translate-magic-cm-current": "Current", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Comment:", - "translate-magic-cm-save": "Save", - "translate-magic-cm-updatedusing": "Updated using [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Save failed", - "translate-magic-special": "Special page aliases", - "translate-magic-words": "Magic words", - "translate-magic-namespace": "Namespace names", - "translate-magic-notsaved": "Your edit was not saved!", - "translate-magic-errors": "Please fix following {{PLURAL:$1|error|errors}} in translations:", - "translate-magic-saved": "Your changes were saved.", - "translate-checks-parameters": "Following {{PLURAL:$2|parameter is|parameters are}} not used:\n$1", - "translate-checks-parameters-unknown": "Following {{PLURAL:$2|parameter is|parameters are}} unknown:\n$1", + "translate-export-group-too-large": "The chosen message group is too large. Choose a message group that has fewer than $1 {{PLURAL:$1|message|messages}} or contact translation admin for advice.", + "translate-checks-parameters": "Following {{PLURAL:$2|parameter is|parameters are}} not used:\n$1", + "translate-checks-parameters-unknown": "Following {{PLURAL:$2|parameter is|parameters are}} unknown:\n$1", "translate-checks-balance": "There is an uneven amount of {{PLURAL:$2|parenthesis|parentheses}}:\n$1", "translate-checks-links": "Following {{PLURAL:$2|link is|$2 links are}} problematic:\n$1", "translate-checks-links-missing": "Following {{PLURAL:$2|link is|$2 links are}} missing:\n$1", - "translate-checks-xhtml": "Please replace the following {{PLURAL:$2|tag|tags}} with correct ones:\n$1", "translate-checks-plural": "Definition uses {{PLURAL:}} but translation does not.", "translate-checks-plural-forms": "{{PLURAL:}} was given {{PLURAL:$1|one form|$1 forms}} but {{PLURAL:$2|only one form is|$2 forms are}} supported (excluding 0= and 1= forms).", "translate-checks-plural-dupe": "{{PLURAL:}} has duplicate forms at the end. {{PLURAL:$1|sheep|sheep}} should be written as {{PLURAL:$1|sheep}}.", + "translate-checks-gettext-plural-missing": "This translation must have {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "This message does not support {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} accepts exactly $1 {{PLURAL:$1|plural form|plural forms}}. Currently $2 {{PLURAL:$2|plural form is|plural forms are}} given.", + "translate-checks-smartformat-plural-missing": "This translation must have plural on variable $1.", + "translate-checks-smartformat-plural-unsupported": "This message does not support plural on variable $1.", + "translate-checks-smartformat-plural-count": "Incorrect number of plural forms in $3. It must have $1 {{PLURAL:$1|plural form|plural forms}}. Currently $2 {{PLURAL:$2|plural form is|plural forms are}} given.", + "translate-checks-unicode-plural-missing": "This translation must have {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "This message does not support {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "Plural forms should be defined as $1. This translation contains $2.", "translate-checks-pagename": "Namespace changed from the definition", "translate-checks-format": "This translation does not follow the definition or has invalid syntax: $1", - "translate-checks-escape": "The following escapes may be accidental: $1", + "translate-checks-escape": "The following escape {{PLURAL:$2|character|characters}} may be accidental: $1. {{PLURAL:$4|A valid escape character is|Valid escape characters include:}} $3.", "translate-checks-parametersnotequal": "Parameter count is {{PLURAL:$1|$1}}; should be {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 is malformed.", "translate-checks-fudforum-syntax": "Use $1 instead of $2 in this project.", - "translate-pref-nonewsletter": "Do not send me email newsletters", + "translate-checks-newline-missing-start": "There {{PLURAL:$1|is|are}} $1 missing newline {{PLURAL:$1|character|characters}} at the beginning of the translation.", + "translate-checks-newline-missing-end": "There {{PLURAL:$1|is|are}} $1 missing newline {{PLURAL:$1|character|characters}} at the end of the translation.", + "translate-checks-newline-extra-start": "There {{PLURAL:$1|is|are}} $1 extra newline {{PLURAL:$1|character|characters}} at the beginning of the translation.", + "translate-checks-newline-extra-end": "There {{PLURAL:$1|is|are}} $1 extra newline {{PLURAL:$1|character|characters}} at the end of the translation.", + "translate-checks-value-not-present": "The translation must be equal to {{PLURAL:$1|1=|one of the following values:}} $1.", + "translate-checks-replacement": "Use $2 instead of $1.", "translate-pref-editassistlang": "Assistant languages:", "prefs-translate": "Translation options", "translate-pref-editassistlang-help": "Comma separated list of language codes.\nTranslation of a message in these languages are shown when you are translating.\nThe default list of languages depends on your language.", "translate-pref-editassistlang-bad": "Invalid language code in the list:\n$1.", "right-translate": "Edit using the translate interface", + "action-translate": "edit using the translate interface", "right-translate-manage": "Manage message groups", "action-translate-manage": "manage message groups", "right-translate-import": "Import offline translations", @@ -203,17 +199,30 @@ "supportedlanguages-recenttranslations": "recent translations", "supportedlanguages-count": "$1 {{PLURAL:$1|language|languages}} in total.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|edit|edits}} - last edit $3 {{PLURAL:$3|day|days}} ago", + "translate-supportedlanguages-cached": "This information was cached $1 ago.", "abusefilter-edit-builder-vars-translate-source-text": "Source text of translation unit", - "translate-save": "Save ($1)", + "abusefilter-edit-builder-vars-translate-target-language": "Target language for translation", + "translate-save": "Publish ($1)", "translate-jssti-add": "Add to list", "managemessagegroups": "Message group management", "translate-smg-notallowed": "You are not allowed to execute this action.", "translate-smg-nochanges": "There are no changes to process.", "translate-smg-submit": "Submit changes for processing", "translate-smg-submitted": "Message definitions have been updated. Changes are being processed in the background.", + "translate-smg-submitted-with-failure": "Updating message {{PLURAL:$1|definition|definitions}} failed for the following {{PLURAL:$1|group|groups}} - $2. $3", + "translate-smg-submitted-others-processing": "Message definitions for other groups are being processed in the background.", "translate-smg-more": "There will be more changes to process after submitting these changes.", "translate-smg-left": "Message content in wiki", "translate-smg-right": "Incoming changes", + "translate-smg-rename-select": "Select", + "translate-smg-rename-cancel": "Cancel", + "translate-smg-rename-search": "Search for matching message...", + "translate-smg-rename-select-err": "Please select a message to be renamed", + "translate-smg-rename-no-msg": "No messages found.", + "translate-smg-rename-new": "Add as new...", + "translate-smg-rename-rename": "Add as rename of...", + "translate-smg-rename-dialog-title": "Select matching rename for $1", + "translate-smg-changeset-modified": "The changeset has been modified by another user or process. Your changes cannot be published as it might override their changes. Please reload the page to see the latest changes.", "translate-manage-import-diff": "Message $1 | Actions: $2", "translate-manage-import-new": "New message $1", "translate-manage-import-deleted": "Deleted message $1", @@ -221,11 +230,15 @@ "translate-manage-action-conflict": "Import and fuzzy", "translate-manage-action-ignore": "Ignore", "translate-manage-action-fuzzy": "Import and fuzzy translations", + "translate-manage-action-rename-fuzzy": "Rename and fuzzy translations", + "translate-manage-action-rename": "Rename", + "translate-manage-action-ignore-change": "Ignore translation change", "translate-manage-nochanges": "There are no changes in message definitions for this group.", "translate-manage-nochanges-other": "There were no changes for this language.\nUse the link below to return to the group details view.", "translate-manage-inconsistent": "Detected inconsistency in the request.\nPlease check for changes and try again.\nDetails: $1.", "translate-manage-toolong": "The maximum processing time of $1 {{PLURAL:$1|second|seconds}} exceeded.\nPlease resubmit the form to continue processing.", "translate-manage-import-summary": "Importing a new version from external source", + "translate-manage-import-rename-summary": "Renamed in external source", "translate-manage-conflict-summary": "Importing a new version from external source.\nPlease check.", "translate-manage-submit": "Execute", "translate-manage-intro-other": "Below is list of translation changes in the language $1.\nPlease review the changes and choose an action you want to take for each update.\nIf you choose to ignore changes, this action is only temporary.", @@ -240,15 +253,14 @@ "translate-import-err-no-such-file": "File $1 does not exist or has not been uploaded locally.", "translate-import-err-stale-group": "The message group this file belongs to does not exist.", "translate-import-err-no-headers": "File is not a well formed Gettext file in Translate extension format:\nUnable to determine message group and language from file headers.", - "translate-import-err-warnings": "The file is not well formed.\nMake sure your editor does not remove msgctxt fields.\nDetails: $1", "translate-js-summary": "Summary:", - "translate-js-save": "Save", - "translate-js-next": "Save and open next", + "translate-js-save": "Publish", + "translate-js-next": "Publish and open next", "translate-js-skip": "Skip to next", "translate-js-history": "Translation history", "translate-js-support": "Ask question", "translate-js-support-title": "Ask for help if there is not enough information to translate this message correctly.", - "translate-js-support-unsaved-warning": "You have unsaved translations.", + "translate-js-support-unsaved-warning": "You have unpublished translations.", "translate-gs-pos": "Pos.", "translate-gs-code": "Code", "translate-gs-continent": "Continent", @@ -301,14 +313,14 @@ "tux-status-fuzzy": "Outdated", "tux-status-proofread": "Reviewed", "tux-status-translated": "Translated", - "tux-status-saving": "Saving...", - "tux-status-unsaved": "Unsaved", + "tux-status-saving": "Publishing...", + "tux-status-unsaved": "Unpublished", "tux-save-unknown-error": "Unknown error occurred.", "tux-editor-placeholder": "Your translation", "tux-editor-editsummary-placeholder": "Optional summary", "tux-editor-paste-original-button-label": "Paste source text", "tux-editor-discard-changes-button-label": "Discard changes", - "tux-editor-save-button-label": "Save translation", + "tux-editor-save-button-label": "Publish translation", "tux-editor-skip-button-label": "Skip to next", "tux-editor-cancel-button-label": "Cancel", "tux-editor-confirm-button-label": "Confirm translation", @@ -321,9 +333,9 @@ "tux-editor-need-more-help": "Need more help?", "tux-editor-ask-help": "Ask for more information", "tux-editor-tm-match": "$1% match", - "tux-warnings-more": "{{PLURAL:$1|$1 more}}", - "tux-warnings-hide": "hide", - "tux-editor-save-failed": "Saving the translation failed: $1", + "tux-notices-more": "{{PLURAL:$1|$1 more}}", + "tux-notices-hide": "hide", + "tux-editor-save-failed": "Publishing the translation failed: $1", "tux-editor-n-uses": "used $1 {{PLURAL:$1|time|times}}", "tux-editor-message-desc-more": "View more", "tux-editor-message-desc-less": "View less", @@ -335,10 +347,10 @@ "tux-proofread-action-tooltip": "Mark as reviewed", "tux-proofread-edit-label": "Edit", "tux-editor-page-mode": "Page", - "tux-editor-outdated-warning": "This translation may need to be updated.", - "tux-editor-outdated-warning-diff-link": "Show differences", + "tux-editor-outdated-notice": "This translation may need to be updated.", + "tux-editor-outdated-notice-diff-link": "Show differences", "tux-editor-doc-editor-placeholder": "Message documentation", - "tux-editor-doc-editor-save": "Save documentation", + "tux-editor-doc-editor-save": "Publish documentation", "tux-editor-doc-editor-cancel": "Cancel", "tux-messagetable-more-messages": "$1 more {{PLURAL:$1|message|messages}}", "tux-messagetable-loading-messages": "Loading {{PLURAL:$1|message|messages}}...", @@ -374,12 +386,13 @@ "tux-editor-message-tools-translations": "All translations", "tux-editor-message-tools-linktothis": "Link to this message", "tux-editor-loading": "Loading...", + "tux-editor-loading-failed": "Failed to load translation aids: $1", "translate-search-more-languages-info": "$1 more {{PLURAL:$1|language|languages}}", "translate-statsbar-tooltip": "$1% translated, $2% reviewed", "translate-statsbar-tooltip-with-fuzzy": "$1% translated, $2% reviewed, $3% outdated", "translate-search-more-groups-info": "$1 more {{PLURAL:$1|group|groups}}", - "translate-ulsdep-title": "Configuration error", - "translate-ulsdep-body": "The Translate extension depends on the [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector Universal Language Selector extension].", + "translate-syntax-error": "Translation contains syntax errors", "tux-session-expired": "You are no longer logged in. Please log in in a separate tab. Alternatively, make a copy of unsaved translations, log in, return to this page and enter your translations again.", - "tux-nojs": "This tool does not work without JavaScript. JavaScript is disabled, failed to work, or this browser is unsupported." + "tux-nojs": "This tool does not work without JavaScript. JavaScript is disabled, failed to work, or this browser is unsupported.", + "specialpages-group-translation": "Translation" } diff --git a/MLEB/Translate/i18n/core/eo.json b/MLEB/Translate/i18n/core/eo.json index 7dfe082a..010232fb 100644 --- a/MLEB/Translate/i18n/core/eo.json +++ b/MLEB/Translate/i18n/core/eo.json @@ -6,21 +6,23 @@ "Anakmalaysia", "ArnoLagrange", "Blahma", + "Joao Xavier", + "KuboF", "Melancholie", "Michawiki", "Mihxil", - "Tlustulimu", - "Yekrats", + "Mirin", + "Psychoslave", "Remux", - "KuboF", "Robin van der Vliet", - "Psychoslave", - "Joao Xavier", + "Tlustulimu", + "Yekrats", "YvesNevelsteen" ] }, "translate": "Tradukado", "translate-desc": "[[Special:Translate|Speciala paĝo]] por traduki MediaWiki kaj alia", + "translate-fuzzybot-desc": "Jen speciala sistema konto uzata de la [https://www.mediawiki.org/wiki/Extension:Translate etendaĵo Translate] por mastrumi tradukojn. Jena konto estas parto de la programaro MediaVikio, kaj neniu uzanto posedas ĝin.", "translate-taskui-export-to-file": "Elportu en fonta formato", "translate-taskui-export-as-po": "Eksportu por eksterkonekta traduko", "translate-taction-translate": "Traduki", @@ -29,8 +31,8 @@ "translate-taction-mstats": "Statistikoj por mesaĝgrupo", "translate-taction-export": "Elporti", "translate-taction-disabled": "Ĉi tiu ago estas malaktivigita sur ĉi tiu vikio.", - "translate-page-no-such-language": "Specifita lingvo estas malvalida.", - "translate-page-no-such-group": "Specifita grupo estas malvalida.", + "translate-page-no-such-language": "Specifita lingvo estas nevalida.", + "translate-page-no-such-group": "Specifita grupo estas nevalida.", "translate-page-disabled": "Tradukoj al ĉi tiu lingvo en ĉi tiu grupo estis malebligita. Kialo:\n\n$1", "translate-language-disabled": "Tradukado en tiun ĉi lingvon estas malŝaltita.", "translate-page-settings-legend": "Preferoj", @@ -66,52 +68,44 @@ "translate-edit-askpermission": "Ricevi permeson", "exporttranslations": "Elporti tradukojn", "translate-export-form-format": "Formato", - "translate-magic-pagename": "Etendita traduko de MediaWiki", - "translate-magic-help": "Vi povas traduki specialajn kromnomojn de paĝoj, magiajn vortojn, kaj nomojn de nomspacoj.\n\nSpecialaj kromnomoj de paĝoj kaj magiaj vortoj povas havi plurajn tradukojn.\nTradukoj estas apartigitaj de komo (,).\nNomoj de nomspacoj nur povas havi unu tradukon.\n\nTradukado de la reteja diskuta nomspaco diskuto pri $1 povas esti malfacila.\n$1 estas anstataŭigita per la nomo de la retejo (ekz. {{ns:project_talk}})).\nSe ne eblas per via lingvo formi validan esprimon sen ŝanĝi la nomon de la retejo, bonvolu kontakti nian [[Support|programiston]].\n\nVi devas esti en la grupo de tradukantoj por konservi ŝanĝojn.\nŜanĝoj ne estos konservataj ĝis vi alklakis la suban konservobutonon.", - "translate-magic-module": "Modulo:", - "translate-magic-submit": "Montri", - "translate-magic-cm-export": "Elporti", - "translate-magic-nothing-to-export": "Estas nenio por elporti.", - "translate-magic-cm-to-be": "Esti", - "translate-magic-cm-current": "Nuntempe", - "translate-magic-cm-original": "Originalo", - "translate-magic-cm-comment": "Komento:", - "translate-magic-cm-save": "Konservi", - "translate-magic-cm-updatedusing": "Ĝisdatigita pere de [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Konservado malsukcesis", - "translate-magic-special": "Kromnomoj de specialaj paĝoj", - "translate-magic-words": "Magiaj vortoj", - "translate-magic-namespace": "Nomoj de nomspacoj", - "translate-magic-notsaved": "Via redakto ne estis konservita!", - "translate-magic-errors": "Bonvolu ripari {{PLURAL:$1|jenan eraron|jenajn erarojn}} en tradukoj:", - "translate-magic-saved": "Viaj ŝanĝoj estas konservitaj.", + "translate-export-invalid-format": "Bonvolu specifi validan aranĝon.", + "translate-export-not-supported": "Elportado de tradukoj ne estas subtenata.", + "translate-export-format-notsupported": "La mesaĝogrupo ne subtenas la specifitan elportan dosieraranĝon.", "translate-checks-parameters": "{{PLURAL:$2|Jenaj parametroj ne estas uzataj|Jena parametro ne estas uzata}}: $1", - "translate-checks-parameters-unknown": "Jenaj {{PLURAL:$2|parametro|parametroj}} estas nekonataj:\n$1", + "translate-checks-parameters-unknown": "Jenaj {{PLURAL:$2|parametro|parametroj}} estas nekonataj:\n$1", "translate-checks-balance": "Estas nepara nombro de {{PLURAL:$2|krampo|krampoj}}: $1", "translate-checks-links": "{{PLURAL:$2|Jenaj ligiloj estas problemaj|Jena ligilo estas problema}}: $1", "translate-checks-links-missing": "Mankas {{PLURAL:$2|jena ligilo|jenaj ligiloj}}:\n$1", - "translate-checks-xhtml": "Bonvolu anstataŭigi {{PLURAL:$2|jena etikedo|jenajn etikedojn}} per la korektaj:\n$1", "translate-checks-plural": "Difino uzas {{PLURAL:}}, sed traduko ne.", "translate-checks-plural-forms": "{{PLURAL:}} ricevis {{PLURAL:$1|unu formon|$1 formojn}}, sed {{PLURAL:$2|nur unu formo|$2 formoj}} estas subtenataj (aldone al la formoj 0= kaj 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} havas ripetitajn formojn ĉe la fino. Anstataŭ {{PLURAL:$1|okulvitroj|okulvitroj}} estu skribita nur {{PLURAL:$1|okulvitroj}}.", "translate-checks-pagename": "Nomspaco ŝanĝita de difino", - "translate-checks-format": "Ĉi tiu traduko ne sekvas la difinon aŭ havas malvalidan sintaksaĵon: $1", + "translate-checks-format": "Ĉi tiu traduko ne sekvas la difinon aŭ havas nevalidan sintaksaĵon: $1", "translate-checks-escape": "La sekvantaj markiloj povas esti akcidentaj : $1", "translate-checks-parametersnotequal": "Parametronombro estas {{PLURAL:$1|$1}}; devus esti {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 estas malĝusta..", "translate-checks-fudforum-syntax": "Uzu $1 anstataŭ $2 en ĉi tiu projekto.", - "translate-pref-nonewsletter": "Ne sendi al mi retpoŝtajn gazetojn", "translate-pref-editassistlang": "Helpaj lingvoj:", "prefs-translate": "Tradukaj agordoj", "translate-pref-editassistlang-help": "Listo da lingvokodoj disigitaj de komoj.\nTraduko de mesaĝo en ĉi tiuj lingvoj estas montritaj kiam vi estas tradukanta.\nLa defaŭlta lingvolisto dependas de via lingvo.", - "translate-pref-editassistlang-bad": "Malvalida lingva kodo en la listo:\n$1.", + "translate-pref-editassistlang-bad": "Nevalida lingva kodo en la listo:\n$1.", "right-translate": "Redakti per la traduka interfaco", + "action-translate": "redakti per la tradukado-fasado", "right-translate-manage": "Administri grupojn de mesaĝoj", "action-translate-manage": "Administri grupojn de mesaĝoj", "right-translate-import": "Importi ekster-retajn tradukojn.", "action-translate-import": "Importi ekster-konektajn tradukojn.", "right-translate-messagereview": "Ekzameni tradukojn", + "action-translate-messagereview": "revizii tradukojn", "right-translate-groupreview": "Ŝanĝi laborflustaton de mesaĝgrupoj", + "action-translate-groupreview": "ŝanĝi la laborfluan staton de mesaĝogrupoj", + "translate-rcfilters-translations": "Tradukoj", + "translate-rcfilters-translations-only-label": "Tradukoj", + "translate-rcfilters-translations-only-desc": "Ŝanĝoj al tradukitaj paĝoj.", + "translate-rcfilters-translations-filter-label": "Ne traduko", + "translate-rcfilters-translations-filter-desc": "Ĉiuj ŝanĝoj kiuj ne estas tradukoj.", + "translate-rcfilters-translations-site-label": "Retejaj mesaĝoj", + "translate-rcfilters-translations-site-desc": "Laŭmendigoj de retejaj mesaĝoj en MediaVikia nomspaco.", "translate-rc-translation-filter": "Filtri tradukojn:", "translate-rc-translation-filter-no": "Fari nenion", "translate-rc-translation-filter-only": "Montri nur tradukojn", @@ -143,7 +137,7 @@ "translate-statsf-language": "Kome apartigita listo de lingvaj kodoj:", "translate-statsf-group": "Kome apartigita listo de grupaj kodoj:", "translate-statsf-submit": "Antaŭvido", - "translate-tag-page-desc": "Traduko de la vikia paĝo [[$2|$1]].", + "translate-tag-page-desc": "Traduko de la vikia paĝo [[$2|$1]] el $3 ($4).", "translate-sidebar-alltrans": "En aliaj lingvoj", "translations": "Ĉiuj tradukoj", "translations-summary": "Enigu mesaĝan nomon suben por montri ĉiujn haveblajn tradukojn.", @@ -157,6 +151,7 @@ "translate-translations-history-short": "h", "languagestats": "Lingvaj statistikoj", "languagestats-summary": "Ĉi tiu paĝo montras la statistikojn de tradukado por ĉiuj grupoj de mesaĝoj po iu lingvo.", + "messagegroupstats-summary": "Tiu paĝo montras statistikojn pri mesaĝgrupo.", "languagestats-stats-for": "Tradukstatistikoj por $1 ($2)", "languagestats-recenttranslations": "lastaj tradukoj", "translate-langstats-incomplete": "Kelkaj el la statistikoj sur ĉi tiu paĝo estas nekompletaj. Bonvolu refreŝigi por ricevi pli da statistikoj.", @@ -173,6 +168,7 @@ "translate-untranslated": "Netradukita", "translate-percentage-complete": "Kompletigo", "translate-percentage-fuzzy": "Malfreŝaj", + "translate-percentage-proofread": "Reviziita", "translate-languagestats-overall": "Ĉiuj mesaĝgrupoj kune", "translate-ls-submit": "Montri statistikojn", "translate-ls-column-group": "Mesaĝgrupo", @@ -183,16 +179,18 @@ "translate-mgs-noempty": "Ne montru lingvojn kiuj havas neniun tradukon", "translate-mgs-submit": "Montru statistikojn", "translate-mgs-column-language": "Lingvo", - "translate-mgs-totals": "Ĉiuj lingvoj kune", + "translate-mgs-totals": "{{PLURAL:$1|Ĉiu $1 lingvo|Ĉiuj $1 lingvoj}} kune", "translate-mgs-invalid-group": "La menciita grupo $1 ne ekzistas", "translate-mgs-nothing": "Nenio estas montrebla por la petitaj statistikoj", "supportedlanguages": "Subtenataj lingvoj", "supportedlanguages-summary": "Ĉi tiu paĝo montras liston de ĉiuj lingvoj subtenitaj de {{SITENAME}},\nkune kun la nomoj de tradukistoj laborantaj pri tiu lingvo.\nJu pli multe kontribuis iu tradukisto, des pli granda aperas ties nomo.\nLa koloro de substreko indikas kiom da tempo pasis de kiam tradukisto esti laste aktiva ĉi tie.", "supportedlanguages-colorlegend": "Kolorpriskribo: lasta traduko antaŭ $1 tagoj.", + "supportedlanguages-sqlite-error": "SQLite ne estas subtenata", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Tradukanto}}|Tradukantoj}}: $1", "supportedlanguages-recenttranslations": "Lastatempaj tradukoj", "supportedlanguages-count": "Sume $1 {{PLURAL:$1|lingvo|lingvoj}}.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|redakto|redaktoj}} - lasta redakto antaŭ $3 {{PLURAL:$3|tago|tagoj}}", + "abusefilter-edit-builder-vars-translate-source-text": "Fonta teksto de traduka unuo", "translate-save": "Konservi ($1)", "translate-jssti-add": "Aldoni al listo", "managemessagegroups": "Administrado de mesaĝgrupoj", @@ -200,6 +198,7 @@ "translate-smg-nochanges": "Ne estas farendaj ŝanĝoj.", "translate-smg-submit": "Proponi farendajn ŝanĝojn", "translate-smg-submitted": "La difino de la mesaĝoj estis ĝisdatigitaj. Ŝanĝoj estas traktataj fontaske.", + "translate-smg-more": "Estos pli da traktendaj ŝanĝoj, post sendado de ĉi tiuj ŝanĝoj.", "translate-smg-left": "Enhavo de la mesaĝo en la vikio", "translate-smg-right": "Alvenantaj ŝanĝoj", "translate-manage-import-diff": "Mesaĝo $1 | Agoj: $2", @@ -216,7 +215,7 @@ "translate-manage-import-summary": "Importado de nova versio el ekstera fonto", "translate-manage-conflict-summary": "Importado de nova versio el ekstera fonto\nBonvolu kontroli.", "translate-manage-submit": "Ekfunkcii", - "translate-manage-intro-other": "Sube estas listo de mesaĝŝanĝoj en la lingvo $1.\nBonvolu revizii la ŝanĝojn kaj elektu kion vi volas fari kun ĉiu traduko.\nSe vi decidas ignori ŝanĝojn, ili estos anstataŭigitaj je venonta eksporto.", + "translate-manage-intro-other": "Sube estas listo de mesaĝŝanĝoj en la lingvo $1.\nBonvolu revizii la ŝanĝojn kaj elektu kion vi volas fari kun ĉiu traduko.\nSe vi decidas ignori ŝanĝojn, ĉi tiu ago estas nur portempa.", "translate-manage-import-ok": "Importita: $1.", "translate-manage-import-done": "Importo kompleta!", "importtranslations": "Importi tradukojn", @@ -224,11 +223,10 @@ "translate-import-load": "Ŝarĝi dosieron", "translate-import-err-dl-failed": "Ne eblas akiri la dosieron:\n$1", "translate-import-err-ul-failed": "Alŝuto de dosiero malsukcesis", - "translate-import-err-invalid-title": "La provizita dosiernomo $1 estas malvalida", + "translate-import-err-invalid-title": "La provizita dosiernomo $1 estas nevalida", "translate-import-err-no-such-file": "La dosiero $1 ne ekzistas aŭ ne estis ŝargita ĉi-loke.", "translate-import-err-stale-group": "La mesaĝgrupo al kiu apartenas ĉi tiu dosiero ne ekzistas.", "translate-import-err-no-headers": "La dosiero estas ne bone formita Gettext-dosiero en la formato de la Traduk-etendaĵo:\nneeblas decidi grupon kaj lingvon el dosierkapo.", - "translate-import-err-warnings": "La dosiero ne estas bone formita.\nBonvolu kontroli ke via redaktilo ne forigas msgctxt-kampojn.\nDetaloj: $1", "translate-js-summary": "Resumo:", "translate-js-save": "Konservi", "translate-js-next": "Konservi kaj malfermi la sekvan", @@ -249,11 +247,19 @@ "translate-documentation-language": "Mesaĝa dokumentado", "translate-searchprofile": "Tradukoj", "translate-searchprofile-tooltip": "Serĉi el ĉiuj tradukoj", + "translate-searchprofile-note": "Pliaj serĉaj opcioj estas haveblaj per [$1 traduka serĉado].", "translate-search-languagefilter": "Filtrilo laŭ lingvoj:", "translate-search-nofilter": "Neniu filtrado", "log-name-translationreview": "Protokolo de tradukprovlego", "log-description-translationreview": "Protokolo de ĉiuj tradukprovlegoj kaj de mesaĝgrupoj.", "logentry-translationreview-message": "$1 {{GENDER:$2|reviziis}} tradukon $3", + "logentry-translationreview-group": "$1 {{GENDER:$2|ŝanĝis}} la staton de $4 tradukoj de $3 el $6 al $7", + "group-translate-sandboxed": "Ne aprobitaj tradukantoj", + "group-translate-sandboxed-member": "{{GENDER:$1|ne aprobita tradukanto}}", + "right-translate-sandboxmanage": "Mastrumi ensablujigitajn uzantojn", + "action-translate-sandboxmanage": "mastrumi ensablujigitajn uzantojn", + "right-translate-sandboxaction": "Fari agojn permesatajn al ensablujigitaj uzantoj", + "action-translate-sandboxaction": "fari agojn permesatajn al ensablujigitaj uzantoj", "translate-workflow-state-": "(malŝalta)", "translate-workflowstatus": "Stato = $1", "translate-workflow-set-doing": "Aktivado...", @@ -293,7 +299,7 @@ "tux-editor-cancel-button-label": "Nuligi", "tux-editor-confirm-button-label": "Konfirmi tradukon", "tux-editor-proofread-button-label": "Marki reviziita", - "tux-editor-shortcut-info": "Premu \"$1\" por konservi aŭ \"$2\" por salti al la sekva mesaĝo", + "tux-editor-shortcut-info": "Premu \"$1\" por konfirmi kaj salti al la sekva mesaĝo, aŭ \"$2\" por preterpasi, aŭ \"$4\" por resumo, aŭ longe premu \"$3\" por vidi aliajn fulmoklavojn.", "tux-editor-edit-desc": "Redakti dokumentadon", "tux-editor-add-desc": "Aldoni dokumentadon", "tux-editor-suggestions-title": "Sugestoj", @@ -301,8 +307,8 @@ "tux-editor-need-more-help": "Ĉu vi bezonas plian helpon?", "tux-editor-ask-help": "Peti pliajn informojn", "tux-editor-tm-match": "$1%-a kongruo", - "tux-warnings-more": "{{PLURAL:$1|$1 pli}}", - "tux-warnings-hide": "kaŝi", + "tux-notices-more": "{{PLURAL:$1|$1 pli}}", + "tux-notices-hide": "kaŝi", "tux-editor-save-failed": "Ne sukcesis konservi la tradukon: $1", "tux-editor-n-uses": "uzita $1 {{PLURAL:$1|fojon|fojojn}}", "tux-editor-message-desc-more": "Montri pli", @@ -312,19 +318,37 @@ "tux-editor-translate-mode": "Listo", "tux-editor-proofreading-hide-own-translations": "Kaŝi viajn tradukojn", "tux-editor-proofreading-show-own-translations": "Montri viajn tradukojn", + "tux-proofread-action-tooltip": "Marki reviziita", "tux-proofread-edit-label": "Redakti", "tux-editor-page-mode": "Paĝo", - "tux-editor-outdated-warning": "Ĉi tiu traduko eble bezonas esti ĝisdatigita.", - "tux-editor-outdated-warning-diff-link": "Montri diferencojn", + "tux-editor-outdated-notice": "Ĉi tiu traduko eble bezonas esti ĝisdatigita.", + "tux-editor-outdated-notice-diff-link": "Montri diferencojn", "tux-editor-doc-editor-placeholder": "Mesaĝa dokumentado", "tux-editor-doc-editor-save": "Konservi dokumentadon", "tux-editor-doc-editor-cancel": "Nuligi", + "tux-messagetable-more-messages": "$1 {{PLURAL:$1|plia mesaĝo|pliaj mesaĝoj}}", + "tux-messagetable-loading-messages": "Ŝarĝante {{PLURAL:$1|mesaĝon|mesaĝojn}}...", + "tux-message-filter-placeholder": "Filtri liston", + "tux-message-filter-result": "Trovis $1 {{PLURAL:$1|rezulton|rezultojn}} por \"$2\"", + "tux-message-filter-advanced-button": "Altnivela serĉo", + "tux-message-filter-optional-messages-label": "Nedevigaj mesaĝoj", + "tux-proofread-translated-by-self": "Tradukita de vi", + "tux-empty-list-all": "Tiu mesaĝgrupo estas malplena", + "tux-empty-list-all-guide": "Elekti alian mesaĝogrupon por tradukado", + "tux-translate-page-no-such-group": "La provizita grupo ne ekzistas. Elektu alian mesaĝogrupon.", + "tux-empty-list-translated": "Neniu tradukita mesaĝo", + "tux-empty-list-translated-guide": "Vi povas helpi tradukadon", "tux-empty-list-translated-action": "Traduki", + "tux-empty-no-messages-to-display": "Neniu mesaĝoj por montri", + "tux-empty-there-are-optional": "Estas nedevigaj mesaĝoj ne montrataj en la listo", + "tux-empty-show-optional-messages": "Montri opciajn mesaĝojn", + "tux-empty-no-outdated-messages": "Neniu malnoviĝinta mesaĝo", "tux-empty-nothing-to-proofread": "Nenio por revizii", "tux-empty-you-can-help-providing": "Vi povas helpi per novaj tradukoj", "tux-empty-nothing-new-to-proofread": "Nenio nova por revizii", "tux-empty-you-can-review-already-proofread": "Vi povas revizii tradukojn jam reviziitajn de aliuloj.", "tux-empty-list-other": "Nenio por traduki", + "tux-empty-list-other-guide": "Vi povas helpi la reviziadon de ekzistantaj tradukoj.", "tux-empty-list-other-action": "Revizii tradukojn", "tux-empty-list-other-link": "Montru ĉiujn mesaĝojn", "tux-editor-close-tooltip": "Fermi", @@ -333,5 +357,15 @@ "tux-editor-message-tools-show-editor": "Montri en vikia redaktilo", "tux-editor-message-tools-history": "Historio", "tux-editor-message-tools-delete": "Forigi", - "tux-editor-message-tools-translations": "Ĉiuj tradukoj" + "tux-editor-message-tools-translations": "Ĉiuj tradukoj", + "tux-editor-message-tools-linktothis": "Ligilo al ĉi tiu mesaĝo", + "tux-editor-loading": "Ŝarĝante...", + "translate-search-more-languages-info": "$1 {{PLURAL:$1|plia lingvo|pliaj lingvoj}}", + "translate-statsbar-tooltip": "$1% tradukitaj, $2% reviziitaj", + "translate-statsbar-tooltip-with-fuzzy": "$1% tradukitaj, $2% reviziitaj, $3% malfreŝaj", + "translate-search-more-groups-info": "$1 {{PLURAL:$1|plia grupo|pliaj grupoj}}", + "translate-syntax-error": "Traduko enhavas sintaksajn erarojn", + "tux-session-expired": "Vi ne plu estas ensalutinta. Bonvolu reensaluti je alia langeton. Alternative, kopiu viajn nekonservitajn tradukojn, ensalutu, revenu ĉi tien, kaj reenigu viajn tradukojn.", + "tux-nojs": "Ĉi tiu ilo ne funkcias sen JavaScript. Aŭ JavaScript estas malŝaltita, aŭ Javascript misfunkciis, aŭ via TTT-legilo ne estas subtenata.", + "specialpages-group-translation": "Traduko" } diff --git a/MLEB/Translate/i18n/core/es.json b/MLEB/Translate/i18n/core/es.json index 79e3afc2..ebb9b360 100644 --- a/MLEB/Translate/i18n/core/es.json +++ b/MLEB/Translate/i18n/core/es.json @@ -4,31 +4,34 @@ "-jem-", "Antur", "Armando-Martin", + "Canaan9801", + "Ciencia Al Poder", "Crazymadlover", "Dalton2", "Dferg", + "Dgstranz", "Fitoschido", + "Hasley", "Hereñu", "Imre", + "Indiralena", "Invadinado", + "Joanmp17", + "KATRINE1992", "Kobazulo", + "Laura Ospina", "Lin linao", "Locos epraix", + "Macofe", "MarcoAurelio", "Ovruni", "Pertile", "Sanbec", "Tempestas", + "Tiberius1701", "Translationista", "Vivaelcelta", - "Ciencia Al Poder", - "Wifidel", - "Macofe", - "Indiralena", - "Dgstranz", - "KATRINE1992", - "Laura Ospina", - "Tiberius1701" + "Wifidel" ] }, "translate": "Traducir", @@ -82,46 +85,28 @@ "translate-export-invalid-format": "Especifica un formato válido.", "translate-export-not-supported": "No se admite la exportación de traducción.", "translate-export-format-notsupported": "El formato de exportación especificado no se admite por el grupo de mensajes.", - "translate-magic-pagename": "Traducción extendida de MediaWiki", - "translate-magic-help": "Puedes traducir los nombres de las páginas especiales, de las palabras mágicas y de los espacios de nombres.\n\nLos nombres de las páginas especiales y las palabras mágicas pueden tener varias traducciones.\nLas traducciones se separan por comas (,).\nLos espacios de nombres solo pueden tener una traducción.\n\nTraducir el espacio de nombres de discusión de proyecto $1 talk puede ser complicado.\n$1 se reemplaza por el nombre del sitio del proyecto (por ejemplo {{ns:project_talk}}).\nSi en tu idioma no es posible formar una expresión válida sin cambiar el nombre del sitio, contáctanos en la [[Support|página de ayuda]].\n\nPara guardar los cambios debes pertenecer al grupo de traductores.\nLos cambios no se graban hasta que no pulses el botón Guardar que aparece abajo.", - "translate-magic-module": "Módulo:", - "translate-magic-submit": "Obtener", - "translate-magic-cm-export": "Exportar", - "translate-magic-nothing-to-export": "No hay nada para exportar.", - "translate-magic-cm-to-be": "Será", - "translate-magic-cm-current": "Actual", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Comentario:", - "translate-magic-cm-save": "Guardar", - "translate-magic-cm-updatedusing": "Actualizado usando [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Error al guardar", - "translate-magic-special": "Alias de páginas especiales", - "translate-magic-words": "Palabras mágicas", - "translate-magic-namespace": "Nombres de los espacios de nombres", - "translate-magic-notsaved": "No se guardó tu edición.", - "translate-magic-errors": "Corrige {{PLURAL:$1|el siguiente error|los siguientes errores}} en la traducción:", - "translate-magic-saved": "Se guardaron los cambios.", - "translate-checks-parameters": "{{PLURAL:$2|Falta el parámetro siguiente|Faltan los parámetros siguientes}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|El siguiente parámetro es desconocido|Los siguientes parámetros son desconocidos}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Falta el parámetro siguiente|Faltan los parámetros siguientes}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Se desconoce el parámetro siguiente|Se desconocen los parámetros siguientes}}:\n$1", "translate-checks-balance": "Hay algún signo de agrupación de {{PLURAL:$2|la siguiente clase|las siguientes clases}} sin emparejar:\n$1", "translate-checks-links": "{{PLURAL:$2|El siguiente enlace es problemático|Los siguientes $2 enlaces son problemáticos}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Falta el siguiente enlace|Faltan los siguientes $2 enlaces}}:\n$1", - "translate-checks-xhtml": "Sustituye {{PLURAL:$2|la siguiente etiqueta|las siguientes etiquetas}} por las correctas:\n$1", "translate-checks-plural": "El mensaje original usa {{PLURAL:}} pero no así la traducción.", "translate-checks-plural-forms": "{{PLURAL:}} recibió {{PLURAL:$1|una forma|$1 formas}} pero únicamente {{PLURAL:$2|se admite una forma|se admiten $2 formas}} (excluyendo las formas 0= y 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} tiene formas duplicadas al final. {{PLURAL:$1|lunes|lunes}} debería escribirse así: {{PLURAL:$1|lunes}}.", + "translate-checks-unicode-plural-missing": "Esta traducción debe tener {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "Este mensaje no admite {{PLURAL|}}.", "translate-checks-pagename": "El espacio de nombres difiere del original", "translate-checks-format": "Esta traducción no sigue al original o tiene sintaxis inválida: $1", "translate-checks-escape": "Los siguientes escapes pueden ser accidentales: $1", "translate-checks-parametersnotequal": "El número de parámetros es {{PLURAL:$1|$1}}; debería ser {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 es incorrecto.", "translate-checks-fudforum-syntax": "Usar $1 en lugar de $2 en este proyecto.", - "translate-pref-nonewsletter": "No quiero recibir correos de noticias", "translate-pref-editassistlang": "Idiomas auxiliares:", "prefs-translate": "Opciones de traducción", "translate-pref-editassistlang-help": "Lista de códigos de idiomas separados por comas.\nSe mostrarán las traducciones de los mensajes en esos idiomas mientras traduces.\nLa lista de idiomas predeterminada depende de tu idioma.", "translate-pref-editassistlang-bad": "Código de idioma inválido en la lista:\n$1.", "right-translate": "Editar con la interfaz de traducción", + "action-translate": "editar usando la interfaz de traducción", "right-translate-manage": "Administrar grupos de mensajes", "action-translate-manage": "gestionar grupos de mensajes", "right-translate-import": "Importar traducciones sin conexión", @@ -215,12 +200,14 @@ "supportedlanguages": "Idiomas admitidos", "supportedlanguages-summary": "Esta página muestra una lista de todos los idiomas admitidos por {{SITENAME}},\njunto con los nombres de los traductores que trabajan en ese idioma.\nCuanto más haya traducido un traductor, más grande aparecerá su nombre.\nEl color del subrayado indica cuán activo es un traductor aquí.", "supportedlanguages-colorlegend": "Leyenda del color: Última traducción hecha hace $1 días.", + "supportedlanguages-sqlite-error": "No se admite SQLite", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Traductor|Traductora}}|Traductores}}: $1", "supportedlanguages-recenttranslations": "traducciones recientes", "supportedlanguages-count": "$1 {{PLURAL:$1|idioma|idiomas}} en total.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|edición|ediciones}}, última edición hace $3 {{PLURAL:$3|día|días}}", + "translate-supportedlanguages-cached": "Esta información se prealmacenó hace $1.", "abusefilter-edit-builder-vars-translate-source-text": "Texto de origen de la unidad de traducción", - "translate-save": "Guardar ($1)", + "translate-save": "Publicar ($1)", "translate-jssti-add": "Añadir a la lista", "managemessagegroups": "Gestión de grupos de mensajes", "translate-smg-notallowed": "No estás autorizado a ejecutar esta acción.", @@ -230,6 +217,14 @@ "translate-smg-more": "Habrá más cambios que procesar tras enviar estos cambios.", "translate-smg-left": "Contenido del mensaje en el wiki", "translate-smg-right": "Cambios entrantes", + "translate-smg-rename-select": "Seleccionar", + "translate-smg-rename-cancel": "Cancelar", + "translate-smg-rename-select-err": "Selecciona un mensaje para cambiarle el nombre", + "translate-smg-rename-no-msg": "No se encontró ningún mensaje.", + "translate-smg-rename-new": "Añadir como nuevo…", + "translate-smg-rename-rename": "Añadir como cambio de nombre de…", + "translate-smg-rename-dialog-title": "Elige un renombramiento correspondiente para $1", + "translate-smg-changeset-modified": "El conjunto de cambios ha sido modificado por otro usuario o proceso. Tus cambios no se pueden guardar ya que podrían anular tus cambios. Vuelve a cargar la página para ver los últimos cambios.", "translate-manage-import-diff": "Mensaje $1 | Acciones: $2", "translate-manage-import-new": "Nuevo mensaje $1", "translate-manage-import-deleted": "Mensaje $1 borrado", @@ -237,11 +232,15 @@ "translate-manage-action-conflict": "Importar y marcar traducciones para su revisión", "translate-manage-action-ignore": "Ignorar", "translate-manage-action-fuzzy": "Importar y combinar traducciones", + "translate-manage-action-rename-fuzzy": "Importar trads. y marcarlas como provisionales", + "translate-manage-action-rename": "Cambiar nombre", + "translate-manage-action-ignore-change": "Ignorar cambio de traducción", "translate-manage-nochanges": "No hay cambios en los mensajes originales para este grupo.", "translate-manage-nochanges-other": "No hubo cambios en este idioma.\nUse el enlace siguiente para volver a la vista de grupo.", "translate-manage-inconsistent": "Se detectaron inconsistencias en la solicitud.\nRevisa cambios y prueba nuevamente.\nDetalles: $1.", "translate-manage-toolong": "Se excedió el tiempo máximo de procesamiento de $1 {{PLURAL:$1|segundo|segundos}}.\nPor favor reenvía el formulario para continuar procesando.", "translate-manage-import-summary": "Importando una nueva versión desde fuente externa", + "translate-manage-import-rename-summary": "Nombre cambiado en fuente externa", "translate-manage-conflict-summary": "Importando un nueva versión desde fuente externa.\nVerifica.", "translate-manage-submit": "Ejecutar", "translate-manage-intro-other": "A continuación está la lista de modificaciones de traducción en el idioma $1.\nRevísalas y elige la acción apropiada para cada una.\nSi prefieres ignorar los cambios, esta acción es sólo temporal.", @@ -256,15 +255,14 @@ "translate-import-err-no-such-file": "El archivo $1 no existe o no ha sido subido localmente.", "translate-import-err-stale-group": "El grupo de mensajes al que pertenece este archivo no existe.", "translate-import-err-no-headers": "Este no es un archivo Gettext bien formado en el formato de extensión Translate:\nNo se puede determinar el grupo y el idioma a partir de las cabeceras del archivo.", - "translate-import-err-warnings": "El archivo no está bien constituído.\nAsegúrese de que su editor no quita los campos msgctxt.\nDetalles: $1", "translate-js-summary": "Resumen:", - "translate-js-save": "Guardar", - "translate-js-next": "Guardar y abrir el siguiente", + "translate-js-save": "Publicar", + "translate-js-next": "Publicar y abrir el siguiente", "translate-js-skip": "Ir al siguiente", "translate-js-history": "Historial de traducción", "translate-js-support": "Pregunta", "translate-js-support-title": "Pide ayuda si no hay suficiente información para traducir este mensaje correctamente.", - "translate-js-support-unsaved-warning": "Tienes traducciones sin guardar.", + "translate-js-support-unsaved-warning": "Tienes traducciones sin publicar.", "translate-gs-pos": "Pos.", "translate-gs-code": "Código", "translate-gs-continent": "Continente", @@ -317,14 +315,14 @@ "tux-status-fuzzy": "Desactualizada", "tux-status-proofread": "Revisada", "tux-status-translated": "Traducido", - "tux-status-saving": "Guardando...", - "tux-status-unsaved": "Sin guardar", + "tux-status-saving": "Publicando...", + "tux-status-unsaved": "Sin publicar", "tux-save-unknown-error": "Ocurrió un error desconocido.", "tux-editor-placeholder": "Tu traducción", "tux-editor-editsummary-placeholder": "Resumen opcional", "tux-editor-paste-original-button-label": "Pegar texto de origen", "tux-editor-discard-changes-button-label": "Descartar los cambios", - "tux-editor-save-button-label": "Guardar la traducción", + "tux-editor-save-button-label": "Publicar la traducción", "tux-editor-skip-button-label": "Ir al siguiente", "tux-editor-cancel-button-label": "Cancelar", "tux-editor-confirm-button-label": "Confirmar la traducción", @@ -337,9 +335,9 @@ "tux-editor-need-more-help": "¿Necesitas más ayuda?", "tux-editor-ask-help": "Pide más información", "tux-editor-tm-match": "$1 % de coincidencia", - "tux-warnings-more": "{{PLURAL:$1|$1 más}}", - "tux-warnings-hide": "ocultar", - "tux-editor-save-failed": "No se pudo guardar la traducción: $1", + "tux-notices-more": "{{PLURAL:$1|$1 más}}", + "tux-notices-hide": "ocultar", + "tux-editor-save-failed": "No se pudo publicar la traducción: $1", "tux-editor-n-uses": "usado $1 {{PLURAL:$1|vez|veces}}", "tux-editor-message-desc-more": "Ver más", "tux-editor-message-desc-less": "Ver menos", @@ -351,10 +349,10 @@ "tux-proofread-action-tooltip": "Marcar como revisada", "tux-proofread-edit-label": "Editar", "tux-editor-page-mode": "Página", - "tux-editor-outdated-warning": "Puede que se necesite actualizar esta traducción.", - "tux-editor-outdated-warning-diff-link": "Mostrar diferencias", + "tux-editor-outdated-notice": "Puede que se necesite actualizar esta traducción.", + "tux-editor-outdated-notice-diff-link": "Mostrar diferencias", "tux-editor-doc-editor-placeholder": "Documentación de mensaje", - "tux-editor-doc-editor-save": "Guardar la documentación", + "tux-editor-doc-editor-save": "Publicar la documentación", "tux-editor-doc-editor-cancel": "Cancelar", "tux-messagetable-more-messages": "$1 {{PLURAL:$1|mensaje|mensajes}} más", "tux-messagetable-loading-messages": "Cargando {{PLURAL:$1|el mensaje|los mensajes}}…", @@ -390,12 +388,13 @@ "tux-editor-message-tools-translations": "Todas las traducciones", "tux-editor-message-tools-linktothis": "Enlace hacia este mensaje", "tux-editor-loading": "Cargando...", + "tux-editor-loading-failed": "Error al cargar las ayudas de traducción: $1", "translate-search-more-languages-info": "$1 {{PLURAL:$1|idioma|idiomas}} más", "translate-statsbar-tooltip": "$1 % traducido, $2 % revisado", "translate-statsbar-tooltip-with-fuzzy": "$1 % traducido, $2 % revisado, $3 % desactualizado", "translate-search-more-groups-info": "$1 {{PLURAL:$1|grupo|grupos}} más", - "translate-ulsdep-title": "Error de configuración", - "translate-ulsdep-body": "La extensión Translate depende de la [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector extensión Universal Language Selector].", + "translate-syntax-error": "La traducción contiene errores sintácticos", "tux-session-expired": "Tu sesión se ha cerrado. Inicia sesión en una pestaña aparte. Alternativamente, haz una copia de las traducciones sin guardar, inicia sesión, regresa a esta página y vuelve a escribir tus traducciones.", - "tux-nojs": "Esta página necesita JavaScript. JavaScript está desactivado, no funciona o no admitimos este navegador." + "tux-nojs": "Esta página necesita JavaScript. JavaScript está desactivado, no funciona o no admitimos este navegador.", + "specialpages-group-translation": "Traducción" } diff --git a/MLEB/Translate/i18n/core/et.json b/MLEB/Translate/i18n/core/et.json index 6dcb334f..3b32fe9b 100644 --- a/MLEB/Translate/i18n/core/et.json +++ b/MLEB/Translate/i18n/core/et.json @@ -9,6 +9,8 @@ }, "translate": "Tõlkimine", "translate-desc": "[[Special:Translate|Vahend]] MediaWiki ja muude sõnumite tõlkimiseks", + "translate-taskui-export-to-file": "Ekspordi omavormingus", + "translate-taskui-export-as-po": "Ekspordi võrguühenduseta tõlkimiseks", "translate-taction-translate": "Tõlkimine", "translate-taction-proofread": "Ülevaatus", "translate-taction-lstats": "Keele arvandmed", @@ -50,36 +52,18 @@ "translate-use-suggestion": "Asenda praegune tõlge selle pakkumusega.", "translate-edit-nopermission": "Sõnumite tõlkimiseks on vaja tõlkeõigust.", "translate-edit-askpermission": "Hangi luba", - "translate-magic-pagename": "Laiendatud MediaWiki tõlkimine", - "translate-magic-module": "Moodul:", - "translate-magic-submit": "Hangi", - "translate-magic-cm-export": "Ekspordi", - "translate-magic-nothing-to-export": "Pole midagi eksportida.", - "translate-magic-cm-to-be": "Tulevane", - "translate-magic-cm-current": "Praegune", - "translate-magic-cm-original": "Algne", - "translate-magic-cm-comment": "Kommentaar:", - "translate-magic-cm-save": "Salvesta", - "translate-magic-cm-updatedusing": "Uuendatud lehekülje \"[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]\" kaudu", - "translate-magic-cm-savefailed": "Salvestamine ebaõnnestus", - "translate-magic-special": "Erileheküljenimed", - "translate-magic-words": "Võlusõnad", - "translate-magic-namespace": "Nimeruuminimed", - "translate-magic-notsaved": "Sinu muudatust ei salvestatud!", - "translate-magic-errors": "Palun eemalda tõlgetest {{PLURAL:$1|järgmine tõrge|järgmised tõrked}}:", - "translate-magic-saved": "Muudatused on salvestatud.", - "translate-checks-parameters": "{{PLURAL:$2|Järgmine parameeter|Järgmised parameetrid}} on kasutamata:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Järgmine parameeter on tundmatu|Järgmised parameetrid on tundmatud}}:\n$1", + "exporttranslations": "Tõlgete eksport", + "translate-export-form-format": "Vorming", + "translate-checks-parameters": "{{PLURAL:$2|Järgmine parameeter|Järgmised parameetrid}} on kasutamata:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Järgmine parameeter on tundmatu|Järgmised parameetrid on tundmatud}}:\n$1", "translate-checks-balance": "{{PLURAL:$2|Sulge}} on paaritu arv:\n$1", "translate-checks-links": "{{PLURAL:$2|Järgmine link on probleemne|Järgmised $2 linki on probleemsed}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Järgmine link puudub|Järgmised $2 linki puuduvad}}:\n$1", - "translate-checks-xhtml": "Palun asenda {{PLURAL:$2|järgmine silt|järgmised sildid}} korrektsetega:\n$1", "translate-checks-plural": "Määratluses on {{PLURAL:}}, aga tõlkes pole.", "translate-checks-pagename": "Määratluses esinev nimeruum muudetud", "translate-checks-format": "Tõlge ei lähtu määratlusest või selle süntaks on vigane: $1", "translate-checks-parametersnotequal": "Parameetrite arv on {{PLURAL:$1|$1}}; peaks aga olema {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 on väärdunud.", - "translate-pref-nonewsletter": "Ära saada saada mulle sõnumilehti", "translate-pref-editassistlang": "Tugikeeled:", "prefs-translate": "Tõlkesätted", "translate-pref-editassistlang-help": "Komaga eraldatud keelte loetelu.\nTõlkimisel kuvatakse sõnumi tõlge nendes keeltes.\nVaikeloetelu sõltub kasutaja keelest.", @@ -90,6 +74,7 @@ "right-translate-import": "Importida ühenduseta tehtud tõlkeid", "action-translate-import": "importida ühenduseta tehtud tõlkeid", "right-translate-messagereview": "Tõlkeid üle vaadata", + "action-translate-messagereview": "tõlkeid üle vaadata", "right-translate-groupreview": "Muuta sõnumirühmade tõlketöö seisundit", "translate-rcfilters-translations": "Tõlked", "translate-rcfilters-translations-only-label": "Tõlked", @@ -160,6 +145,7 @@ "translate-untranslated": "Tõlkimata", "translate-percentage-complete": "Tõlgitud", "translate-percentage-fuzzy": "Iganenud", + "translate-percentage-proofread": "Üle vaadatud", "translate-languagestats-overall": "Kõik sõnumirühmad kokku", "translate-ls-submit": "Näita arvandmeid", "translate-ls-column-group": "Sõnumirühm", @@ -181,7 +167,7 @@ "supportedlanguages-recenttranslations": "viimased tõlked", "supportedlanguages-count": "Kokku {{PLURAL:$1|üks keel|$1 keelt}}.", "supportedlanguages-activity": "$1: {{PLURAL:$2|Üks muudatus|$2 muudatust}} – viimane muudatus {{PLURAL:$3|eile|$3 päeva tagasi}}", - "translate-save": "Salvesta ($1)", + "translate-save": "Avalda ($1)", "translate-jssti-add": "Lisa loetellu", "managemessagegroups": "Sõnumirühmade haldamine", "translate-smg-notallowed": "Sul pole lubatud seda toimingut sooritada.", @@ -214,13 +200,13 @@ "translate-import-err-no-such-file": "Faili $1 pole või see on üles laaditud kohalikku vikisse.", "translate-import-err-stale-group": "Sõnumirühma, kuhu see fail kuulub, pole.", "translate-js-summary": "Resümee:", - "translate-js-save": "Salvesta", - "translate-js-next": "Salvesta ja ava järgmine", + "translate-js-save": "Avalda", + "translate-js-next": "Avalda ja ava järgmine", "translate-js-skip": "Jäta vahele", "translate-js-history": "Tõlkimisajalugu", "translate-js-support": "Esita küsimus", "translate-js-support-title": "Esita küsimus, kui teave selle sõnumi kohta on õigesti tõlkimiseks puudulik.", - "translate-js-support-unsaved-warning": "Osa su tõlkeid on salvestamata.", + "translate-js-support-unsaved-warning": "Osa tõlkeid on avaldamata.", "translate-gs-pos": "Koht", "translate-gs-code": "Kood", "translate-gs-continent": "Ilmaosa", @@ -264,13 +250,13 @@ "tux-status-fuzzy": "Iganenud", "tux-status-proofread": "Ülevaadatud", "tux-status-translated": "Tõlgitud", - "tux-status-saving": "Salvestamine...", - "tux-status-unsaved": "Salvestamata", + "tux-status-saving": "Avaldamine...", + "tux-status-unsaved": "Avaldamata", "tux-editor-placeholder": "Sinu tõlge", "tux-editor-editsummary-placeholder": "Valikuline resümee", "tux-editor-paste-original-button-label": "Kleebi lähtetekst", "tux-editor-discard-changes-button-label": "Hülga muudatused", - "tux-editor-save-button-label": "Salvesta tõlge", + "tux-editor-save-button-label": "Avalda tõlge", "tux-editor-skip-button-label": "Jäta vahele ja mine järgmise juurde", "tux-editor-cancel-button-label": "Loobu", "tux-editor-confirm-button-label": "Kinnita tõlge", @@ -283,9 +269,9 @@ "tux-editor-need-more-help": "Kas vajad veel abi?", "tux-editor-ask-help": "Küsi lisateavet", "tux-editor-tm-match": "Vastavus $1%", - "tux-warnings-more": "{{PLURAL:$1|$1 veel}}", - "tux-warnings-hide": "peida", - "tux-editor-save-failed": "Tõlke salvestamine ebaõnnestus: $1", + "tux-notices-more": "{{PLURAL:$1|$1 veel}}", + "tux-notices-hide": "peida", + "tux-editor-save-failed": "Tõlke avaldamine ebaõnnestus: $1", "tux-editor-n-uses": "kasutatud {{PLURAL:$1|ühe korra|$1 korda}}", "tux-editor-message-desc-more": "Vaata veel", "tux-editor-message-desc-less": "Vaata vähem", @@ -297,10 +283,10 @@ "tux-proofread-action-tooltip": "Märgi ülevaadatuks", "tux-proofread-edit-label": "Redigeeri", "tux-editor-page-mode": "Lehekülg", - "tux-editor-outdated-warning": "Võimalik, et see tõlge vajab uuendamist.", - "tux-editor-outdated-warning-diff-link": "Näita erinevusi", + "tux-editor-outdated-notice": "Võimalik, et see tõlge vajab uuendamist.", + "tux-editor-outdated-notice-diff-link": "Näita erinevusi", "tux-editor-doc-editor-placeholder": "Sõnumi dokumentatsioon", - "tux-editor-doc-editor-save": "Salvesta dokumentatsioon", + "tux-editor-doc-editor-save": "Avalda dokumentatsioon", "tux-editor-doc-editor-cancel": "Loobu", "tux-messagetable-more-messages": "Veel {{PLURAL:$1|üks sõnum|$1 sõnumit}}", "tux-messagetable-loading-messages": "{{PLURAL:$1|Sõnumi|Sõnumite}} laadimine...", diff --git a/MLEB/Translate/i18n/core/eu.json b/MLEB/Translate/i18n/core/eu.json index 36443457..7dba4ca4 100644 --- a/MLEB/Translate/i18n/core/eu.json +++ b/MLEB/Translate/i18n/core/eu.json @@ -2,12 +2,13 @@ "@metadata": { "authors": [ "An13sa", + "Iñaki LL", "Kobazulo", - "Theklan", - "Xabier Armendaritz", - "Subi", + "Mikel Ibaiba", "Sator", - "Mikel Ibaiba" + "Subi", + "Theklan", + "Xabier Armendaritz" ] }, "translate": "Itzuli", @@ -50,25 +51,8 @@ "translate-edit-askpermission": "Baimena lortu", "exporttranslations": "Itzulpenak esportatu", "translate-export-form-format": "Formatua", - "translate-magic-pagename": "MediaWiki itzulpen zabaldua", - "translate-magic-module": "Modulu:", - "translate-magic-submit": "Bilatu", - "translate-magic-cm-export": "Espotatu", - "translate-magic-nothing-to-export": "Ez dago esportatzeko ezer.", - "translate-magic-cm-to-be": "Izateko", - "translate-magic-cm-current": "Oraingoa", - "translate-magic-cm-original": "Jatorrizkoa", - "translate-magic-cm-comment": "Iruzkina:", - "translate-magic-cm-save": "Gorde", - "translate-magic-cm-updatedusing": "Eguneratu [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] erabiliz.", - "translate-magic-cm-savefailed": "Gordetzeak huts egin du", - "translate-magic-words": "Hitz magikoak", - "translate-magic-namespace": "Izen-tarteen izenak", - "translate-magic-notsaved": "Zure edizioa ez da gorde!", - "translate-magic-errors": "Mesedez zuzendu ondorengo {{PLURAL:$1|akatsa|akatsak}} itzulpenetan:", - "translate-magic-saved": "Zure aldaketak gorde dira.", + "translate-export-group-too-large": "Aukeratutako mezu taldea handiegia da. Aukeratu $1 {{PLURAL:$1|mezu}} baino gutxiago dituen mezu talde bat, edo jarri harremanetan itzulpeneko administrariarekin aholkua eskatzeko.", "translate-checks-fudforum-syntax": "Proiektu honetan erabili $1, $2-ren ordez.", - "translate-pref-nonewsletter": "Ez iezadazu posta elektronikoaren bidezko berripaperik bidal", "translate-pref-editassistlang": "Hizkuntza laguntzaileak:", "prefs-translate": "Itzulpen aukerak", "right-translate": "Aldatu itzulpen interfazea erabiliz", @@ -202,7 +186,7 @@ "tux-editor-skip-button-label": "Hurrengora saltatu", "tux-editor-cancel-button-label": "Utzi", "tux-editor-confirm-button-label": "Berretsi itzulpena", - "tux-editor-proofread-button-label": "Markatu berrikusita bezala", + "tux-editor-proofread-button-label": "Markatu berrikusitzat", "tux-editor-edit-desc": "Aldatu dokumentazioa", "tux-editor-add-desc": "Gehitu dokumentazioa", "tux-editor-suggestions-title": "Iradokizunak", @@ -210,8 +194,8 @@ "tux-editor-need-more-help": "Laguntza gehiago behar duzu?", "tux-editor-ask-help": "Eskatu informazio gehiago", "tux-editor-tm-match": "%$1(e)ko kointzidentzia", - "tux-warnings-more": "{{PLURAL:$1|$1 gehiago}}", - "tux-warnings-hide": "ezkutatu", + "tux-notices-more": "{{PLURAL:$1|$1 gehiago}}", + "tux-notices-hide": "ezkutatu", "tux-editor-n-uses": "{{PLURAL:$1|Behin|$1 aldiz}} erabilia", "tux-editor-message-desc-more": "Ikusi gehiago", "tux-editor-message-desc-less": "Ikusi gutxiago", @@ -220,11 +204,11 @@ "tux-editor-translate-mode": "Zerrenda", "tux-editor-proofreading-hide-own-translations": "Zure itzulpenak ezkutatu", "tux-editor-proofreading-show-own-translations": "Zure itzulpenak erakutsi", - "tux-proofread-action-tooltip": "Markatu berrikusita bezala", + "tux-proofread-action-tooltip": "Markatu berrikusitzat", "tux-proofread-edit-label": "Aldatu", "tux-editor-page-mode": "Orrialdea", - "tux-editor-outdated-warning": "Beharbada itzulpen hau eguneratu beharra dago.", - "tux-editor-outdated-warning-diff-link": "Erakutsi desberdintasunak", + "tux-editor-outdated-notice": "Beharbada itzulpen hau eguneratu beharra dago.", + "tux-editor-outdated-notice-diff-link": "Erakutsi desberdintasunak", "tux-editor-doc-editor-placeholder": "Mezuaren dokumentazioa", "tux-editor-doc-editor-save": "Gorde dokumentazioa", "tux-editor-doc-editor-cancel": "Utzi", @@ -234,7 +218,7 @@ "tux-message-filter-result": "{{PLURAL:$1|Emaitza bat aurkitu da|$1 emaitza aurkitu dira}} \"$2\" bilaketarako", "tux-message-filter-advanced-button": "Bilaketa aurreratua", "tux-message-filter-optional-messages-label": "Aukerako mezuak", - "tux-proofread-translated-by-self": "Zuk itzulitakoak", + "tux-proofread-translated-by-self": "Zeuk itzulia", "tux-empty-list-all": "Mezu-talde hau hutsik dago", "tux-empty-list-translated": "Itzuli gabeko mezuak", "tux-empty-list-translated-guide": "Itzultzen lagun dezakezu", diff --git a/MLEB/Translate/i18n/core/ext.json b/MLEB/Translate/i18n/core/ext.json index ab0e07b1..cd7ac819 100644 --- a/MLEB/Translate/i18n/core/ext.json +++ b/MLEB/Translate/i18n/core/ext.json @@ -8,8 +8,5 @@ "translate-next": "Siguienti páhina", "translate-prev": "Páhina anteriol", "translate-optional": "(ocional)", - "translate-ignored": "(inorau)", - "translate-magic-cm-export": "Esporteal", - "translate-magic-cm-save": "Emburacal", - "translate-magic-words": "Parabras máhicas" + "translate-ignored": "(inorau)" } diff --git a/MLEB/Translate/i18n/core/fa.json b/MLEB/Translate/i18n/core/fa.json index 2dc50b92..e58e22e6 100644 --- a/MLEB/Translate/i18n/core/fa.json +++ b/MLEB/Translate/i18n/core/fa.json @@ -1,25 +1,28 @@ { "@metadata": { "authors": [ + "Alireza Ivaz", + "Alirezaaa", + "Armin1392", + "Calak", "Dalba", "E THP", "Ebraminio", + "FarsiNevis", + "Hosseinblue", "Huji", + "Iriman", + "Ladsgroup", "Mjbmr", "Omidh", + "Ommmmid", "Reza1615", "Rtemis", "Tofighi", "Wayiran", "ZxxZxxZ", "جواد", - "درفش کاویانی", - "Armin1392", - "Alirezaaa", - "Hosseinblue", - "Calak", - "Ommmmid", - "Ladsgroup" + "درفش کاویانی" ] }, "translate": "ترجمه", @@ -73,31 +76,11 @@ "translate-export-invalid-format": "لطفاً یک قالب معتبر وارد کنید.", "translate-export-not-supported": "برون‌بری ترجمه پشتیبانی نمی‌شود.", "translate-export-format-notsupported": "قالب مشخص‌شده برای برون‌بری این گروه پیغام‌ها پشتیبانی نمی‌شود.", - "translate-magic-pagename": "ترجمهٔ گسترش‌یافتهٔ مدیاویکی", - "translate-magic-help": "شما می‌توانید نام مستعار صفحه‌های ویژه، واژه‌های جادویی، و نام فضاهای نام را ترجمه کنید.\n\nنام مستعار صفحه‌های ویژه می‌تواند بیش از یک ترجمه داشته باشد.\nترجمه‌ها را با استفاده از کامای انگلیسی (,) از هم جدا کنید.\nفضاهای نام تنها می‌توانند یک ترجمه داشته باشند.\n\nترجمهٔ نام فضاهای نام $1 talk می‌تواند پیچیده باشد. $1 با نام وبگاه جایگزین می‌شود (مانند {{ns:project_talk}}). اگر در زبان شما امکان ایجاد چنین عبارتی بدون تغییر دادن نام وبگاه وجود ندارد، لطفاً از طریق [[Support]] به ما اطلاع دهید.\n\nبرای ذخیره کردن تغییرها باید عضو گروه ترجمه‌کنندگان باشید.\nتغییرات زمانی ذخیره می‌شوند که دکمهٔ ذخیره را در پایین صفحه فشار دهید.", - "translate-magic-module": "پودمان:", - "translate-magic-submit": "بیاور", - "translate-magic-cm-export": "برون‌بری", - "translate-magic-nothing-to-export": "چیزی برای برون‌بری وجود ندارد.", - "translate-magic-cm-to-be": "آینده", - "translate-magic-cm-current": "کنونی", - "translate-magic-cm-original": "اصلی", - "translate-magic-cm-comment": "توضیح:", - "translate-magic-cm-save": "ذخیره", - "translate-magic-cm-updatedusing": "به روز شده توسط [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "شکست در ذخیره کردن اطلاعات", - "translate-magic-special": "نام مستعار صفحه‌های ویژه", - "translate-magic-words": "واژه‌های جادویی", - "translate-magic-namespace": "اسم فضاهای نام", - "translate-magic-notsaved": "ویرایش‌تان ذخیره نشد!", - "translate-magic-errors": "لطفاً {{PLURAL:$1|خطای|خطاهای}} زیر را در ترجمهٔ خود اصلاح کنید:", - "translate-magic-saved": "تغییرات شما ذخیره شد.", - "translate-checks-parameters": "این {{PLURAL:$2|پارامتر استفاده نشده‌است|پارامترها استفاده نشده‌اند}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|پارامتر|پارامترهای}} زیر {{PLURAL:$2|ناشناخته است|ناشناخته‌اند}}:\n$1", + "translate-checks-parameters": "این {{PLURAL:$2|پارامتر استفاده نشده‌است|پارامترها استفاده نشده‌اند}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|پارامتر|پارامترهای}} زیر {{PLURAL:$2|ناشناخته است|ناشناخته‌اند}}:\n$1", "translate-checks-balance": "تعداد {{PLURAL:$2|پرانتزها|پرانتزها}} جفت نیست:\n$1", "translate-checks-links": "{{PLURAL:$2|پیوندهایی که در ادامه می‌آیند مشکل‌ساز هستند|پیوندی که در ادامه می‌آید مشکل ساز است}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|پیوند|پیوندهای}} زیر پیدا {{PLURAL:$2|نشد|نشدند}}:\n$1", - "translate-checks-xhtml": "لطفاً این {{PLURAL:$2|برچسب|برچسب‌ها}} را با موارد درست جایگزین کنید:\n$1", "translate-checks-plural": "تعریف از {{PLURAL:}} استفاده می‌کند اما ترجمه از آن استفاده نمی‌کند.", "translate-checks-plural-forms": "{{PLURAL:$1|یک فرم|$1 فرم}} به {{PLURAL:}} داده شده اما {{PLURAL:$2|تنها یک فرم|$2 forms are}} پشتیبانی می‌شود (به جز فرم‌های 0= و 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} دارای فرم‌های تکراری در انتهایش است. {{PLURAL:$1|گوسفند|گوسفند}} باید به صورت {{PLURAL:$1|گوسفند}} نوشته شود.", @@ -107,7 +90,6 @@ "translate-checks-parametersnotequal": "شمار پارامترها {{PLURAL:$1|$1}} تاست؛ بایست {{PLURAL:$2|$2}} تا باشد.", "translate-checks-malformed": "$1 بدشکل است.", "translate-checks-fudforum-syntax": "در این پروژه از $1 به جای $2 استفاده کنید.", - "translate-pref-nonewsletter": "برای من خبرنامهٔ الکترونیکی ارسال نشود", "translate-pref-editassistlang": "زبان‌های دستیار:", "prefs-translate": "گزینه‌های ترجمه", "translate-pref-editassistlang-help": "فهرست کدهای زبان جدا شده با کاما.\nترجمه‌های پیغام‌های این زبان‌ها در زمانی که شما ترجمه می‌کنید نمایش داده می‌شوند.\nفهرست پیش‌فرض زبان‌ها بستگی به این دارد که زبان شما چیست.", @@ -142,7 +124,7 @@ "translate-statsf-options": "گزینه های نمودار", "translate-statsf-width": "پهنا به پیکسل:", "translate-statsf-height": "بلندی به پیکسل:", - "translate-statsf-days": "مدت زمان به روز:", + "translate-statsf-days": "دورهٔ زمانی بر حسب روز:", "translate-statsf-start": "تاریخ شروع:", "translate-statsf-scale": "ظرافت:", "translate-statsf-scale-months": "ماه", @@ -221,6 +203,9 @@ "translate-smg-more": "پس از ارسال این تغییرات تغییرات بیشتری برای پروسه وجود خواهند داشت.", "translate-smg-left": "محتوای پیغام در ویکی", "translate-smg-right": "تغییرات ورودی", + "translate-smg-rename-select": "انتخاب", + "translate-smg-rename-cancel": "انصراف", + "translate-smg-rename-no-msg": "پیامی یافت نشد", "translate-manage-import-diff": "پیغام $1 | اقدام: $2", "translate-manage-import-new": "پیام تازه $1", "translate-manage-import-deleted": "پیغام حذف‌شده $1", @@ -228,6 +213,7 @@ "translate-manage-action-conflict": "درون‌ریزی با برچسب ابهام", "translate-manage-action-ignore": "نادیده گرفتن", "translate-manage-action-fuzzy": "درون‌ریزی ترجمه‌ها با برچسب ابهام", + "translate-manage-action-rename": "تغییرنام", "translate-manage-nochanges": "هیچ تغییری در تعریف پیغام‌های این گروه وجود ندارد.", "translate-manage-nochanges-other": "هیچ تغییراتی برای این زبان وجود نداشت.\nاز پیوند زیر برای بازگشت به نمایش جزئیات گروه‌ها استفاده کنید.", "translate-manage-inconsistent": "در درخواست شما تناقضی شناسایی شد.\nلطفاً آن را از جهت تغییرات بررسی کنید و دوباره تلاش کنید.\nجزئیات: $1.", @@ -247,7 +233,6 @@ "translate-import-err-no-such-file": "پرونده $1 وجود ندارد یا به طور محلی بارگذاری نشده است.", "translate-import-err-stale-group": "گروه پیغامی که این پرونده به آن تعلق دارد وجود ندارد.", "translate-import-err-no-headers": "پرونده دارای قالب مناسب Gettext برای افزونهٔ ترجمه نیست:\nشناسایی گروه پیغام و زبان از سرایندهای پرونده ممکن نبود.", - "translate-import-err-warnings": "پرونده دارای قالب مناسب نیست.\nاطمینان حاصل کنید که ویرایشگر شما بخش‌های msgctxt را پاک نکرده‌است.\nجزئیات: $1", "translate-js-summary": "خلاصه:", "translate-js-save": "ذخیره", "translate-js-next": "ذخیره و بازکردن بعدی", @@ -321,15 +306,15 @@ "tux-editor-confirm-button-label": "تأیید ترجمه", "tux-editor-proofread-button-label": "علامت‌گذاری به عنوان بررسی‌شده", "tux-editor-shortcut-info": "برای ذخیره‌ «$1»، برای پرش به پیام بعدی «$2»، برای ارائه کردن خلاصه «$4» و برای دیگر میانبرها «$3» را فشار دهید.", - "tux-editor-edit-desc": "ذخیره مستندات", + "tux-editor-edit-desc": "ویرایش مستندات", "tux-editor-add-desc": "افزودن مستندات", "tux-editor-suggestions-title": "پیشنهادها", "tux-editor-in-other-languages": "به زبان‌های دیگر", "tux-editor-need-more-help": "راهنمایی بیشتر نیاز دارید؟", "tux-editor-ask-help": "درخواست برای اطلاعات بیشتر", "tux-editor-tm-match": "$1٪ مطابقت", - "tux-warnings-more": "{{PLURAL:$1|$1 مورد دیگر}}", - "tux-warnings-hide": "نهفتن", + "tux-notices-more": "{{PLURAL:$1|$1 مورد دیگر}}", + "tux-notices-hide": "نهفتن", "tux-editor-save-failed": "ذخیره‌سازی ترجمه نافرجام ماند:$1", "tux-editor-n-uses": "$1 بار استفاده شده", "tux-editor-message-desc-more": "مشاهدهٔ بیشتر", @@ -342,8 +327,8 @@ "tux-proofread-action-tooltip": "نشانه‌گذاری به عنوان ترجمه‌شده", "tux-proofread-edit-label": "ویرایش", "tux-editor-page-mode": "صفحه", - "tux-editor-outdated-warning": "این ترجمه ممکن است نیازمند به‌روزرسانی باشد.", - "tux-editor-outdated-warning-diff-link": "نمایش تفاوت‌ها", + "tux-editor-outdated-notice": "این ترجمه ممکن است نیازمند به‌روزرسانی باشد.", + "tux-editor-outdated-notice-diff-link": "نمایش تفاوت‌ها", "tux-editor-doc-editor-placeholder": "مستندات پیام", "tux-editor-doc-editor-save": "ذخیره مستندات", "tux-editor-doc-editor-cancel": "انصراف", @@ -385,8 +370,6 @@ "translate-statsbar-tooltip": "$1٪ ترجمه‌شده، ٪$2 بازبینی‌شده", "translate-statsbar-tooltip-with-fuzzy": "$1٪ ترجمه‌شده، ٪$2 بازبینی‌شده، ٪$3 تاریخ‌گذشته", "translate-search-more-groups-info": "$1 {{PLURAL:$1|گروه|گروه}} دیگر", - "translate-ulsdep-title": "خطای تنظیمات", - "translate-ulsdep-body": "افزونهٔ ترجمه به [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector افزونهٔ انتخاب زبان جهانی] وابستگی دارد.", "tux-session-expired": "شما دیگر داخل سامانه نیستید. لطفاً در یک زبانهٔ دیگر به سامانه وارد شوید. یا این که یک نسخه از ترجمه‌های ذخیره‌نشده تهیه کنید، به سامانه وارد شوید، به این صفحه بازگردید و ترجمه‌های خود را دوباره وارد کنید.", "tux-nojs": "این ابزار بدون جاوااسکریپت کار نمی‌کند. جاوااسکریپت غیرفعال است، از کار افتاده است، یا توسط این مرورگر پشتیبانی نمی‌شود." } diff --git a/MLEB/Translate/i18n/core/ff.json b/MLEB/Translate/i18n/core/ff.json new file mode 100644 index 00000000..5b9457c7 --- /dev/null +++ b/MLEB/Translate/i18n/core/ff.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Ibrahima" + ] + }, + "translate-documentation-language": "Famminorde ɓatakuru" +} diff --git a/MLEB/Translate/i18n/core/fi.json b/MLEB/Translate/i18n/core/fi.json index 5e1cacac..e3f0699d 100644 --- a/MLEB/Translate/i18n/core/fi.json +++ b/MLEB/Translate/i18n/core/fi.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "01miki10", "Beluga", "Centerlink", "Cimon Avaro", @@ -9,15 +10,15 @@ "Nedergard", "Nike", "Olli", + "Pxos", + "Pyscowicz", "Silvonen", "Str4nd", "Stryn", "Usp", "VezonThunder", "Vililikku", - "ZeiP", - "Pxos", - "Pyscowicz" + "ZeiP" ] }, "translate": "Käännä", @@ -71,47 +72,40 @@ "translate-export-form-format": "Muoto", "translate-export-invalid-format": "Määritä kelvollinen muoto.", "translate-export-not-supported": "Käännösten vientiä ei tueta.", - "translate-export-format-notsupported": "Määritelty vientimuoto ei tue viestiryhmää.", - "translate-magic-pagename": "Laajennettu MediaWikin kääntäminen", - "translate-magic-help": "Voit kääntää toimintosivujen vaihtoehtoisia nimiä, taikasanoja ja nimiavaruuksien nimiä.\n\nToimintosivujen vaihtoehtoisilla nimillä ja taikasanoilla voi olla useita käännöksiä.\nKäännökset erotetaan pilkulla (,).\nNimiavaruuksilla voi olla vain yksi käännös.\n\nNimiavaruuksien käännöksissä $1 talk on erikoistapaus. $1 korvataan sivuston nimellä (esimerkiksi {{ns:project_talk}}).\nJos kielessäsi on mahdotonta muotoilla oikeaa käännöstä ilman sivuston nimen taivuttamista, kerro siitä sivulla [[Support]].\n\nSinun tulee olla kääntäjä, jotta voit tallentaa muutokset.\nMuutoksia ei tallenneta, ennen kuin painat Tallenna-painiketta.", - "translate-magic-module": "Moduuli:", - "translate-magic-submit": "Hae", - "translate-magic-cm-export": "Vie", - "translate-magic-nothing-to-export": "Ei mitään vietävää.", - "translate-magic-cm-to-be": "Tuleva", - "translate-magic-cm-current": "Nykyinen", - "translate-magic-cm-original": "Alkuperäinen", - "translate-magic-cm-comment": "Yhteenveto", - "translate-magic-cm-save": "Tallenna", - "translate-magic-cm-updatedusing": "Päivitetty [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] -sivun kautta", - "translate-magic-cm-savefailed": "Tallennus epäonnistui", - "translate-magic-special": "Toimintosivujen nimet", - "translate-magic-words": "Taikasanat", - "translate-magic-namespace": "Nimiavaruuksien nimet", - "translate-magic-notsaved": "Muokkaustasi ei tallennettu!", - "translate-magic-errors": "Korjaa {{PLURAL:$1|seuraava virhe|seuraavat virheet}} käännöksissä:", - "translate-magic-saved": "Muutoksesi on tallennettu.", - "translate-checks-parameters": "{{PLURAL:$2|Seuraavaa parametria|Seuraavia parametreja}} ei käytetä:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Seuraava parametri on tuntematon|Seuraavat parametrit ovat tuntemattomia}}:\n$1", + "translate-export-format-notsupported": "Tätä viestiryhmää ei voi viedä tässä muodossa.", + "translate-checks-parameters": "{{PLURAL:$2|Seuraavaa parametria|Seuraavia parametreja}} ei käytetä:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Seuraava parametri on tuntematon|Seuraavat parametrit ovat tuntemattomia}}:\n$1", "translate-checks-balance": "Pariton määrä {{PLURAL:$2|sulkeita}}:\n$1", "translate-checks-links": "{{PLURAL:$2|Seuraava linkki on ongelmallinen|Seuraavat linkit ovat ongelmallisia}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Tätä linkkiä|$2 Näitä linkkejä}} ei ole käytetty käännöksessä:\n$1", - "translate-checks-xhtml": "Korvaa {{PLURAL:$2|seuraava tägti oikealla|seuraavat tägi oikeilla}}:\n$1", "translate-checks-plural": "Määritelmä käyttää {{PLURAL:}}-koodia, mutta käännös ei.", "translate-checks-plural-forms": "{{PLURAL:}}-komennolle annettiin {{PLURAL:$1|yksi muoto|$1 muotoa}}, mutta {{PLURAL:$2|vain yhtä muotoa|$2 muotoa}} tuetaan (ei sisällä muotoja 0= ja 1=).", "translate-checks-plural-dupe": "{{PLURAL:}}-komennon lopussa on samoja muotoja. {{PLURAL:$1|lampaani|lampaani}} tulisi kirjoittaa {{PLURAL:$1|lampaani}}.", + "translate-checks-gettext-plural-missing": "Käännöksen tulee sisältää {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "Tämä viesti ei tue {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} vaatii täsmälleen $1 {{PLURAL:$1|monikkomuodon|monikkomuotoa}}. Nyt siinä on $2 {{PLURAL:$2|monikkomuoto|monikkomuotoa}}.", + "translate-checks-smartformat-plural-missing": "Käännöksen pitää käyttää monikkomuotoja muuttujalla $1.", + "translate-checks-smartformat-plural-unsupported": "Tämä viesti ei tue monikkomuotoja muuttujalla $1.", + "translate-checks-unicode-plural-missing": "Käännöksen tulee sisältää {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "Tämä viesti ei tue {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "Monikkomuodot tulee antaa muodossa $1. Nyt ne ovat muodossa $2.", "translate-checks-pagename": "Nimiavaruus ei ole sama kuin viestin määritelmässä", "translate-checks-format": "Tämä käännös ei noudata alkuperäistä tekstiä tai sillä on virheellinen syntaksi: $1", "translate-checks-escape": "Seuraavat escape-merkkijonot saattavat olla tahattomia: $1", "translate-checks-parametersnotequal": "Käännöksessä pitäisi olla {{PLURAL:$2|yksi muuttuja|$2 muuttujaa}}, mutta vain {{PLURAL:$1|yksi muuttuja|$1 muuttujaa}} löydettiin.", "translate-checks-malformed": "$1 ei ole hyvinmuotoiltu.", "translate-checks-fudforum-syntax": "Käytä merkinnän $1 sijasta merkintää $2 tässä hankkeessa.", - "translate-pref-nonewsletter": "Älä lähetä uutiskirjeitä", - "translate-pref-editassistlang": "Apukielet", + "translate-checks-newline-missing-start": "Käännöksen alusta puuttuu $1 {{PLURAL:$1|rivinvaihto|rivinvaihtoa}}.", + "translate-checks-newline-missing-end": "Käännöksen lopusta puuttuu $1 {{PLURAL:$1|rivinvaihto|rivinvaihtoa}}.", + "translate-checks-newline-extra-start": "Käännöksen alussa on $1 {{PLURAL:$1|ylimääräinen rivinvaihto|ylimääräistä rivinvaihtoa}}.", + "translate-checks-newline-extra-end": "Käännöksen lopussa on $1 {{PLURAL:$1|ylimääräinen rivinvaihto|ylimääräistä rivinvaihtoa}}.", + "translate-checks-value-not-present": "Käännöksen täytyy olla {{PLURAL:$1|1=|yksi seuraavista vaihtoehdoista:}} $1.", + "translate-pref-editassistlang": "Apukielet:", "prefs-translate": "Käännösasetukset", "translate-pref-editassistlang-help": "Pilkuin eroteltu lista kielikoodeista.\nViestin käännökset näillä kielillä näkyvät kääntäessäsi.\nAsetuksen oletusarvoiset kielet riippuvat kielestä, jolle olet kääntämässä.", "translate-pref-editassistlang-bad": "Listassa on kelpaamaton kielikoodi:\n$1.", "right-translate": "Kääntää käännöstyökalulla", + "action-translate": "kääntää käännöstyökalulla", "right-translate-manage": "Hallinnoida viestiryhmiä", "action-translate-manage": "hallita viestiryhmiä", "right-translate-import": "Tuoda muilla työkaluilla tehtyjä käännöksiä", @@ -200,7 +194,7 @@ "translate-mgs-noempty": "Älä näytä kieliä, joiden käännöstä ei ole aloitettu", "translate-mgs-submit": "Näytä tilastot", "translate-mgs-column-language": "Kieli", - "translate-mgs-totals": "Kaikki {{PLURAL:$1|kieli|kielet}} yhdessä", + "translate-mgs-totals": "Kaikki $1 {{PLURAL:$1|kieltä}} yhdessä", "translate-mgs-invalid-group": "Määritettyä ryhmää $1 ei ole.", "translate-mgs-nothing": "Pyydetyille tilastoille ei löydy tuloksia.", "supportedlanguages": "Tuetut kielet", @@ -211,6 +205,7 @@ "supportedlanguages-recenttranslations": "tuoreet käännökset", "supportedlanguages-count": "$1 {{PLURAL:$1|kieli|kieltä}} yhteensä.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|muokkaus|muokkausta}} - viimeinen muokkaus $3 {{PLURAL:$3|päivä|päivää}} sitten", + "translate-supportedlanguages-cached": "Nämä tiedot ovat välimuistista, joka luotiin $1 sitten.", "abusefilter-edit-builder-vars-translate-source-text": "Käännösyksikön lähdeteksti", "translate-save": "Tallenna ($1)", "translate-jssti-add": "Lisää listaan", @@ -222,6 +217,10 @@ "translate-smg-more": "Näiden muutosten tallentamisen jälkeen on myös muita käsiteltäviä muutoksia.", "translate-smg-left": "Viestin nykyinen sisältö", "translate-smg-right": "Tulevat muutokset", + "translate-smg-rename-select": "Valitse", + "translate-smg-rename-cancel": "Peruuta", + "translate-smg-rename-no-msg": "Viestejä ei löytynyt.", + "translate-smg-rename-new": "Lisää uutena...", "translate-manage-import-diff": "Viesti $1 | Toiminnot: $2", "translate-manage-import-new": "Uusi viesti $1", "translate-manage-import-deleted": "Poistettu viesti $1", @@ -229,6 +228,8 @@ "translate-manage-action-conflict": "Tuo ja merkitse käännökset tarkistettavaksi", "translate-manage-action-ignore": "Ohita", "translate-manage-action-fuzzy": "Tuo ja merkitse käännökset tarkistettavaksi", + "translate-manage-action-rename-fuzzy": "Uudelleennimeä ja merkitse käännökset tarkistettavaksi", + "translate-manage-action-rename": "Nimeä uudelleen", "translate-manage-nochanges": "Tämän ryhmän viestien määritelmiin ei ole mitään muutoksia.", "translate-manage-nochanges-other": "Tähän kieleen ei ollut muutoksia.\nPalaa ryhmän yksityiskohtanäkymään alla olevalla linkillä.", "translate-manage-inconsistent": "Pyynnön tiedot ovat epäjohdonmukaisia.\nTarkista muutokset ja yritä uudelleen.\nYksityiskohdat: $1.", @@ -248,7 +249,6 @@ "translate-import-err-no-such-file": "Tiedostoa $1 ei ole tai sitä ei ole tallennettu paikallisesti.", "translate-import-err-stale-group": "Tämä tiedosto kuuluu viestiryhmään, jota ei ole olemassa.", "translate-import-err-no-headers": "Tiedosto ei ole kelvollisesti muotoiltu Gettext-tiedosto Translate-laajennoksen käyttämässä muodossa:\nViestiryhmä- ja kielitietoja ei löytynyt tiedoston otsakkeesta.", - "translate-import-err-warnings": "Tiedostossa on ongelmia.\nVarmista, ettei käyttämäsi muokkausohjelma poista msgctxt-kenttiä.\nTiedot: $1", "translate-js-summary": "Yhteenveto:", "translate-js-save": "Tallenna", "translate-js-next": "Tallenna ja avaa seuraava", @@ -307,7 +307,7 @@ "tux-edit": "Muokkaa", "tux-status-optional": "Valinnainen", "tux-status-fuzzy": "Vanhentunut", - "tux-status-proofread": "Tarkastettu", + "tux-status-proofread": "Oikoluettu", "tux-status-translated": "Käännetty", "tux-status-saving": "Tallennetaan...", "tux-status-unsaved": "Tallentamaton", @@ -329,22 +329,22 @@ "tux-editor-need-more-help": "Tarvitsetko lisäapua?", "tux-editor-ask-help": "Pyydä lisätietoja", "tux-editor-tm-match": "Vastaavuus $1%", - "tux-warnings-more": "{{PLURAL:$1|$1 muuta}}", - "tux-warnings-hide": "piilota", + "tux-notices-more": "{{PLURAL:$1|$1 muuta}}", + "tux-notices-hide": "piilota", "tux-editor-save-failed": "Käännöksen tallentaminen epäonnistui: $1", "tux-editor-n-uses": "$1 {{PLURAL:$1|käyttökerta|käyttökertaa}}", "tux-editor-message-desc-more": "Näytä lisää", "tux-editor-message-desc-less": "Näytä vähemmän", "tux-editor-clear-translated": "Piilota käännetyt", - "tux-editor-proofreading-mode": "Tarkastus", + "tux-editor-proofreading-mode": "Oikoluku", "tux-editor-translate-mode": "Luettelo", "tux-editor-proofreading-hide-own-translations": "Piilota omat käännökset", "tux-editor-proofreading-show-own-translations": "Näytä omat käännökset", "tux-proofread-action-tooltip": "Merkitse tarkastetuksi", "tux-proofread-edit-label": "Muokkaa", "tux-editor-page-mode": "Sivu", - "tux-editor-outdated-warning": "Tämä viesti saattaa tarvita päivittämistä.", - "tux-editor-outdated-warning-diff-link": "Näytä muutokset", + "tux-editor-outdated-notice": "Tämä viesti saattaa tarvita päivittämistä.", + "tux-editor-outdated-notice-diff-link": "Näytä muutokset", "tux-editor-doc-editor-placeholder": "Ohjeistus", "tux-editor-doc-editor-save": "Tallenna ohjeistus", "tux-editor-doc-editor-cancel": "Peru", @@ -382,12 +382,13 @@ "tux-editor-message-tools-translations": "Kaikki käännökset", "tux-editor-message-tools-linktothis": "Linkki tähän viestiin", "tux-editor-loading": "Ladataan...", + "tux-editor-loading-failed": "Käännösapuvälineiden lataus epäonnistui: $1", "translate-search-more-languages-info": "$1 {{PLURAL:$1|kieli|kieltä}} lisää", "translate-statsbar-tooltip": "$1 % käännetty, $2 % tarkastettu", "translate-statsbar-tooltip-with-fuzzy": "$1 % käännetty, $2 % tarkastettu, $3 % vanhentunut", "translate-search-more-groups-info": "$1 {{PLURAL:$1|muu ryhmä|muuta ryhmää}}", - "translate-ulsdep-title": "Asennusvirhe", - "translate-ulsdep-body": "Translate-laajennos vaati [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector Universal Language Selector -laajennoksen].", + "translate-syntax-error": "Käännös sisältää syntaksivirheitä", "tux-session-expired": "Et ole enää kirjautunut sisään. Kirjaudu sisään toisessä välilehdessä. Vaihtoehtoisesti voit kopioida tallentamattomat käännökset, kirjautua sisään ja palata tälle sivulle tallentamaan käännökset uudestaan.", - "tux-nojs": "Tämä työkalu ei toimi ilman JavaScriptiä. JavaScript on poistettu käytöstä, se ei toimi, tai tätä selainta ei tueta." + "tux-nojs": "Tämä työkalu ei toimi ilman JavaScriptiä. JavaScript on poistettu käytöstä, se ei toimi, tai tätä selainta ei tueta.", + "specialpages-group-translation": "Käännös" } diff --git a/MLEB/Translate/i18n/core/fit.json b/MLEB/Translate/i18n/core/fit.json new file mode 100644 index 00000000..1bf6faa9 --- /dev/null +++ b/MLEB/Translate/i18n/core/fit.json @@ -0,0 +1,246 @@ +{ + "@metadata": { + "authors": [ + "Pyscowicz" + ] + }, + "translate": "Käänä", + "translate-extensionname": "Käänä", + "translate-desc": "[[Special:Translate|Spesiaalisivu]] MeetiaWikin kääntämiseen ja muutakin.", + "translate-fuzzybot-desc": "Tämä oon erityinen systeemitili jota MeetiaWikin [https://www.mediawiki.org/wiki/Extension:Translate Translate-laajennus] käythää käänösten ylläpitoon.\nTämä tili oon osa MeetiaWiki-ohjelmistoa ja sitä ei omista mikään käyttäjä.", + "translate-taskui-export-to-file": "Eksporteeraa perusmuodossa", + "translate-taskui-export-as-po": "Eksporteeraa off-line kääntämisheen soveltuvassa muodossa", + "translate-taction-translate": "Käänä", + "translate-taction-lstats": "Kielistatistiikit", + "translate-taction-mstats": "Viestijoukkostatistiikit", + "translate-taction-export": "Eksporteeraa", + "translate-page-no-such-group": "Tuntematon joukko.", + "translate-page-disabled": "Käänökset tälle kielele tässä joukossa oon blokeerattu.\nSyy:\n\n$1", + "translate-language-disabled": "Kääntäminen täle kielele ei ole mahollista.", + "translate-page-settings-legend": "Inställninkit", + "translate-page-group": "Joukko", + "translate-page-limit": "Rajotus", + "translate-page-limit-option": "$1 {{PLURAL:$1|viesti|viestiä}} sivula", + "translate-page-navigation-legend": "Navikeerinki", + "translate-page-showing-all": "Näytethään $1 {{PLURAL:$1|viesti|viestiä}}.", + "translate-next": "Seuraava sivu", + "translate-prev": "Eelinen sivu", + "translate-page-description-legend": "Tietoja joukosta", + "translate-page-description-hasoptional": "Tässä viestijoukossa oon valinnaisia viestejä.\nValinnaiset viestit oon käänettävä vain kielile, joila oon erikoisvaatimuksia kuten välilyöntien puuttuminen tai erisnimien translitterointi. $1", + "translate-page-edit": "mookkaa", + "translate-optional": "(vapa)", + "translate-edit-title": "Mookkaa \"$1\"", + "translate-edit-translation": "Käänös", + "translate-edit-contribute": "avusta tokymentoinnissa", + "translate-edit-no-information": "Tätä viestiä ei ole tokymentoitu.\nJos tiiät missä tai miten tätä viestiä käytethään, voit auttaa muita kääntäjiä lissäämällä kommentteja tähän viestiin.", + "translate-edit-in-other-languages": "Viesti muila kielilä", + "translate-edit-tmmatch-source": "Käänöksen läheteksti: $1", + "translate-use-suggestion": "Korvaa nykynen käänös tällä ehotuksella.", + "translate-edit-nopermission": "Viestien kääntämisheen tarvithaan käänösoikeuet.", + "exporttranslations": "Eksporteeraa käänöksiä", + "translate-export-not-supported": "Käänösten eksporteerausta ei tueta.", + "translate-export-format-notsupported": "Määritelty eksporteerausmuoto ei tue viestijoukkoa.", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Seuraava parametri oon tuntematon|Seuraavat parametrit ovat tuntemattomia}}:\n$1", + "translate-checks-links": "{{PLURAL:$2|Seuraava länkki oon ongelmallinen|Seuraavat länkit ovat ongelmallisia}}:\n$1", + "translate-checks-links-missing": "{{PLURAL:$2|Tätä länkkiä|$2 Näitä länkkejä}} ei ole käytetty käänöksessä:\n$1", + "translate-checks-plural-dupe": "{{PLURAL:}}-komennon lopussa on samoja muotoja. {{PLURAL:$1|lampaani|lampaani}} tulisi kirjottaa {{PLURAL:$1|lampaani}}.", + "translate-checks-gettext-plural-missing": "Käänöksen tulee sisältää {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} vaatii täsmälleen $1 {{PLURAL:$1|monikkomuodon|monikkomuotoa}}. Nyt siinä oon $2 {{PLURAL:$2|monikkomuoto|monikkomuotoa}}.", + "translate-checks-smartformat-plural-missing": "Käänöksen pitää käyttää monikkomuotoja muuttujalla $1.", + "translate-checks-unicode-plural-missing": "Käänöksen tulee sisältää {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "Monikkomuodot tulee antaa muodossa $1. Ny ne ovat muodossa $2.", + "translate-checks-pagename": "Nimityhjyys ei ole sama kuin viestin määritelmässä", + "translate-checks-format": "Tämä käänös ei nouata alkuperästä tekstiä tai sillä oon virhèlinen syntaksi: $1", + "translate-checks-parametersnotequal": "Käänöksessä pitäisi olla {{PLURAL:$2|yksi parameetteri|$2 parameetteriä}}, mutta vain {{PLURAL:$1|yksi parameetteri|$1 parameetteriä}} löyettiin.", + "translate-checks-fudforum-syntax": "Käytä merkinnän $1 sijasta merkintää $2 tässä prujektissa.", + "translate-checks-newline-missing-start": "Käänöksen alusta puuttuu $1 {{PLURAL:$1|rivinvaihto|rivinvaihtoa}}.", + "translate-checks-newline-missing-end": "Käänöksen lopusta puuttuu $1 {{PLURAL:$1|rivinvaihto|rivinvaihtoa}}.", + "translate-checks-newline-extra-start": "Käänöksen alussa on $1 {{PLURAL:$1|ylimääräinen rivinvaihto|ylimääräistä rivinvaihtoa}}.", + "translate-checks-newline-extra-end": "Käänöksen lopussa on $1 {{PLURAL:$1|ylimääräinen rivinvaihto|ylimääräistä rivinvaihtoa}}.", + "prefs-translate": "Käännösinställninkit", + "translate-pref-editassistlang-help": "Pilkuin eroteltu lista kielikooteista.\nViestin käänökset näillä kielillä näkyvät kääntäessäsi.\nInställninkien oletusarvoiset kielet riippuvat kielestä, jolle olet kääntämässä.", + "translate-pref-editassistlang-bad": "Listassa on kelpaamaton kielikooti:\n$1.", + "right-translate": "Käänthää käänöstyöneuvolla", + "action-translate": "käänthää käänöstyöneuvolla", + "right-translate-manage": "Hallinnoida viestijoukkoja", + "action-translate-manage": "hallita viestijoukkoja", + "right-translate-import": "importeerata muilla työneuvoilla tehtyjä käänöksiä", + "action-translate-import": "importeerata offline-käänöksiä", + "right-translate-messagereview": "Hyväksyä käänöksiä", + "action-translate-messagereview": "etukattella käänöksiä", + "right-translate-groupreview": "Muuttaa viestijoukkojen tilaa", + "action-translate-groupreview": "muuttaa viestijoukkojen tilaa", + "translate-rcfilters-translations": "Käänökset", + "translate-rcfilters-translations-only-label": "Käänökset", + "translate-rcfilters-translations-only-desc": "Muutokset käänettyihin sivuihin.", + "translate-rcfilters-translations-filter-label": "Ei käänöksiä", + "translate-rcfilters-translations-filter-desc": "Kaikki muutokset jokka eivät ole käänöksiä.", + "translate-rcfilters-translations-site-desc": "Mookkaukset sivuston viesteihin MeetiaWiki-nimityhjyyessä.", + "translate-rc-translation-filter": "Käänösten suodatus", + "translate-rc-translation-filter-only": "näytä vain käänökset", + "translate-rc-translation-filter-filter": "piilota käänökset", + "translationstats": "Käänösstatistiikit", + "translate-stats-edits": "Mookkauksia", + "translate-statsf-intro": "Voit luoda yksinkertaisia statistiikkejä tälä lomakkeela. Kaikilla arvoilla on ylä- ja alarajat.", + "translate-statsf-start": "Aloitustaatumi", + "translate-statsf-scale-months": "kuukausia", + "translate-statsf-scale-weeks": "viikkoja", + "translate-statsf-scale-days": "päiviä", + "translate-statsf-scale-hours": "tiimoja", + "translate-statsf-count-edits": "mookkaukset", + "translate-statsf-count-registrations": "uuet käyttäjät", + "translate-statsf-count-reviews": "käänösten hyväksymisiä", + "translate-tag-page-desc": "Wikisivun [[$2|$1]] käänös kielestä $3 ($4).", + "translate-sidebar-alltrans": "Muila kielilä", + "translations": "Kaikki käänökset", + "translations-summary": "Kirjota alle sen viestin nimi, jonka kaikki käänökset halvaat nähä.", + "translate-translations-no-message": "”$1” ei ole käänettävä viesti", + "translate-translations-none": "Viestillä ”$1” ei ole käänöksiä", + "translate-translations-count": "Kaikkians {{PLURAL:$1|yksi käänös|$1 käänöstä}}.", + "translate-translations-messagename": "Nimi:", + "translate-translations-project": "Prujekti:", + "translate-translations-history-short": "h", + "languagestats": "Kielistatistiikit", + "languagestats-summary": "Tämä sivu näyttää valitun kielen käänösstatistiikit kaikile viestijoukoille.", + "messagegroupstats-summary": "Tällä sivula on statistiikkejä viestijoukoista.", + "languagestats-stats-for": "Käänösstatistiikit kielele $1 ($2).", + "languagestats-recenttranslations": "verekset käänökset", + "translate-langstats-incomplete": "Jotkut tämän sivun statistiikit ovat vaillinaisia. Saat lissää statistiikkejä lattaamalla sivun uuesti.", + "translate-language-code": "Kielikooti", + "translate-language-code-field-name": "Kielikooti:", + "translate-suppress-complete": "Piilota kokonaan käänetyt viestijoukot", + "translate-ls-noempty": "Piilota kokonaan kääntämättömät viestijoukot", + "translate-percentage-complete": "Käänösten kattavuus", + "translate-languagestats-overall": "Kaikki viestijoukot yhessä", + "translate-ls-submit": "Näytä statistiikit", + "translate-ls-column-group": "Viestijoukko", + "translate-mgs-pagename": "Viestijoukkostatistiikit", + "translate-mgs-fieldset": "Näyttöinställninkit", + "translate-mgs-group": "Viestijoukko:", + "translate-mgs-nocomplete": "Älä näytä kieliä, joiden käänös on valmis", + "translate-mgs-noempty": "Älä näytä kieliä, joiden käänöstä ei ole alotettu", + "translate-mgs-submit": "Näytä statistiikit", + "translate-mgs-totals": "Kaikki $1 {{PLURAL:$1|kieltä}} yhessä", + "translate-mgs-nothing": "Pyyetyille statistiikoille ei löydy resyltaatteja.", + "supportedlanguages-summary": "Tällä sivula luetelhaan kaikki kielet, joita {{SITENAME}} tukee, sekä kaikki \nnäillä kielillä työskentelevät kääntäjät.\nKääntäjän nimi oon sitä suurempi, mitä enemmän hän oon tehnyt käänöksiä.\nAlleviivauksen väri kertoo, milloin kääntäjä oon viimeksi kääntänyt täällä.", + "supportedlanguages-colorlegend": "Värin selitys: Viimeinen käänös $1 päivää sitten.", + "supportedlanguages-recenttranslations": "verekset käänökset", + "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|mookkaus|mookkausta}} - viimeinen mookkaus $3 {{PLURAL:$3|päivä|päivää}} sitten", + "abusefilter-edit-builder-vars-translate-source-text": "Käännösyksikön läheteksti", + "translate-save": "Säästä ($1)", + "translate-jssti-add": "Lissää listaan", + "managemessagegroups": "Viestijoukkojen hallinta", + "translate-smg-submit": "Lähätä muutokset käsiteltäviksi", + "translate-smg-more": "Näien muutosten säästämisen jälkheen oon myös muita käsiteltäviä muutoksia.", + "translate-smg-left": "Viestin nykynen sisältö", + "translate-smg-rename-select": "Valitte", + "translate-smg-rename-cancel": "Lopeta", + "translate-smg-rename-new": "Lissää uutena...", + "translate-manage-import-new": "Uusi viesti $1", + "translate-manage-import-deleted": "Otettu poies viesti $1", + "translate-manage-action-import": "Importeeraa", + "translate-manage-action-conflict": "Importeeraa ja merkitte käänökset tarkastettavaksi", + "translate-manage-action-fuzzy": "Importeeraa ja merkitte käänökset tarkastettavaksi", + "translate-manage-action-rename-fuzzy": "Uuelleennimeä ja merkitte käänökset tarkastettavaksi", + "translate-manage-action-rename": "Nimeä uuesti", + "translate-manage-import-done": "Importeeraus valmis!", + "importtranslations": "Käänösten eksporteeraus", + "translate-import-from-local": "Paikallinen fiili", + "translate-import-load": "Lattaa fiili", + "translate-import-err-dl-failed": "Fiilin noutaminen epäonnistui:\n$1", + "translate-import-err-ul-failed": "Fiilin lähättäminen epäonnistui", + "translate-import-err-invalid-title": "Annettu fiilinimi $1 oon virheellinen.", + "translate-import-err-no-such-file": "Fiiliä $1 ei ole tai sitä ei ole säästetty paikallisesti.", + "translate-import-err-stale-group": "Tämä fiili kuuluu viestijoukkoon, jota ei ole olemassa.", + "translate-import-err-no-headers": "Fiili ei ole kelvollisesti muotoiltu Gettext-fiili Translate-laajennoksen käyttämässä muodossa:\nViestijoukko- ja kielitietoja ei löytynyt fiilin otsakkeesta.", + "translate-js-summary": "Yhteenveto:", + "translate-js-save": "Säästä", + "translate-js-next": "Säästä ja aukase seuraava", + "translate-js-skip": "Hyppää seuraavhaan", + "translate-js-history": "Käänöshistuuria", + "translate-js-support-title": "Pyyä apua, jos olemassa olevien tietojen avulla viestiä ei voi kääntää oikein.", + "translate-js-support-unsaved-warning": "Kaikkia käänöksiä ei ole säästetty.", + "translate-gs-code": "Kooti", + "translate-documentation-language": "käänöstokymenttasuuni", + "translate-searchprofile": "Käänökset", + "translate-searchprofile-tooltip": "Hae kaikista käänöksistä", + "translate-searchprofile-note": "Lissää hakuvaihtoehtoja oon saatavilla sivula [$1 translation search].", + "log-name-translationreview": "Arvioitujen käänösten loki", + "log-description-translationreview": "Kaikkien käänösten ja viestijoukkojen arviointiloki.", + "logentry-translationreview-message": "$1 {{GENDER:$2|tarkasti}} käänöksen $3", + "logentry-translationreview-group": "$1 {{GENDER:$2|muutti}} kohteen $3 kielen $4 käänöksen tilan tilasta $6 tilaan $7", + "right-translate-sandboxaction": "Suorittaa toimintoja, jokka oon sallittu hyväksymättömille kääntäjille", + "action-translate-sandboxaction": "suorittaa toimintoja, jokka oon sallittu hyväksymättömille kääntäjille", + "translate-workflow-set-doing": "Asetethaan...", + "translate-workflow-autocreated-summary": "Sivun automaattinen luonti viestijoukkotilan $1 käänökselle", + "translate-workflowgroup-desc": "Tämä viestijoukko sisältää viestijoukkotilojen käänökset.\nTilat määritellään asetusmuuttujalla $wgTranslationWorkflowStates.", + "translate-dynagroup-recent-label": "Tuoreet käänökset", + "translate-dynagroup-recent-desc": "Tämä viestijoukko näythää kaikki verekset käänökset.\nSoveltuu hyvin käänösten tarkastamiseen.", + "translate-dynagroup-additions-desc": "Tämä viestijoukko näyttää uuet ja muuttuneet viestit.", + "translate-msggroupselector-projects": "Viestijoukko", + "translate-msggroupselector-search-placeholder": "Hae joukkoja", + "translate-msggroupselector-search-recent": "Verekset", + "translate-msggroupselector-view-subprojects": "$1 {{PLURAL:$1|alajoukko|alajoukkoa}}", + "tux-tab-translated": "Käänetyt", + "tux-edit": "Mookkaa", + "tux-status-optional": "Vapa", + "tux-status-translated": "Käänetty", + "tux-status-saving": "Säästetään...", + "tux-status-unsaved": "Säästämätön", + "tux-editor-placeholder": "Käänös", + "tux-editor-paste-original-button-label": "Liitä läheteksti", + "tux-editor-save-button-label": "Säästä käänös", + "tux-editor-skip-button-label": "Hyppää seuraavhaan", + "tux-editor-cancel-button-label": "Lopeta", + "tux-editor-confirm-button-label": "Hyväksy käänös", + "tux-editor-proofread-button-label": "Markeeraa tarkastetuksi", + "tux-editor-shortcut-info": "Paina ”$1” hyväksyäksesi ja siirtyäksesi seuraavaan viestiin, ”$2” ohittaaksesi, ”$4” siirtyäksesi yhteenvethoon tai ”$3” näyttääksesi muut näppäinyhistelmät.", + "tux-editor-edit-desc": "Mookkaa tokymenttasuunia", + "tux-editor-add-desc": "Lissää tokymenttasuuni", + "tux-editor-suggestions-title": "Ehotukset", + "tux-editor-in-other-languages": "Muila kielilä", + "tux-editor-need-more-help": "Tarvittekko lisäapua?", + "tux-editor-save-failed": "Käänöksen säästäminen epäonnistui: $1", + "tux-editor-message-desc-more": "Näytä lissää", + "tux-editor-clear-translated": "Piilota käänetyt", + "tux-editor-translate-mode": "Lista", + "tux-editor-proofreading-hide-own-translations": "Piilota sinun käänökset", + "tux-editor-proofreading-show-own-translations": "Näytä sinun käänökset", + "tux-proofread-action-tooltip": "Markeeraa tarkastetuksi", + "tux-proofread-edit-label": "Mookkaa", + "tux-editor-page-mode": "Sivu", + "tux-editor-doc-editor-placeholder": "Viestin tokymenttasuuni", + "tux-editor-doc-editor-save": "Säästä tokymenttasuuni", + "tux-editor-doc-editor-cancel": "Lopeta", + "tux-messagetable-more-messages": "$1 {{PLURAL:$1|viesti|viestiä}} lissää", + "tux-messagetable-loading-messages": "Ladathaan {{PLURAL:$1|viestiä|viestejä}}...", + "tux-message-filter-placeholder": "Hae listasta", + "tux-message-filter-result": "{{PLURAL:$1|Yksi hakuresyltaatti|$1 hakuresyltaattia}} haulle $2", + "tux-message-filter-advanced-button": "Avanseerattu haku", + "tux-proofread-translated-by-self": "Sinun kääntämäsi", + "tux-empty-list-translated": "Ei käänettyjä viestejä", + "tux-empty-list-translated-guide": "Voit jelpata kääntämällä", + "tux-empty-list-translated-action": "Käänä", + "tux-empty-there-are-optional": "Saatavilla oon valinnaisia viestejä, joita ei näytetä.", + "tux-empty-you-can-help-providing": "Voit auttaa tekemällä uusia käänöksiä.", + "tux-empty-you-can-review-already-proofread": "Voit tarkastaa muitten aiemmin tarkastamia käänöksiä.", + "tux-empty-list-other": "Ei käänettävää", + "tux-empty-list-other-guide": "Voit auttaa tarkastamalla käänöksiä", + "tux-empty-list-other-action": "Tarkasta käänöksiä", + "tux-editor-close-tooltip": "Sulje", + "tux-editor-message-tools-show-editor": "Näytä wikimookkaimessa", + "tux-editor-message-tools-history": "Histuuria", + "tux-editor-message-tools-delete": "Ota poies", + "tux-editor-message-tools-translations": "Kaikki käänökset", + "tux-editor-message-tools-linktothis": "Länkki tähän viestiin", + "tux-editor-loading": "Ladathaan...", + "tux-editor-loading-failed": "Käänösapuvälineiden lattaus epäonnistui: $1", + "translate-search-more-languages-info": "$1 {{PLURAL:$1|kieli|kieltä}} lissää", + "translate-statsbar-tooltip": "$1 % käänetty, $2 % tarkastettu", + "translate-statsbar-tooltip-with-fuzzy": "$1 % käänetty, $2 % tarkastettu, $3 % vanhentunut", + "translate-search-more-groups-info": "$1 {{PLURAL:$1|muu joukko|muuta joukkoa}}", + "translate-syntax-error": "Käänös sisältää syntaksivirheitä", + "tux-session-expired": "Et ole enää lokannu sisäle. Lokkaa sisäle toisessä välilehdessä. Vaihtoehtoisesti voit kopioida säästämättömät käänökset, lokata sisäle ja palata täle sivule säästämään käänökset uuestaan.", + "tux-nojs": "Tämä työneuvo ei toimi ilman JavaScriptiä. JavaScript oon poistettu käytöstä, se ei toimi, tai tätä selainta ei tueta.", + "specialpages-group-translation": "Käänös" +} diff --git a/MLEB/Translate/i18n/core/fo.json b/MLEB/Translate/i18n/core/fo.json index 1dd0d83a..a00451f9 100644 --- a/MLEB/Translate/i18n/core/fo.json +++ b/MLEB/Translate/i18n/core/fo.json @@ -47,29 +47,11 @@ "translate-use-suggestion": "Skift út verandi týðing við hetta uppskotið.", "translate-edit-nopermission": "Tú skalt hava loyvi til at týða boð.", "translate-edit-askpermission": "Bið um loyvi", - "translate-magic-pagename": "Víðkað MediaWiki týðing", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Heinta", - "translate-magic-cm-export": "Útflyt", - "translate-magic-nothing-to-export": "Tað er onki at útflyta.", - "translate-magic-cm-to-be": "Skal-vera", - "translate-magic-cm-current": "Verandi", - "translate-magic-cm-original": "Upprunaligt", - "translate-magic-cm-comment": "Viðmerking:", - "translate-magic-cm-save": "Goym", - "translate-magic-cm-updatedusing": "Dagført við at nýta [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Tað miseydnaðist at goyma", - "translate-magic-words": "Magisk orð", - "translate-magic-namespace": "Navnarúms nøvn", - "translate-magic-notsaved": "Tín rætting varð ikki goymd!", - "translate-magic-errors": "Vinarliga rætta fylgjandi {{PLURAL:$1|villu|villur}} í týðingunum:", - "translate-magic-saved": "Tínar broytingar vóru goymdar.", - "translate-checks-parameters": "Fylgjandi {{PLURAL:$2|parametur er|parametur eru}} ikki brúkt:\n$1", - "translate-checks-parameters-unknown": "Fylgjandi {{PLURAL:$2|parametur er|parametur eru}} ókend:\n$1", + "translate-checks-parameters": "Fylgjandi {{PLURAL:$2|parametur er|parametur eru}} ikki brúkt:\n$1", + "translate-checks-parameters-unknown": "Fylgjandi {{PLURAL:$2|parametur er|parametur eru}} ókend:\n$1", "translate-checks-balance": "Tað er ólíka mongd av {{PLURAL:$2|klombru|klombrum}}:\n$1", "translate-checks-links": "Fylgjandi {{PLURAL:$2|leinkja er problematisk|$2 leinkjur eru problematiskar}} :\n$1", "translate-checks-links-missing": "Fylgjandi {{PLURAL:$2|leinkja manglar|$2 leinkjur mangla}}:\n$1", - "translate-checks-xhtml": "Vinarliga útskift fylgjandi {{PLURAL:$2|lyklaorð}} við tey røttu:\n$1", "translate-checks-plural": "Upprunateksturin nýtir {{PLURAL:}} meðan týðingin ikki ger tað.", "translate-checks-plural-forms": "{{PLURAL:}} fingu {{PLURAL:$1|ein form|$1 formar}} men {{PLURAL:$2|bert ein formur verður|$2 formar verða}} stuðlaðir (0= og 1= formar ikki íroknaðir).", "translate-checks-plural-dupe": "{{PLURAL:}} hevur dupultan form í endanum. {{PLURAL:$1|mál|mál}} eigur at skrivast sum {{PLURAL:$1|mál}}.", @@ -78,7 +60,6 @@ "translate-checks-parametersnotequal": "Tal av parametrum er {{PLURAL:$1|$1}}; eigur at vera {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 er skeivt skrivað.", "translate-checks-fudforum-syntax": "Nýt $1 ístaðin fyri $2 í hesi verkætlanini.", - "translate-pref-nonewsletter": "Ikki senda mær týðindabrøv við telduposti", "translate-pref-editassistlang": "Stuðlandi mál:", "prefs-translate": "Møguleikar fyri týðing", "translate-pref-editassistlang-help": "Listi við málkotum atskilt við komma.\nTýðing av einum boði í hesum málum vera víst, meðan tú týðir.\nStandardlistin yvir mál avhengur av tínum máli.", @@ -249,8 +230,8 @@ "tux-editor-need-more-help": "Tørvar tær meira hjálp?", "tux-editor-ask-help": "Bið um meira kunning", "tux-editor-tm-match": "$1% samanfall", - "tux-warnings-more": "{{PLURAL:$1|$1 meira}}", - "tux-warnings-hide": "fjal", + "tux-notices-more": "{{PLURAL:$1|$1 meira}}", + "tux-notices-hide": "fjal", "tux-editor-n-uses": "brúkt $1 {{PLURAL:$1|ferð|ferðir}}", "tux-editor-message-desc-more": "Vís meira", "tux-editor-message-desc-less": "Vís minni", @@ -261,8 +242,8 @@ "tux-proofread-action-tooltip": "Merk sum rættlisið", "tux-proofread-edit-label": "Rætta", "tux-editor-page-mode": "Síða", - "tux-editor-outdated-warning": "Henda týðing hevur møguliga tørv á dagføring.", - "tux-editor-outdated-warning-diff-link": "Vís munir", + "tux-editor-outdated-notice": "Henda týðing hevur møguliga tørv á dagføring.", + "tux-editor-outdated-notice-diff-link": "Vís munir", "tux-editor-doc-editor-cancel": "Angra", "tux-messagetable-more-messages": "$1 {{PLURAL:$1|boð}} afturat", "tux-messagetable-loading-messages": "Innlesur {{PLURAL:$1|boð}}...", diff --git a/MLEB/Translate/i18n/core/fon.json b/MLEB/Translate/i18n/core/fon.json new file mode 100644 index 00000000..59429ebf --- /dev/null +++ b/MLEB/Translate/i18n/core/fon.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Mahuton" + ] + }, + "translate-documentation-language": "Sɛ́n é ná xwedó bo ná do nɔ́ bló tinmɛ lɛ é" +} diff --git a/MLEB/Translate/i18n/core/fr.json b/MLEB/Translate/i18n/core/fr.json index 1529109e..d6338005 100644 --- a/MLEB/Translate/i18n/core/fr.json +++ b/MLEB/Translate/i18n/core/fr.json @@ -8,55 +8,56 @@ "Cquoi", "Crochet.david", "Dereckson", + "Dr Brains", + "Epok", "Gomoko", "Grondin", "Guillom", "Hello71", "IAlex", "Jean-Frédéric", + "Linedwell", "Litlok", "Louperivois", "Ltrlg", "McDutchie", "Metroitendo", + "Orikrin1998", + "Pamputt", "Peter17", "PieRRoMaN", + "Pols12", "Seb35", "Sherbrooke", "Shirayuki", "Sumone10154", + "Thibaut120094", "Tititou36", "Urhixidur", "Verdy p", + "Wladek92", "Wyz", + "Yasten", "Yumeki", "Zcqsc06", - "Zetud", - "Linedwell", - "Orikrin1998", - "Dr Brains", - "Wladek92", - "Yasten", - "Thibaut120094", - "Epok", - "Pols12" + "Zetud" ] }, "translate": "Traduire", "translate-extensionname": "Traduire", "translate-desc": "[[Special:Translate|Page spéciale]] pour traduire MediaWiki et au-delà", - "translate-fuzzybot-desc": "C’est un compte système spécial utilisée par l’[https://www.mediawiki.org/wiki/Extension:Translate extension Translate] de MédiaWiki utilisé pour maintenir les traductions.\nCe compte fait partie du logiciel MédiaWiki et n’appartient à aucun utilisateur.", + "translate-fuzzybot-desc": "Ceci un compte système spécial utilisé par l’[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate extension Translate] de MediaWiki et nécessaire à la maintenance des traductions.\nCe compte fait partie du logiciel MediaWiki et n’appartient à aucun utilisateur.", "translate-taskui-export-to-file": "Exporter au format natif", "translate-taskui-export-as-po": "Exporter pour une traduction hors-ligne", "translate-taction-translate": "Traduire", "translate-taction-proofread": "Relecture", "translate-taction-lstats": "Statistiques de langue", - "translate-taction-mstats": "Statistiques de groupe de messages", + "translate-taction-mstats": "Statistiques du groupe de messages", "translate-taction-export": "Exporter", "translate-taction-disabled": "Cette action est désactivée sur ce wiki.", "translate-page-no-such-language": "Le code langue indiqué est incorrect.", "translate-page-no-such-group": "Le groupe spécifié est incorrect.", - "translate-page-disabled": "Les traductions dans cette langue ont été désactivées pour ce groupe.\nMotif :\n\n$1", + "translate-page-disabled": "Les traductions dans cette langue ont été désactivées pour ce groupe.\nMotif :\n\n$1", "translate-language-disabled": "La traduction dans cette langue est désactivée.", "translate-page-settings-legend": "Configuration", "translate-page-group": "Groupe", @@ -72,12 +73,12 @@ "translate-next": "Page suivante", "translate-prev": "Page précédente", "translate-page-description-legend": "Informations à propos du groupe", - "translate-page-description-hasoptional": "Ce groupe de messages contient des messages facultatifs.\nLes messages facultatifs ne devraient être traduits que quand votre langue a des exigences particulières comme ne pas utiliser d’espaces ou transformer des noms propres. $1", + "translate-page-description-hasoptional": "Ce groupe de messages contient des messages facultatifs.\nLes messages facultatifs ne devraient être traduits que quand votre langue a des exigences particulières comme ne pas utiliser d’espaces ou translittérer ou accorder les noms propres. $1", "translate-page-description-hasoptional-open": "Afficher les messages facultatifs.", "translate-page-edit": "modifier", "translate-optional": "(facultatif)", "translate-ignored": "(ignoré)", - "translate-edit-title": "Modifier « $1 »", + "translate-edit-title": "Modifier « $1 »", "translate-edit-definition": "Définition du message", "translate-edit-translation": "Traduction", "translate-edit-contribute": "contribuer", @@ -86,71 +87,67 @@ "translate-edit-in-other-languages": "Message dans d’autres langues", "translate-edit-warnings": "Avertissements sur les traductions incomplètes", "translate-edit-tmmatch-source": "Texte source de la traduction : $1", - "translate-edit-tmmatch": "$1 % de correspondance", + "translate-edit-tmmatch": "$1 % de correspondance", "translate-use-suggestion": "Remplacer la traduction actuelle par cette suggestion.", "translate-edit-nopermission": "Vous devez obtenir les droits de traduction pour traduire des messages.", "translate-edit-askpermission": "Obtenir la permission", "exporttranslations": "Exporter des traductions", "translate-export-form-format": "Format", "translate-export-invalid-format": "Veuillez fournir un format valide.", - "translate-export-not-supported": "L’exportation de traductions n’est pas prise en charge.", + "translate-export-not-supported": "L’exportation des traductions n’est pas prise en charge.", "translate-export-format-notsupported": "Le format d’exportation spécifié n’est pas pris en charge par le groupe de messages.", - "translate-magic-pagename": "Traduction étendue de MediaWiki", - "translate-magic-help": "Vous pouvez traduire les alias de pages spéciales, les mots magiques et les noms des espaces de noms.\n\nLes alias de pages spéciales et les mots magiques peuvent avoir plusieurs traductions.\nLes traductions sont séparées par une virgule (,).\nLes espaces de noms ne peuvent avoir qu’une seule traduction.\n\nTraduire l’espace de noms de discussion du projet $1 talk peut être compliqué.\n$1 est remplacé par le nom du site (par exemple {{ns:project_talk}}).\nS’il n’est pas possible d’obtenir une expression valide dans votre langue sans changer le nom du site, veuillez nous contacter sur [[Support|Soutien]].\n\nVous devez appartenir au groupe des traducteurs pour enregistrer toute modification.\nLes modifications ne sont pas enregistrées tant que vous n’avez pas cliqué sur le bouton « sauvegarder » en bas.", - "translate-magic-module": "Module :", - "translate-magic-submit": "Lister", - "translate-magic-cm-export": "Exporter", - "translate-magic-nothing-to-export": "Il n’y a rien à exporter.", - "translate-magic-cm-to-be": "Devient", - "translate-magic-cm-current": "Actuel", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Commentaire :", - "translate-magic-cm-save": "Publier", - "translate-magic-cm-updatedusing": "Mis à jour via [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "La publication a échoué.", - "translate-magic-special": "Alias des pages spéciales", - "translate-magic-words": "Mots magiques", - "translate-magic-namespace": "Noms des espaces de noms", - "translate-magic-notsaved": "Votre modification n’a pas été sauvegardée !", - "translate-magic-errors": "Corrigez {{PLURAL:$1|l’erreur suivante|les erreurs suivantes}} dans les traductions :", - "translate-magic-saved": "Vos modifications ont été enregistrées.", + "translate-export-group-too-large": "Le groupe de message choisi est trop gros. Choisir un groupe de message qui a moins de $1 {{PLURAL:$1|message|messages}} ou contacter l'administrateur de traduction pour avoir son conseil.", "translate-checks-parameters": "{{PLURAL:$2|Le paramètre suivant n’est pas utilisé|Les paramètres suivants ne sont pas utilisés}} :\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Le paramètre suivant est inconnu|Les paramètres suivants sont inconnus}} :\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Le paramètre suivant est inconnu|Les paramètres suivants sont inconnus}} :\n$1", "translate-checks-balance": "Il y a un nombre impair de parenthèse{{PLURAL:$2||s}} :\n$1", - "translate-checks-links": "{{PLURAL:$2|Le lien suivant pose|Les $2 liens suivants posent}} problème :\n$1", - "translate-checks-links-missing": "{{PLURAL:$2|Le lien suivant est manquant|Les $2 liens suivants sont manquants}} :\n$1", - "translate-checks-xhtml": "Veuillez corriger {{PLURAL:$2|la balise suivante|les balises suivantes}} :\n$1", + "translate-checks-links": "{{PLURAL:$2|Le lien suivant pose|Les $2 liens suivants posent}} problème :\n$1", + "translate-checks-links-missing": "{{PLURAL:$2|Le lien suivant est manquant|Les $2 liens suivants sont manquants}} :\n$1", "translate-checks-plural": "La définition utilise {{PLURAL:}} mais pas sa traduction.", "translate-checks-plural-forms": "{{PLURAL:}} a reçu {{PLURAL:$1|une forme|$1 formes}} mais {{PLURAL:$2|une seule est prise|seules $2 sont prises}} en charge (hors les formes 0= et 1=).", - "translate-checks-plural-dupe": "{{PLURAL:}} a des formes dupliquées au final. {{PLURAL:$1|sheep|sheep}} devrait être écrit ainsi: {{PLURAL:$1|sheep}}.", + "translate-checks-plural-dupe": "{{PLURAL:}} a des formes dupliquées au final. {{PLURAL:$1|sheep|sheep}} devrait être écrit ainsi : {{PLURAL:$1|sheep}}.", + "translate-checks-gettext-plural-missing": "Cette traduction doit contenir {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "Ce message ne prend pas en charge {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} accepte exactement $1 forme{{PLURAL:$1||s}} de nombre grammatical. Actuellement, $2 forme{{PLURAL:$1||s}} ont été données.", + "translate-checks-smartformat-plural-missing": "Cette traduction doit marquer le pluriel en fonction de la variable $1.", + "translate-checks-smartformat-plural-unsupported": "Ce message ne prend pas en charge le marquage du pluriel en fonction de la variable $1.", + "translate-checks-smartformat-plural-count": "Nombre incorrect de formes en fonction du nombre dans $3. Il devrait y avoir {{PLURAL:$1|une seule forme indiquée|$1 formes indiquées}}. Actuellement $2 {{PLURAL:$2|une seule forme est indiquée|$2 formes sont indiquées}}.", + "translate-checks-unicode-plural-missing": "Cette traduction doit contenir {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "Ce message ne prend pas en charge {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "Les formes plurielles doivent être définies comme $1. Cette traduction contient $2.", "translate-checks-pagename": "Espace de noms modifié depuis la définition", "translate-checks-format": "Cette traduction ne suit pas la définition ou a une syntaxe incorrecte : $1", - "translate-checks-escape": "Les échappements suivants peuvent être accidentels : $1", - "translate-checks-parametersnotequal": "Le nombre de paramètres est {{PLURAL:$1|$1}} ; ce devrait être {{PLURAL:$2|$2}}.", - "translate-checks-malformed": "$1 est incorrect.", + "translate-checks-escape": "{{PLURAL:$2|Le caractère d’échappement suivant peut être accidentel|Les caractères d’échappement suivants peuvent être accidentels}} : $1. {{PLURAL:$4|Un caractère d’échappement valide est|Les caractères d’échappement valides sont :}} $3.", + "translate-checks-parametersnotequal": "Le nombre de paramètres est {{PLURAL:$1|$1}} ; ce devrait être {{PLURAL:$2|$2}}.", + "translate-checks-malformed": "$1 est mal formé.", "translate-checks-fudforum-syntax": "Utiliser $1 au lieu de $2 dans ce projet.", - "translate-pref-nonewsletter": "Ne pas m’envoyer les courriels d’informations", - "translate-pref-editassistlang": "Langues d’assistance :", + "translate-checks-newline-missing-start": "Il manque $1 caractère{{PLURAL:$1||s}} de saut de ligne au début de la traduction.", + "translate-checks-newline-missing-end": "Il manque $1 caractère{{PLURAL:$1||s }} de saut de ligne à la fin de la traduction.", + "translate-checks-newline-extra-start": "Il y a $1 caractère{{PLURAL:$1||s}} de saut de ligne en trop au début de la traduction.", + "translate-checks-newline-extra-end": "Il y a $1 caractère{{PLURAL:$1||s}} de saut de ligne en trop à la fin de la traduction.", + "translate-checks-value-not-present": "La traduction doit être égale à {{PLURAL:$1|1=|l'une des valeurs suivantes :}} $1.", + "translate-checks-replacement": "Utiliser $2 au lieu de $1.", + "translate-pref-editassistlang": "Langues d’assistance :", "prefs-translate": "Options de traduction", "translate-pref-editassistlang-help": "Liste de codes de langues séparés par une virgule.\nLa traduction d’un message dans ces langues est affiché quand vous êtes en train de le traduire.\nLa liste par défaut des langues varie en fonction de votre langue.", - "translate-pref-editassistlang-bad": "Code langue invalide dans la liste :\n$1.", + "translate-pref-editassistlang-bad": "Code langue non valide dans la liste :\n$1.", "right-translate": "Modifier avec l’interface de traduction", + "action-translate": "modifier en utilisant l’interface de traduction", "right-translate-manage": "Gérer les groupes de message", "action-translate-manage": "gérer les groupes de messages", "right-translate-import": "Importer les traductions hors ligne", "action-translate-import": "importer les traductions hors-ligne", - "right-translate-messagereview": "Marquer comme relues les traductions", + "right-translate-messagereview": "Relire les traductions", "action-translate-messagereview": "relire les traductions", - "right-translate-groupreview": "Modifier l'état de flux de travail des groupes de message", - "action-translate-groupreview": "modifier l'état du flux de travail pour les groupes de messages", + "right-translate-groupreview": "Modifier l’état de flux de travail des groupes de messages", + "action-translate-groupreview": "modifier l’état du flux de travail pour les groupes de messages", "translate-rcfilters-translations": "Traductions", "translate-rcfilters-translations-only-label": "Traductions", "translate-rcfilters-translations-only-desc": "Modifications apportées aux pages traduites.", - "translate-rcfilters-translations-filter-label": "Non traduits", + "translate-rcfilters-translations-filter-label": "Pages hors traductions", "translate-rcfilters-translations-filter-desc": "Toutes les modifications qui ne sont pas des traductions.", "translate-rcfilters-translations-site-label": "Messages système", - "translate-rcfilters-translations-site-desc": "Adaptation des messages système dans l'espace de noms MediaWiki.", - "translate-rc-translation-filter": "Filtrer les traductions :", + "translate-rcfilters-translations-site-desc": "Adaptation des messages système dans l’espace de noms MediaWiki.", + "translate-rc-translation-filter": "Filtrer les traductions :", "translate-rc-translation-filter-no": "Ne rien faire", "translate-rc-translation-filter-only": "Afficher uniquement les traductions", "translate-rc-translation-filter-filter": "Exclure les traductions", @@ -161,9 +158,9 @@ "translate-stats-registrations": "Inscriptions", "translate-stats-reviews": "Relectures", "translate-stats-reviewers": "Relecteurs", - "translate-statsf-intro": "Vous pouvez générer des statistiques simples via ce formulaire.\nToutes les valeurs ont des limites supérieures et inférieures.", + "translate-statsf-intro": "Vous pouvez générer des statistiques simples par ce formulaire.\nToutes les valeurs ont des limites supérieures et inférieures.", "translate-statsf-options": "Options du graphique", - "translate-statsf-width": "Largeur en pixels :", + "translate-statsf-width": "Largeur en pixels :", "translate-statsf-height": "Hauteur en pixels :", "translate-statsf-days": "Durée de la période, en jours :", "translate-statsf-start": "Date de début :", @@ -199,12 +196,12 @@ "languagestats-stats-for": "Statistiques de traduction pour $1 ($2).", "languagestats-recenttranslations": "traductions récentes", "translate-langstats-incomplete": "Certaines statistiques sur cette page sont incomplètes. Merci de la recharger pour en obtenir davantage.", - "translate-langstats-expand": "Développer", - "translate-langstats-collapse": "Replier", - "translate-langstats-expandall": "Tout développer", - "translate-langstats-collapseall": "Tout replier", + "translate-langstats-expand": "développer", + "translate-langstats-collapse": "replier", + "translate-langstats-expandall": "tout développer", + "translate-langstats-collapseall": "tout replier", "translate-language-code": "Code de langue", - "translate-language-code-field-name": "Code de langue :", + "translate-language-code-field-name": "Code de langue :", "translate-suppress-complete": "Masquer les groupes de messages entièrement traduits", "translate-ls-noempty": "Masquer les groupes de messages sans aucune traduction", "translate-language": "Langue", @@ -213,76 +210,92 @@ "translate-percentage-complete": "Achèvement", "translate-percentage-fuzzy": "Désuets", "translate-percentage-proofread": "Relu", - "translate-languagestats-overall": "Tous les groupes de messages ensemble", + "translate-languagestats-overall": "Tous les groupes de messages ensembles", "translate-ls-submit": "Afficher les statistiques", "translate-ls-column-group": "Groupe de messages", "translate-mgs-pagename": "Statistiques du groupe de messages", - "translate-mgs-fieldset": "Afficher les préférences", - "translate-mgs-group": "Groupe de messages:", - "translate-mgs-nocomplete": "Ne pas afficher les langues qui ont terminé leur traduction", + "translate-mgs-fieldset": "Préférences d’affichage", + "translate-mgs-group": "Groupe de messages :", + "translate-mgs-nocomplete": "Ne pas afficher les langues dont la traduction est achevée", "translate-mgs-noempty": "Ne pas afficher les langues qui n’ont aucune traduction", "translate-mgs-submit": "Afficher les statistiques", "translate-mgs-column-language": "Langue", - "translate-mgs-totals": "$1 {{PLURAL:$1|langue|langues}} au total", + "translate-mgs-totals": "Ensemble de{{PLURAL:$1||s}} $1 langue{{PLURAL:$1||s}}", "translate-mgs-invalid-group": "Le groupe spécifié $1 n’existe pas.", "translate-mgs-nothing": "Rien à afficher pour les statistiques demandées.", "supportedlanguages": "Langues prises en charge", - "supportedlanguages-summary": "Cette page affiche une liste de toutes les langues prises en charge par {{SITENAME}}, avec les noms des traducteurs qui travaillent dans cette langue.\nLe nom d'un traducteur apparaît en plus gros en fonction du nombre de modifications auxquelles il a contribué.\nLa couleur du soulignement indique si le traducteur a été actif ici récemment.", - "supportedlanguages-colorlegend": "Légende pour la couleur: Dernière traduction il y a $1 jours.", - "supportedlanguages-portallink": "[$1] $2 — $3", + "supportedlanguages-summary": "Cette page affiche une liste de toutes les langues prises en charge par {{SITENAME}}, avec les noms des traducteurs qui travaillent dans cette langue.\nLe nom d’un traducteur apparaît en plus gros en fonction du nombre de modifications auxquelles il a contribué.\nLa couleur du soulignement indique si le traducteur a été actif ici récemment.", + "supportedlanguages-colorlegend": "Légende pour la couleur : dernière traduction il y a $1 jours.", + "supportedlanguages-portallink": "[$1] $2 – $3", "supportedlanguages-portallink-nocldr": "[$1] $2", - "supportedlanguages-sqlite-error": "SQLite n'est pas supporté", - "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Traducteur|Traductrice}}|Traducteurs}} : $1", + "supportedlanguages-sqlite-error": "SQLite n’est pas pris en charge", + "supportedlanguages-translators": "Traduct{{PLURAL:$2|{{GENDER:$3|eur|rice}}|eurs}} : $1", "supportedlanguages-recenttranslations": "traductions récentes", - "supportedlanguages-count": "$1 {{PLURAL:$1|langue|langues}} au total.", - "supportedlanguages-activity": "$1 : $2 modification{{PLURAL:$2||s}} - Dernière modification il y a $3 jour{{PLURAL:$3||s}}", - "abusefilter-edit-builder-vars-translate-source-text": "Texte source de l'unité de traduction", + "supportedlanguages-count": "$1 langue{{PLURAL:$1||s}} en tout.", + "supportedlanguages-activity": "$1 : $2 modification{{PLURAL:$2||s}} – dernière modification il y a $3 jour{{PLURAL:$3||s}}", + "translate-supportedlanguages-cached": "Cette information a été mise en cache il y a $1.", + "abusefilter-edit-builder-vars-translate-source-text": "Texte source de l’unité de traduction", + "abusefilter-edit-builder-vars-translate-target-language": "Langue cible pour la traduction", "translate-save": "Publier ($1)", "translate-jssti-add": "Ajouter à la liste", - "managemessagegroups": "Gestion du groupe des messages", + "managemessagegroups": "Gestion des groupes de messages", "translate-smg-notallowed": "Vous n’êtes pas autorisé à effectuer cette action.", "translate-smg-nochanges": "Il n’y a aucune modification à traiter.", "translate-smg-submit": "Soumettre les modifications pour traitement", - "translate-smg-submitted": "Les définitions de message ont été mises à jour. Les modifications sont traitées en arrière-plan.", + "translate-smg-submitted": "Les définitions de messages ont été mises à jour. Les modifications sont traitées en arrière-plan.", + "translate-smg-submitted-with-failure": "La mise à jour {{PLURAL:$1|de la définition|des définitions}} du message a échoué pour {{PLURAL:$1|le groupe suivant|les groupes suivants}} : $2. $3", + "translate-smg-submitted-others-processing": "Les définitions de message pour d’autres groupes sont traitées en tâche de fond.", "translate-smg-more": "Il y aura d’autres modifications à effectuer après avoir envoyé ces modifications.", "translate-smg-left": "Contenu du message dans le wiki", - "translate-smg-right": "Modifications en cours de transfert", - "translate-manage-import-diff": "Message $1 | Actions : $2", + "translate-smg-right": "Modifications arrivées", + "translate-smg-rename-select": "Sélectionner", + "translate-smg-rename-cancel": "Annuler", + "translate-smg-rename-search": "Rechercher un message correspondant...", + "translate-smg-rename-select-err": "Veuillez sélectionner un message à renommer", + "translate-smg-rename-no-msg": "Aucun message trouvé.", + "translate-smg-rename-new": "Ajouter comme nouveau...", + "translate-smg-rename-rename": "Ajouter comme renommage de...", + "translate-smg-rename-dialog-title": "Sélectionner le renommage correspondant pour $1", + "translate-smg-changeset-modified": "L’ensemble des modifications a été modifié par un autre utilisateur ou processus. Vos modifications ne peuvent pas être publiées car elles pourraient écraser ses modifications. Veuillez recharger la page pour voir les dernières modifications.", + "translate-manage-import-diff": "Message $1 | Actions : $2", "translate-manage-import-new": "Nouveau message $1", - "translate-manage-import-deleted": "Message supprimé $1", - "translate-manage-action-import": "Importation", + "translate-manage-import-deleted": "Message $1 supprimé", + "translate-manage-action-import": "Importer", "translate-manage-action-conflict": "Importer et marquer comme flou", "translate-manage-action-ignore": "Ignorer", "translate-manage-action-fuzzy": "Importer et marquer les traductions comme floues", - "translate-manage-nochanges": "Il n’y a pas de modification dans les définitions des messages de ce groupe.", + "translate-manage-action-rename-fuzzy": "Renommer et marquer les traductions comme floues", + "translate-manage-action-rename": "Renommer", + "translate-manage-action-ignore-change": "Ignorer la modification de traduction", + "translate-manage-nochanges": "Il n’y a aucune modification dans les définitions de messages de ce groupe.", "translate-manage-nochanges-other": "Il n’y a eu aucune modification pour cette langue.\nUtilisez le lien ci-dessous pour revenir à la vue de détail du groupe.", - "translate-manage-inconsistent": "Une inconsistance a été détectée dans la requête.\nVérifiez s’il y a eu des modifications et ressayez. Détails : $1.", - "translate-manage-toolong": "La durée maximale du temps de traitement de $1 seconde{{PLURAL:$1||s}} a été dépassé.\nRenvoyez le formulaire pour continuer le traitement.", + "translate-manage-inconsistent": "Une inconsistance a été détectée dans la requête.\nVérifiez s’il y a eu des modifications et ressayez. Détails : $1.", + "translate-manage-toolong": "La durée maximale du temps de traitement de $1 seconde{{PLURAL:$1||s}} a été dépassée.\nRenvoyez le formulaire pour continuer le traitement.", "translate-manage-import-summary": "Importation d’une nouvelle version depuis une source externe.", + "translate-manage-import-rename-summary": "Renommé dans la source externe", "translate-manage-conflict-summary": "Importation d’une nouvelle version depuis une source externe. Vérifiez s’il vous plaît.", "translate-manage-submit": "Exécuter", "translate-manage-intro-other": "Ci-dessous figure une liste des modifications dans la langue $1.\nRelisez les modifications et choisissez une action à effectuer pour chacune.\nSi vous décidez d’ignorer les modifications, cette action ne sera que temporaire.", - "translate-manage-import-ok": "Importé : $1", - "translate-manage-import-done": "Import terminé !", + "translate-manage-import-ok": "Importé : $1", + "translate-manage-import-done": "Import terminé !", "importtranslations": "Importer les traductions", - "translate-import-from-local": "Importer un fichier local :", + "translate-import-from-local": "Importer un fichier local :", "translate-import-load": "Charger le fichier", - "translate-import-err-dl-failed": "Impossible d’accéder au fichier :\n$1", + "translate-import-err-dl-failed": "Impossible d’accéder au fichier :\n$1", "translate-import-err-ul-failed": "Le téléversement du fichier a échoué", - "translate-import-err-invalid-title": "Le nom du fichier fourni $1 est invalide.", - "translate-import-err-no-such-file": "Le fichier $1 n’existe pas ou n’a pas été importé localement.", + "translate-import-err-invalid-title": "Le nom du fichier fourni « $1 » n’est pas valide.", + "translate-import-err-no-such-file": "Le fichier « $1 » n’existe pas ou n’a pas été importé localement.", "translate-import-err-stale-group": "Le groupe de messages auquel ce fichier appartient n’existe pas.", "translate-import-err-no-headers": "Le fichier n’est pas un fichier ''Gettext'' bien formé dans le format attendu par l’extension ''Translate'' :\nil est impossible de déterminer le groupe et la langue depuis les entêtes du fichier.", - "translate-import-err-warnings": "Le fichier n’est pas bien formé.\nAssurez-vous que votre outil de traduction ne supprime pas les champs « msgctxt ».\nDétails : $1", - "translate-js-summary": "Résumé :", - "translate-js-save": "Enregistrer", - "translate-js-next": "Enregistrer et ouvrir le suivant", + "translate-js-summary": "Résumé :", + "translate-js-save": "Publier", + "translate-js-next": "Publier et ouvrir le suivant", "translate-js-skip": "Aller au suivant", "translate-js-history": "Historique de traduction", "translate-js-support": "Poser une question", "translate-js-support-title": "Demandez de l’aide s’il n’y a pas suffisamment d’informations pour traduire ce message correctement.", - "translate-js-support-unsaved-warning": "Vous avez des traductions non enregistrées.", - "translate-gs-pos": "Pos.", + "translate-js-support-unsaved-warning": "Vous avez des traductions non publiées.", + "translate-gs-pos": "Rang", "translate-gs-code": "Code", "translate-gs-continent": "Continent", "translate-gs-speakers": "Locuteurs", @@ -294,24 +307,24 @@ "translate-documentation-language": "Documentation du message", "translate-searchprofile": "Traductions", "translate-searchprofile-tooltip": "Rechercher dans toutes les traductions", - "translate-searchprofile-note": "Plus d'options de recherche sont disponibles avec [$1 recherche de traductions].", - "translate-search-languagefilter": "Filtrer par langue :", + "translate-searchprofile-note": "Plus d’options de recherche sont disponibles avec la [$1 recherche de traductions].", + "translate-search-languagefilter": "Filtrer par langue :", "translate-search-nofilter": "Aucun filtrage", - "log-name-translationreview": "Journal de relecture des traductions", - "log-description-translationreview": "Journal de toutes les relectures des traductions et des groupes de message.", - "logentry-translationreview-message": "$1 {{GENDER:$2|a relu}} la traduction $3", - "logentry-translationreview-group": "$1 {{GENDER:$2|a modifié}} l’état des traductions $4 de $3 de $6 à $7", + "log-name-translationreview": "Journal des relectures de traduction", + "log-description-translationreview": "Journal de toutes les relectures des traductions et des groupes de messages.", + "logentry-translationreview-message": "$1{{GENDER:$2|}} a relu la traduction $3", + "logentry-translationreview-group": "$1{{GENDER:$2|}} a modifié l’état des traductions en $4 de $3 de $6 à $7", "group-translate-sandboxed": "Traducteurs non approuvés", - "group-translate-sandboxed-member": "{{GENDER:$1|traducteur non approuvé|traductrice non approuvée}}", + "group-translate-sandboxed-member": "traduct{{GENDER:$1|eur|rice}} non approuvé{{GENDER:$1||e}}", "right-translate-sandboxmanage": "Gérer les utilisateurs limités au bac à sable", "action-translate-sandboxmanage": "gérer les utilisateurs limités au bac à sable", "right-translate-sandboxaction": "Exécuter des actions sur liste blanche pour les utilisateurs non-enregistrés", "action-translate-sandboxaction": "exécuter des actions sur liste blanche pour les utilisateurs non-enregistrés", "translate-workflow-state-": "(désactivé)", - "translate-workflowstatus": "Statut : $1", + "translate-workflowstatus": "État : $1", "translate-workflow-set-doing": "Activation...", "translate-workflow-autocreated-summary": "Création automatique de la page pour l’état du processus de travail $1", - "translate-stats-workflow": "Statut", + "translate-stats-workflow": "État", "translate-workflowgroup-label": "États du processus de travail", "translate-workflowgroup-desc": "Ce groupe de messages montre les états du processus de travail de traduction.\nLes états sont définis dans la variable de configuration $wgTranslateWorkflowStates.", "translate-dynagroup-recent-label": "Traductions récentes", @@ -321,43 +334,43 @@ "translate-msggroupselector-projects": "Groupe de messages", "translate-msggroupselector-search-placeholder": "Rechercher des groupes", "translate-msggroupselector-search-all": "Tous", - "translate-msggroupselector-search-recent": "Récent", - "translate-msggroupselector-view-subprojects": "$1 {{PLURAL:$1|sous-projet|sous-projets}}", + "translate-msggroupselector-search-recent": "Récents", + "translate-msggroupselector-view-subprojects": "$1 sous-groupe{{PLURAL:$1||s}}", "tux-languageselector": "Traduire en", "tux-tab-all": "Tous", - "tux-tab-untranslated": "Non traduit", + "tux-tab-untranslated": "Non traduits", "tux-tab-outdated": "Désuets", - "tux-tab-translated": "Traduit", - "tux-tab-unproofread": "Non relu", + "tux-tab-translated": "Traduits", + "tux-tab-unproofread": "Non relus", "tux-edit": "Modifier", "tux-status-optional": "Facultatif", - "tux-status-fuzzy": "Désuète", + "tux-status-fuzzy": "Désuet", "tux-status-proofread": "Corrigé", "tux-status-translated": "Traduit", - "tux-status-saving": "Enregistrement en cours…", - "tux-status-unsaved": "Non enregistrée", + "tux-status-saving": "Publication en cours...", + "tux-status-unsaved": "Non publié", "tux-save-unknown-error": "Une erreur inconnue s’est produite.", "tux-editor-placeholder": "Votre traduction", - "tux-editor-editsummary-placeholder": "Résumé (facultatif)", + "tux-editor-editsummary-placeholder": "Résumé facultatif", "tux-editor-paste-original-button-label": "Coller le texte source", "tux-editor-discard-changes-button-label": "Annuler les modifications", - "tux-editor-save-button-label": "Enregistrer la traduction", + "tux-editor-save-button-label": "Publier la traduction", "tux-editor-skip-button-label": "Aller au suivant", "tux-editor-cancel-button-label": "Annuler", "tux-editor-confirm-button-label": "Confirmer la traduction", "tux-editor-proofread-button-label": "Marquer comme relu", - "tux-editor-shortcut-info": "Appuyez sur « $1 » pour confirmer et passer au message suivant, « $2 » pour sauter, « $4 » pour fournir un résumé ou maintenir « $3 » pour voir d’autres raccourcis.", + "tux-editor-shortcut-info": "Appuyez sur « $1 » pour confirmer et passer au message suivant, « $2 » pour sauter, « $4 » pour fournir un résumé ou maintenir « $3 » pour voir d’autres raccourcis.", "tux-editor-edit-desc": "Modifier la documentation", "tux-editor-add-desc": "Ajouter une documentation", "tux-editor-suggestions-title": "Suggestions", "tux-editor-in-other-languages": "En d’autres langues", - "tux-editor-need-more-help": "Besoin d’aide ?", + "tux-editor-need-more-help": "Besoin d’aide ?", "tux-editor-ask-help": "Demander plus d’informations", "tux-editor-tm-match": "$1 % de correspondance", - "tux-warnings-more": "{{PLURAL:$1|$1 de plus}}", - "tux-warnings-hide": "masquer", - "tux-editor-save-failed": "Échec de l’enregistrement de la traduction : $1", - "tux-editor-n-uses": "utilisé $1 {{PLURAL:$1|fois}}", + "tux-notices-more": "{{PLURAL:$1|}}$1 de plus", + "tux-notices-hide": "masquer", + "tux-editor-save-failed": "Échec de la publication de la traduction : $1", + "tux-editor-n-uses": "utilisé $1 fois{{PLURAL:$1|}}", "tux-editor-message-desc-more": "Voir davantage", "tux-editor-message-desc-less": "Afficher moins", "tux-editor-clear-translated": "Masquer la traduction", @@ -368,20 +381,20 @@ "tux-proofread-action-tooltip": "Marquer comme relu", "tux-proofread-edit-label": "Modifier", "tux-editor-page-mode": "Page", - "tux-editor-outdated-warning": "Cette traduction peut nécessiter une mise à jour.", - "tux-editor-outdated-warning-diff-link": "Afficher les différences", + "tux-editor-outdated-notice": "Cette traduction peut nécessiter une mise à jour.", + "tux-editor-outdated-notice-diff-link": "Afficher les différences", "tux-editor-doc-editor-placeholder": "Documentation du message", - "tux-editor-doc-editor-save": "Enregistrer la documentation", + "tux-editor-doc-editor-save": "Publier la documentation", "tux-editor-doc-editor-cancel": "Annuler", - "tux-messagetable-more-messages": "$1 {{PLURAL:$1|message|messages}} de plus", - "tux-messagetable-loading-messages": "Chargement {{PLURAL:$1|du message|des messages}}…", + "tux-messagetable-more-messages": "$1 message{{PLURAL:$1||s}} de plus", + "tux-messagetable-loading-messages": "Chargement {{PLURAL:$1|du message|de $1 messages}}...", "tux-message-filter-placeholder": "Filtrer la liste", "tux-message-filter-result": "{{PLURAL:$1|0=Aucun résultat trouvé|1=Un résultat trouvé|$1 résultats trouvés}} pour « $2 »", "tux-message-filter-advanced-button": "Recherche avancée", "tux-message-filter-optional-messages-label": "Messages facultatifs", "tux-proofread-translated-by-self": "Traduit par vous", "tux-empty-list-all": "Ce groupe de messages est vide", - "tux-empty-list-all-guide": "Sélectionner un groupe de message différent à traduire", + "tux-empty-list-all-guide": "Sélectionner un groupe de messages différent à traduire", "tux-translate-page-no-such-group": "Le groupe indiqué n’existe pas. Sélectionnez un autre groupe de messages.", "tux-empty-list-translated": "Aucun message traduit", "tux-empty-list-translated-guide": "Vous pouvez aider à traduire", @@ -389,7 +402,7 @@ "tux-empty-no-messages-to-display": "Aucun message à afficher.", "tux-empty-there-are-optional": "Il y a des messages facultatifs n’apparaissant pas dans la liste", "tux-empty-show-optional-messages": "Afficher les messages facultatifs", - "tux-empty-no-outdated-messages": "Pas de messages désuets", + "tux-empty-no-outdated-messages": "Aucun message désuet", "tux-empty-nothing-to-proofread": "Rien à relire", "tux-empty-you-can-help-providing": "Vous pouvez aider en apportant de nouvelles traductions", "tux-empty-nothing-new-to-proofread": "Rien de nouveau à relire", @@ -401,18 +414,19 @@ "tux-editor-close-tooltip": "Fermer", "tux-editor-expand-tooltip": "Développer", "tux-editor-collapse-tooltip": "Replier", - "tux-editor-message-tools-show-editor": "Afficher dans l'éditeur wiki", + "tux-editor-message-tools-show-editor": "Afficher dans l’éditeur wiki", "tux-editor-message-tools-history": "Historique", "tux-editor-message-tools-delete": "Supprimer", "tux-editor-message-tools-translations": "Toutes les traductions", "tux-editor-message-tools-linktothis": "Lien vers ce message", - "tux-editor-loading": "Chargement en cours…", - "translate-search-more-languages-info": "$1 {{PLURAL:$1|langue supplémentaire|langues supplémentaires}}", + "tux-editor-loading": "Chargement en cours...", + "tux-editor-loading-failed": "Échec de chargement des aides à la traduction : $1", + "translate-search-more-languages-info": "$1 langue{{PLURAL:$1||s}} de plus", "translate-statsbar-tooltip": "$1% traduit, $2% relu", "translate-statsbar-tooltip-with-fuzzy": "$1% traduit, $2% relu, $3% désuet", "translate-search-more-groups-info": "$1 groupe{{PLURAL:$1||s}} de plus", - "translate-ulsdep-title": "Erreur de configuration", - "translate-ulsdep-body": "L’extension de traduction dépend de l’[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector Universal extension Sélecteur de langue].", + "translate-syntax-error": "La traduction contient des erreurs de syntaxe", "tux-session-expired": "Vous n’êtes plus connecté. Veuillez vous connecter dans un autre onglet. Sinon, faites une copie des traductions non enregistrées, connectez-vous et revenez sur cette page.", - "tux-nojs": "Cet outil ne fonctionne pas sans JavaScript. JavaScript est désactivé ou n'a pas pu s'exécuter, ou cet explorateur ne le prend pas en charge." + "tux-nojs": "Cet outil ne fonctionne pas sans JavaScript. JavaScript est désactivé ou n’a pas pu s’exécuter, ou bien votre explorateur ne le prend pas en charge.", + "specialpages-group-translation": "Traduction" } diff --git a/MLEB/Translate/i18n/core/frp.json b/MLEB/Translate/i18n/core/frp.json index d216f5bf..1d3b9089 100644 --- a/MLEB/Translate/i18n/core/frp.json +++ b/MLEB/Translate/i18n/core/frp.json @@ -50,31 +50,11 @@ "translate-use-suggestion": "Remplaciér la traduccion d’ora per cet’idê.", "translate-edit-nopermission": "Vos dête avêr la pèrmission de traduire los mèssâjos.", "translate-edit-askpermission": "Demandar la pèrmission", - "translate-magic-pagename": "Traduccion ètendua de MediaWiki", - "translate-magic-help": "Vos pouede traduire los aliâs de les pâges spèciâles, los mots magicos et los noms des èspâços de noms.\n\nLos aliâs de les pâges spèciâles et los mots magicos pôvont avêr un mouél de traduccions.\nLes traduccions sont sèparâyes per na virgula (,).\nLos èspâços de noms pôvont avêr ren que yona traduccion.\n\nTraduire l’èspâço de noms de discussion du projèt $1 talk pôt étre mâlésiê.\n$1 est remplaciê per lo nom du seto (per ègzemplo {{ns:project_talk}}).\nS’o est pas possiblo d’obtegnir n’èxprèssion valida dens voutra lengoua sen changiér lo nom du seto, vos volyéd veriér vers l’[[Support|assistance]].\n\nVos dête étre un traductor por encartar los changements.\nLos changements sont pas encartâs tant que vos éd pas clicâ sur lo boton « Encartar » d’avâl.", - "translate-magic-module": "Modulo :", - "translate-magic-submit": "Listar", - "translate-magic-cm-export": "Èxportar", - "translate-magic-nothing-to-export": "Y at ren a èxportar.", - "translate-magic-cm-to-be": "Vint", - "translate-magic-cm-current": "Ora", - "translate-magic-cm-original": "Originâl", - "translate-magic-cm-comment": "Comentèro :", - "translate-magic-cm-save": "Encartar", - "translate-magic-cm-updatedusing": "Betâ a jorn avouéc [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "L’encartâjo at pas reussi.", - "translate-magic-special": "Aliâs de les pâges spèciâles", - "translate-magic-words": "Mots magicos", - "translate-magic-namespace": "Noms des èspâços de noms", - "translate-magic-notsaved": "Voutron changement est pas étâ encartâ !", - "translate-magic-errors": "Volyéd corregiér {{PLURAL:$1|ceta fôta|cetes fôtes}} dedens les traduccions :", - "translate-magic-saved": "Voutron changement est étâ encartâ avouéc reusséta.", - "translate-checks-parameters": "{{PLURAL:$2|Ceti paramètro est pas empleyê|Cetos paramètros sont pas empleyês}} :\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Ceti paramètro est encognu|Cetos paramètros sont encognus}} :\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Ceti paramètro est pas empleyê|Cetos paramètros sont pas empleyês}} :\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Ceti paramètro est encognu|Cetos paramètros sont encognus}} :\n$1", "translate-checks-balance": "Y at un nombro mâl-par de parentès{{PLURAL:$2|a|es}} :\n$1", "translate-checks-links": "{{PLURAL:$2|Ceti lim est|Cetos $2 lims sont}} pas de sûr :\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Ceti lim est manquent|Cetos $2 lims sont manquents}} :\n$1", - "translate-checks-xhtml": "Volyéd corregiér {{PLURAL:$2|ceta balisa|cetes balises}} :\n$1", "translate-checks-plural": "La dèfinicion empleye {{PLURAL:}} mas pas la sina traduccion.", "translate-checks-pagename": "Èspâço de noms changiê dês la dèfinicion", "translate-checks-format": "Ceta traduccion siut pas la dèfinicion ou ben el at na sintaxa fôssa : $1", @@ -82,7 +62,6 @@ "translate-checks-parametersnotequal": "Lo nombro de paramètros est {{PLURAL:$1|$1}} ; cen devrêt étre {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 est fôx.", "translate-checks-fudforum-syntax": "Empleyéd $1 nan pas $2 dens ceti projèt.", - "translate-pref-nonewsletter": "Pas mè mandar les lètres de novèles per mèssageria èlèctronica", "translate-pref-editassistlang": "Lengoues d’assistance :", "prefs-translate": "Chouèx de traduccion", "translate-pref-editassistlang-help": "Lista de codes lengoues sèparâs per na virgula.\nLa traduccion d’un mèssâjo dens cetes lengoues est montrâye quand vos éte aprés lo traduire.\nLa lista de les lengoues per dèfôt dèpend de voutra lengoua.", @@ -209,7 +188,6 @@ "translate-import-err-no-such-file": "Lo fichiér $1 ègziste pas ou ben il est pas étâ importâ localament.", "translate-import-err-stale-group": "Lo groupo de mèssâjos uquint cél fichiér apartint ègziste pas.", "translate-import-err-no-headers": "Lo fichiér est pas un fichiér ''gettext'' bien formâ dens lo format atendu per l’èxtension ''Translate'' :\no est empossiblo de dètèrmenar lo groupo et la lengoua dês los en-tétes du fichiér.", - "translate-import-err-warnings": "Lo fichiér est pas bien formâ.\nAssurâd-vos que voutron changior enléve pas los champs « msgctxt ».\nDètalys : $1", "translate-js-summary": "Rèsumâ :", "translate-js-save": "Encartar", "translate-js-next": "Encartar et pués uvrir celi d’aprés", @@ -270,7 +248,7 @@ "tux-editor-need-more-help": "Fôta de més d’éde ?", "tux-editor-ask-help": "Demandar més d’enformacions", "tux-editor-tm-match": "$1 % de corrèspondance", - "tux-warnings-more": "{{PLURAL:$1|$1 de ples}}", - "tux-warnings-hide": "cachiér", + "tux-notices-more": "{{PLURAL:$1|$1 de ples}}", + "tux-notices-hide": "cachiér", "tux-editor-save-failed": "Falyita de l’encartâjo de la traduccion : $1" } diff --git a/MLEB/Translate/i18n/core/frr.json b/MLEB/Translate/i18n/core/frr.json index 403ab2ff..6106beb1 100644 --- a/MLEB/Translate/i18n/core/frr.json +++ b/MLEB/Translate/i18n/core/frr.json @@ -4,7 +4,6 @@ "Murma174" ] }, - "translate-pref-nonewsletter": "Schüür mi nian E-Mail-Neis", "translate-total": "Bööden", "translate-untranslated": "Bööden (tu auersaaten)", "translate-percentage-complete": "Klaar", diff --git a/MLEB/Translate/i18n/core/fur.json b/MLEB/Translate/i18n/core/fur.json index c9199df2..7695b2a6 100644 --- a/MLEB/Translate/i18n/core/fur.json +++ b/MLEB/Translate/i18n/core/fur.json @@ -40,21 +40,8 @@ "translate-edit-tmmatch": "corispuint al $1%", "translate-edit-nopermission": "Ti coventin i dirits di traduzion par tradusi i messaçs.", "translate-edit-askpermission": "Cjapiti il permès", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Recupere", - "translate-magic-cm-export": "Espuarte", - "translate-magic-nothing-to-export": "Nuie di espuartâ.", - "translate-magic-cm-current": "Atuâl", - "translate-magic-cm-original": "Origjinâl", - "translate-magic-cm-comment": "Coment:", - "translate-magic-cm-save": "Salve", - "translate-magic-cm-savefailed": "Salvament falît", - "translate-magic-namespace": "Nons dai spazis dai nons", - "translate-magic-notsaved": "Il to cambiament nol è stât salvât!", - "translate-magic-errors": "Par plasê comede {{PLURAL:$1|l'erôr|i erôrs}} ca sot tes traduzions:", - "translate-magic-saved": "Cambiaments salvâts.", - "translate-checks-parameters": "{{PLURAL:$2|Il parametri ca sot nol è doprât|I parametris ca sot no son doprâts}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Il parametri ca sot nol è cognossût|I parametris ca sot no son cognossûts}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Il parametri ca sot nol è doprât|I parametris ca sot no son doprâts}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Il parametri ca sot nol è cognossût|I parametris ca sot no son cognossûts}}:\n$1", "translate-checks-parametersnotequal": "Il numar di parametris al è {{PLURAL:$1|$1}}; al varès di jessi {{PLURAL:$2|$2}}.", "translate-pref-editassistlang": "Assistent lenghis:", "prefs-translate": "Opzions pe traduzion", @@ -183,8 +170,8 @@ "tux-editor-need-more-help": "Ti covential un jutori?", "tux-editor-ask-help": "Domande altris informazions", "tux-editor-tm-match": "corispuint al $1%", - "tux-warnings-more": "$1 {{PLURAL:$1|altri|altris}}", - "tux-warnings-hide": "plate", + "tux-notices-more": "$1 {{PLURAL:$1|altri|altris}}", + "tux-notices-hide": "plate", "tux-editor-save-failed": "Erôr salvant la traduzion: $1", "tux-editor-n-uses": "doprât $1 {{PLURAL:$1|volte|voltis}}", "tux-editor-message-desc-more": "Viôt di plui", @@ -197,8 +184,8 @@ "tux-proofread-action-tooltip": "Acete la traduzion", "tux-proofread-edit-label": "Cambie", "tux-editor-page-mode": "Pagjine", - "tux-editor-outdated-warning": "Cheste traduzion e podarès vê bisugne di jessi inzornade.", - "tux-editor-outdated-warning-diff-link": "Mostre lis difarencis", + "tux-editor-outdated-notice": "Cheste traduzion e podarès vê bisugne di jessi inzornade.", + "tux-editor-outdated-notice-diff-link": "Mostre lis difarencis", "tux-editor-doc-editor-placeholder": "Documentazion dal messaç", "tux-editor-doc-editor-save": "Salve la documentazion", "tux-editor-doc-editor-cancel": "Scancele", diff --git a/MLEB/Translate/i18n/core/fy.json b/MLEB/Translate/i18n/core/fy.json index 7ad40a00..70bfa6a8 100644 --- a/MLEB/Translate/i18n/core/fy.json +++ b/MLEB/Translate/i18n/core/fy.json @@ -2,64 +2,123 @@ "@metadata": { "authors": [ "Kening Aldgilles", - "Snakesteuben", + "PiefPafPier", + "Robin van der Vliet", "Robin0van0der0vliet", - "Robin van der Vliet" + "Snakesteuben" ] }, "translate": "Oersette", + "translate-desc": "[[Special:Translate|Bysûndere side]] foar it oersetten fan MediaWiki en mear", + "translate-taskui-export-to-file": "Eksportearje yn eigen formaat", + "translate-taskui-export-as-po": "Eksportearje foar offline oersetten", "translate-taction-translate": "Oersette", - "translate-taction-mstats": "Berjochtengroepstatistiken", + "translate-taction-proofread": "Hifkje", + "translate-taction-lstats": "Taalstatistiken", + "translate-taction-mstats": "Berjochtegroepstatistiken", + "translate-taction-export": "Eksportearje", + "translate-taction-disabled": "Dizze hanneling is útskeakele op dizze wiki.", + "translate-page-no-such-language": "De opjûne taal is ûnjildich.", + "translate-page-no-such-group": "De opjûne groep is ûnjildich.", + "translate-page-disabled": "Oersettings nei dizze taal yn dizze groep binne útskeakele.\nReden:\n\n$1", + "translate-language-disabled": "Oersetten nei dizze taal is útskeakele.", "translate-page-settings-legend": "Ynstellingen", "translate-page-group": "Groep", "translate-page-language": "Taal", + "translate-page-limit-option": "$1 {{PLURAL:$1|berjocht|berjochten}} de side", + "translate-submit": "Ophelje", "translate-page-navigation-legend": "Navigaasje", "translate-next": "Folgjende side", "translate-page-edit": "bewurkje", "translate-optional": "(opsjoneel)", - "translate-edit-title": "Bewurk \"$1\"", + "translate-edit-title": "\"$1\" bewurkje", "translate-edit-translation": "Oersetting", - "translate-magic-cm-export": "Eksportearje", - "translate-magic-cm-comment": "Oanmerking:", - "translate-magic-cm-save": "Bewarje", + "translate-pref-editassistlang": "Stypjende talen:", + "prefs-translate": "Oersetopsjes", + "translate-pref-editassistlang-help": "List fan taalkoades, skaat mei komma's.\nBerjochtoersettings yn dizze talen wurde werjûn, at jo mei oersetten dwaande binne.\nDe standert talelist wurdt bepaald troch jó taal.", + "right-translate-messagereview": "Oersettings hifkjen", + "translate-rcfilters-translations": "Oersettings", + "translate-rcfilters-translations-only-label": "Oersettings", + "translate-rcfilters-translations-only-desc": "Wizigings oan oersette siden.", + "translate-rcfilters-translations-filter-label": "Gjin oersettings", + "translate-rcfilters-translations-filter-desc": "Alle wizigings dy't gjin oersettings binne.", + "translate-rcfilters-translations-site-label": "Systeemberjochten", + "translate-rcfilters-translations-site-desc": "Oanpassings fan websteeberjochten yn de MediaWiki-nammeromte.", + "translate-rc-translation-filter": "Oersettings filterje", + "translate-rc-translation-filter-no": "Neat dwaan", + "translate-rc-translation-filter-only": "Allinne oersettings", + "translate-rc-translation-filter-filter": "Oersettings weilitte", + "translate-rc-translation-filter-site": "Allinne lokale systeemberjochten", "translate-stats-users": "Oersetters", "translate-statsf-scale-months": "Moannen", "translate-statsf-scale-weeks": "Wiken", "translate-statsf-scale-days": "Dagen", - "translate-statsf-scale-hours": "Oere", + "translate-statsf-scale-hours": "Oeren", + "translate-statsf-language": "List fan taalkoades, skaat mei komma's:", "translate-translations-messagename": "Namme:", "translate-translations-project": "Projekt:", + "languagestats": "Taalstatistiken", "translate-language-code": "Taalkoade", "translate-language-code-field-name": "Taalkoade:", "translate-language": "Taal", "translate-untranslated": "Unoerset", - "translate-ls-column-group": "Berjochtengroep", - "translate-mgs-pagename": "Berjochtengroepstatistiken", - "translate-mgs-group": "Berjochtengroep:", + "translate-percentage-fuzzy": "Ferâldere", + "translate-ls-column-group": "Berjochtegroep", + "translate-mgs-pagename": "Berjochtegroepstatistiken", + "translate-mgs-group": "Berjochtegroep:", "translate-mgs-column-language": "Taal", - "supportedlanguages-translators": "{{PLURAL:$2|Oersetter|Oersetters}}: $1", + "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Oersetter|Oersetster}}|Oersetters}}: $1", "translate-save": "Bewarje ($1)", + "translate-jssti-add": "Oan list taheakje", "translate-js-save": "Bewarje", + "translate-js-support": "Fraach stelle", "translate-gs-code": "Koade", "translate-gs-continent": "Kontinent", - "translate-documentation-language": "Berjochtbeskriuwing", + "translate-documentation-language": "Berjochtdokumintaasje", "translate-searchprofile": "Oersettings", - "translate-msggroupselector-projects": "Berjochtengroep", + "log-name-translationreview": "Oersettingshifkloch", + "logentry-translationreview-message": "$1 {{GENDER:$2|hat}} de oersetting $3 hifke", + "translate-msggroupselector-projects": "Berjochtegroep", + "translate-msggroupselector-search-placeholder": "Groepen sykje", + "translate-msggroupselector-search-all": "Alles", + "translate-msggroupselector-view-subprojects": "$1 {{PLURAL:$1|subgroep|subgroepen}}", "tux-languageselector": "Oersette nei", + "tux-tab-all": "Alles", "tux-tab-untranslated": "Unoerset", + "tux-tab-outdated": "Ferâldere", "tux-tab-translated": "Oerset", + "tux-tab-unproofread": "Net-hifke", "tux-edit": "Bewurkje", "tux-status-optional": "Opsjoneel", + "tux-status-fuzzy": "Ferâldere", "tux-status-translated": "Oerset", "tux-editor-save-button-label": "Oersetting bewarje", "tux-editor-cancel-button-label": "Annulearje", - "tux-warnings-more": "{{PLURAL:$1|$1 mear}}", + "tux-editor-proofread-button-label": "As hifke markearje", + "tux-notices-more": "{{PLURAL:$1|$1 mear}}", + "tux-editor-clear-translated": "Oerset ferbergje", + "tux-editor-proofreading-mode": "Hifkje", + "tux-editor-translate-mode": "List", + "tux-editor-proofreading-hide-own-translations": "Jo oersettings ferbergje", + "tux-editor-proofreading-show-own-translations": "Jo oersettings werjaan", + "tux-proofread-action-tooltip": "As hifke markearje", "tux-proofread-edit-label": "Bewurkje", "tux-editor-page-mode": "Side", "tux-editor-doc-editor-cancel": "Annulearje", + "tux-message-filter-placeholder": "List filterje", "tux-message-filter-optional-messages-label": "Opsjonele berjochten", + "tux-empty-no-outdated-messages": "Gjin ferâldere berjochten", + "tux-empty-nothing-to-proofread": "Neat te hifkjen", + "tux-empty-you-can-help-providing": "Jo kinne helpe troch nije oersettings te jaan", + "tux-empty-nothing-new-to-proofread": "Neat nijs om te hifkjen", + "tux-empty-you-can-review-already-proofread": "Jo kinne oersettings hifkje dy't oaren ek hifke hawwe.", + "tux-empty-list-other": "Neat oer te setten", + "tux-empty-list-other-guide": "Jo kinne helpe mei hifkjen fan 'e besteande oersettings", + "tux-empty-list-other-action": "Oersettings hifkje", + "tux-empty-list-other-link": "Alle berjochten werjaan", "tux-editor-close-tooltip": "Slute", "tux-editor-message-tools-history": "Skiednis", "tux-editor-message-tools-delete": "Fuortsmite", - "translate-statsbar-tooltip": "$1% oerset, $2% kontrolearre" + "translate-statsbar-tooltip": "$1% oerset, $2% hifke", + "translate-statsbar-tooltip-with-fuzzy": "$1% oerset, $2% hifke, $3% ferâldere" } diff --git a/MLEB/Translate/i18n/core/ga.json b/MLEB/Translate/i18n/core/ga.json index 607933ff..283bf471 100644 --- a/MLEB/Translate/i18n/core/ga.json +++ b/MLEB/Translate/i18n/core/ga.json @@ -2,20 +2,18 @@ "@metadata": { "authors": [ "Alison", + "BaRaN6161 TURK", "Moilleadóir", "පසිඳු කාවින්ද" ] }, + "translate-taction-translate": "Aistrigh", "translate-page-settings-legend": "Sainroghanna", "translate-page-group": "Ghrúpa", "translate-page-language": "Teanga", "translate-submit": "Faigh", "translate-page-navigation-legend": "Nascleanúint", "translate-edit-in-other-languages": "Teachtaireacht \"$1\" i dteangacha eile", - "translate-magic-cm-export": "Easportáil", - "translate-magic-cm-current": "reatha", - "translate-magic-cm-comment": "Nótaí tráchta:", - "translate-magic-cm-save": "Sábháil", "translate-statsf-scale-days": "Lae", "translate-statsf-scale-hours": "Uaire", "translate-statsf-submit": "Réamhamharc", diff --git a/MLEB/Translate/i18n/core/gcr.json b/MLEB/Translate/i18n/core/gcr.json index 47d6770a..1604022b 100644 --- a/MLEB/Translate/i18n/core/gcr.json +++ b/MLEB/Translate/i18n/core/gcr.json @@ -1,8 +1,13 @@ { "@metadata": { "authors": [ - "LeGuyanaisPure" + "LeGuyanaisPure", + "Léon973" ] }, - "translate-documentation-language": "Dokimantasyon di mésaj" + "translate-edit-translation": "Anmòrfrézaj", + "translate-edit-contribute": "kontribiyé", + "translate-manage-import-new": "Mésaj nòv $1", + "translate-documentation-language": "Dokimantasyon di mésaj", + "tux-editor-save-button-label": "Anréjistré anmòrfrézaj-a" } diff --git a/MLEB/Translate/i18n/core/gl.json b/MLEB/Translate/i18n/core/gl.json index 8de6a919..8ff1e310 100644 --- a/MLEB/Translate/i18n/core/gl.json +++ b/MLEB/Translate/i18n/core/gl.json @@ -2,13 +2,13 @@ "@metadata": { "authors": [ "Alma", + "Banjo", + "Elisardojm", + "Fitoschido", "Gallaecio", + "Iváns", "Toliño", - "Xosé", - "Fitoschido", - "Elisardojm", - "Banjo", - "Navhy" + "Xosé" ] }, "translate": "Traducir", @@ -62,31 +62,11 @@ "translate-export-invalid-format": "Por favor, especifique un formato válido.", "translate-export-not-supported": "A exportación de traducións non está soportada.", "translate-export-format-notsupported": "O grupo de mensaxes non soporta o formato de exportación especificado.", - "translate-magic-pagename": "Tradución estendida de MediaWiki", - "translate-magic-help": "Pode traducir os pseudónimos das páxinas especiais, as palabras máxicas e mais os nomes dos espazos de nomes.\n\nOs pseudónimos das páxinas especiais e as palabras máxicas poden ter numerosas traducións.\nAs traducións sepáranse mediante unha coma (\",\").\nOs nomes dos espazos de nomes só poden ter unha tradución.\n\nA tradución do espazo de nomes de conversa do proxecto, $1 talk, pode ser complicado.\n$1 substitúese polo nome do sitio (por exemplo, {{ns:project_talk}}).\nSe na súa lingua non resulta posible formar unha expresión válida sen mudar o nome do sitio, fáganolo saber na [[Support|páxina de axuda]].\n\nTen que estar no grupo dos tradutores para gardar os cambios.\nOs cambios non se gardan ata que prema no botón \"Gardar\" que hai ao final.", - "translate-magic-module": "Módulo:", - "translate-magic-submit": "Amosar", - "translate-magic-cm-export": "Exportar", - "translate-magic-nothing-to-export": "Non hai nada que exportar.", - "translate-magic-cm-to-be": "Será", - "translate-magic-cm-current": "Actual", - "translate-magic-cm-original": "Orixinal", - "translate-magic-cm-comment": "Comentario:", - "translate-magic-cm-save": "Gardar", - "translate-magic-cm-updatedusing": "Actualizado mediante [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Erro ao gardar", - "translate-magic-special": "Pseudónimos das páxinas especiais", - "translate-magic-words": "Palabras máxicas", - "translate-magic-namespace": "Nomes dos espazos de nomes", - "translate-magic-notsaved": "A súa edición non foi gardada!", - "translate-magic-errors": "Por favor, corrixa {{PLURAL:$1|o seguinte erro|os seguintes erros}} nas traducións:", - "translate-magic-saved": "Gardáronse as súas modificacións.", - "translate-checks-parameters": "{{PLURAL:$2|Non se emprega o seguinte parámetro|Non se empregan os seguintes parámetros}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Descoñécese o seguinte parámetro|Descoñécense os seguintes parámetros}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Non se emprega o seguinte parámetro|Non se empregan os seguintes parámetros}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Descoñécese o seguinte parámetro|Descoñécense os seguintes parámetros}}:\n$1", "translate-checks-balance": "Hai unha cantidade irregular de {{PLURAL:$2|parénteses|parénteses}}:\n$1", "translate-checks-links": "{{PLURAL:$2|A seguinte ligazón é problemática|As seguintes ligazóns son problemáticas}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Falta a seguinte ligazón|Faltan as seguintes $2 ligazóns}}:\n$1", - "translate-checks-xhtml": "Por favor, substitúa {{PLURAL:$2|a seguinte etiqueta pola correcta|as seguintes etiquetas polas correctas}}:\n$1", "translate-checks-plural": "A definición usa {{PLURAL:}}, pero a tradución non.", "translate-checks-plural-forms": "{{PLURAL:}} recibiu {{PLURAL:$1|unha forma|$1 formas}} de plural, pero unicamente {{PLURAL:$2|está soportada unha forma|están soportadas $2 formas}} (excluíndo as formas 0= e 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} ten formas de plural duplicadas ao final. {{PLURAL:$1|lapis|lapis}} debe escribirse así: {{PLURAL:$1|lapis}}.", @@ -96,7 +76,6 @@ "translate-checks-parametersnotequal": "O número de parámetros é {{PLURAL:$1|$1}}, cando {{PLURAL:$2|debe ser $2|deben ser $2}}.", "translate-checks-malformed": "\"$1\" ten un formato incorrecto.", "translate-checks-fudforum-syntax": "Use $1 no canto de $2 neste proxecto.", - "translate-pref-nonewsletter": "Non recibir boletíns no meu correo electrónico", "translate-pref-editassistlang": "Linguas axudantes:", "prefs-translate": "Opcións de tradución", "translate-pref-editassistlang-help": "Lista de códigos de linguas separados por comas.\nMóstranse as traducións dunha mensaxe nestas linguas cando a traduce.\nA lista de linguas por defecto depende da súa.", @@ -203,7 +182,7 @@ "translate-save": "Gardar ($1)", "translate-jssti-add": "Engadir á lista", "managemessagegroups": "Xestión dos grupos de mensaxes", - "translate-smg-notallowed": "Non lle está permitido efectuar esa acción.", + "translate-smg-notallowed": "Non che está permitido facer esta acción.", "translate-smg-nochanges": "Non hai cambio ningún que procesar.", "translate-smg-submit": "Enviar os cambios para procesalos", "translate-smg-submitted": "Actualizáronse as definicións das mensaxes. Os cambios estanse procesando en segundo plano.", @@ -236,7 +215,6 @@ "translate-import-err-no-such-file": "O ficheiro \"$1\" non existe ou non foi cargado localmente.", "translate-import-err-stale-group": "O grupo de mensaxes ao que pertence este ficheiro non existe.", "translate-import-err-no-headers": "O ficheiro non é un ficheiro Gettext ben formado co formato da extensión Translate:\nnon se poden determinar o grupo e a lingua a partir das cabeceiras do ficheiro.", - "translate-import-err-warnings": "O ficheiro non está ben formado.\nAsegúrese de que o seu editor non elimina campos msgctxt.\nDetalles: $1", "translate-js-summary": "Resumo:", "translate-js-save": "Gardar", "translate-js-next": "Gardar e abrir a seguinte", @@ -317,8 +295,8 @@ "tux-editor-need-more-help": "Necesita máis axuda?", "tux-editor-ask-help": "Pida máis información", "tux-editor-tm-match": "$1% de coincidencia", - "tux-warnings-more": "{{PLURAL:$1|$1 máis}}", - "tux-warnings-hide": "agochar", + "tux-notices-more": "{{PLURAL:$1|$1 máis}}", + "tux-notices-hide": "agochar", "tux-editor-save-failed": "Houbo un erro ao gardar a tradución: $1", "tux-editor-n-uses": "utilizada $1 {{PLURAL:$1|vez|veces}}", "tux-editor-message-desc-more": "Ollar máis", @@ -331,8 +309,8 @@ "tux-proofread-action-tooltip": "Marcar como revisada", "tux-proofread-edit-label": "Editar", "tux-editor-page-mode": "Páxina", - "tux-editor-outdated-warning": "Esta tradución pode necesitar unha actualización.", - "tux-editor-outdated-warning-diff-link": "Amosar as diferenzas", + "tux-editor-outdated-notice": "Esta tradución pode necesitar unha actualización.", + "tux-editor-outdated-notice-diff-link": "Amosar as diferenzas", "tux-editor-doc-editor-placeholder": "Documentación da mensaxe", "tux-editor-doc-editor-save": "Gardar a documentación", "tux-editor-doc-editor-cancel": "Cancelar", @@ -374,8 +352,6 @@ "translate-statsbar-tooltip": "$1% traducidas, $2% revisadas", "translate-statsbar-tooltip-with-fuzzy": "$1% traducidas, $2% revisadas, $3% desfasadas", "translate-search-more-groups-info": "$1 {{PLURAL:$1|grupo|grupos}} máis", - "translate-ulsdep-title": "Erro de configuración", - "translate-ulsdep-body": "A extensión de tradución depende da [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector extensión do selector universal de linguas].", "tux-session-expired": "Pechouse a súa sesión. Por favor, acceda ao sistema noutra lapela. Como alternativa, copie as traducións non gardadas, acceda ao sistema, regrese a esta páxina e insira as súas traducións de novo.", "tux-nojs": "Esta ferramenta non funciona sen JavaScript. Ou JavaScript está desactivado, ou non funcionou, ou este navegador non está soportado." } diff --git a/MLEB/Translate/i18n/core/glk.json b/MLEB/Translate/i18n/core/glk.json index 5a7d0fec..57e99c8d 100644 --- a/MLEB/Translate/i18n/core/glk.json +++ b/MLEB/Translate/i18n/core/glk.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "شیخ", - "V6rg" + "V6rg", + "شیخ" ] }, "translate-documentation-language": "پىغؤمˇ سندؤن" diff --git a/MLEB/Translate/i18n/core/gom-deva.json b/MLEB/Translate/i18n/core/gom-deva.json index 9d3124b4..8015987f 100644 --- a/MLEB/Translate/i18n/core/gom-deva.json +++ b/MLEB/Translate/i18n/core/gom-deva.json @@ -2,8 +2,10 @@ "@metadata": { "authors": [ "Konknni mogi 24", - "Supriya kankumbikar" + "Supriya kankumbikar", + "The Discoverer" ] }, - "translate-documentation-language": "संदेश दस्तावेजीकरण" + "translate-documentation-language": "संदेश दस्तावेजीकरण", + "translate-searchprofile": "भाशांतरां" } diff --git a/MLEB/Translate/i18n/core/gom-latn.json b/MLEB/Translate/i18n/core/gom-latn.json index 4a70db49..c1df191a 100644 --- a/MLEB/Translate/i18n/core/gom-latn.json +++ b/MLEB/Translate/i18n/core/gom-latn.json @@ -5,7 +5,16 @@ ] }, "translate-page-language": "Bhas", + "translate-rcfilters-translations": "Onnkaram", + "translate-rcfilters-translations-only-label": "Onnkaram", + "translate-rcfilters-translations-only-desc": "Bhaxantor kelolea panak bodol", + "translate-rcfilters-translations-filter-label": "Bhaxantoram nhoi", + "translate-rcfilters-translations-filter-desc": "Soglle bodol je bhaxantor nhoi", + "translate-rcfilters-translations-site-label": "Sayticheo sondex", + "translate-rcfilters-translations-site-desc": "Mediawiki nanv-thollant sondex khaxelem korop.", + "translations": "Soglleo onnkaram", "translate-language": "Bhas", "translate-mgs-column-language": "Bhas", - "translate-documentation-language": "Sondexache documentacao" + "translate-documentation-language": "Sondexache documentacao", + "translate-searchprofile": "Bhaxantoram" } diff --git a/MLEB/Translate/i18n/core/grc.json b/MLEB/Translate/i18n/core/grc.json index 4a4677ce..f2f02040 100644 --- a/MLEB/Translate/i18n/core/grc.json +++ b/MLEB/Translate/i18n/core/grc.json @@ -2,9 +2,9 @@ "@metadata": { "authors": [ "Crazymadlover", + "Gts-tg", "LeighvsOptimvsMaximvs", - "Omnipaedista", - "Gts-tg" + "Omnipaedista" ] }, "translate": "Μεταγλωττίζειν", @@ -21,14 +21,6 @@ "translate-ignored": "(ἠγνοημένη)", "translate-edit-contribute": "συμβάλλειν", "translate-edit-in-other-languages": "Τὸ μήνυμα \"$1\" ἀλλογλωσσιστί", - "translate-magic-module": "Ἄρθρον:", - "translate-magic-submit": "Φόρτισις", - "translate-magic-cm-export": "ἐξάγειν", - "translate-magic-cm-to-be": "Μέλλουσα", - "translate-magic-cm-current": "Τρέχουσα", - "translate-magic-cm-original": "Αὐθεντικόν", - "translate-magic-cm-comment": "Σχόλιον:", - "translate-magic-cm-save": "Γράφειν", "translate-rc-translation-filter-no": "Ἀπραξία", "translate-stats-edits": "Μεταγραφαί", "translate-stats-users": "Μεταγλωττισταί", diff --git a/MLEB/Translate/i18n/core/gsw.json b/MLEB/Translate/i18n/core/gsw.json index d4b633fe..d427a767 100644 --- a/MLEB/Translate/i18n/core/gsw.json +++ b/MLEB/Translate/i18n/core/gsw.json @@ -52,31 +52,11 @@ "translate-use-suggestion": "Di aktuäll Ibersetzig mit däm Vorschlag ersetze:", "translate-edit-nopermission": "Du bruchsch d Rächt zum Nochrichte ibersetze z chenne.", "translate-edit-askpermission": "E Aatrag uf d Rächt stelle", - "translate-magic-pagename": "Erwytereti MediaWiki-Ibersetzig", - "translate-magic-help": "Du chasch doo Alias fir Spezialsyte, magischi Werter un Namensruumnäme ibersetze.\n\nSpezialsyten un magischi Werter chenne mehreri Ibersetzige haa, si wäre jewyyls dur e Komma (,) trännt. Namensruumnäme derfe nume je ei Ibersetzig haa.\n\nIn dr Ibersetzig vun eme Namensruumnamen het $1 talk e spezielli Bedytig. $1 wird dur dr Projäktname ersetzt (zum Byspil {{ns:project_talk}}).\nWänn s in Dyynere Sproch nit megli isch, e grammatikalisch korrekti Form dervu z bilde ohni dr Projäktname z verändere, no loss es uns bitte uf [[Support]] wisse.\n\nDu muesch in dr Ibersetzer-Gruppe syy go Änderige z spychere.\nÄnderige wäre zerscht bim Klick uf dr Spychere-Chnopf gspycheret.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Hol", - "translate-magic-cm-export": "Export", - "translate-magic-nothing-to-export": "S het nyt, wu sott exportiert wäre.", - "translate-magic-cm-to-be": "Sott syy", - "translate-magic-cm-current": "Aktuäll", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Kommentar:", - "translate-magic-cm-save": "Spychere", - "translate-magic-cm-updatedusing": "Aktualisiert dur [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Spychere fählgschlaa", - "translate-magic-special": "Spezialsyte-Alias", - "translate-magic-words": "Magischi Werter", - "translate-magic-namespace": "Namensruum-Näme", - "translate-magic-notsaved": "Dyy Bearbeitig het nit chenne gspycheret wäre!", - "translate-magic-errors": "Bitte verbessere {{PLURAL:$1|dää Fähler|die Fähler}} in dr Ibersetzige:", - "translate-magic-saved": "Dyyni Änderige sin erfolgryych gspycheret wore.", "translate-checks-parameters": "{{PLURAL:$2|Dää Parameter wird|Die Parameter wäre}} nit bruucht: $1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Dää Parameter isch|Die Parameter sin}} nit bekannt: $1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Dää Parameter isch|Die Parameter sin}} nit bekannt: $1", "translate-checks-balance": "Die {{PLURAL:$2|Chlammeresetzig isch|Chlammersetzige sin}} nit uusgliche: $1", "translate-checks-links": "{{PLURAL:$2|De Link isch|Die Links sin}} problematisch: $1", "translate-checks-links-missing": "{{PLURAL:$2|De Link wird|Die $2 Links wäre}} vermisst:\n$1", - "translate-checks-xhtml": "Bitte ersetz {{PLURAL:$2|dää Tag|die Tag}} dur di korrekte: $1", "translate-checks-plural": "S Original bruucht {{PLURAL:}}, d Ibersetzig aber nit.", "translate-checks-plural-forms": "Zue {{PLURAL:}}{{PLURAL:$1|isch ei Form|sin $1 Forme}} aagee wore. S {{PLURAL:$2|wird aber nume ei Form|wäre aber nume $2 Forme}} unterstitzt (uuschließli 0= un 1=).", "translate-checks-plural-dupe": "Zue {{PLURAL:}} sin zwoo glychi Forme aagee wore. Bspw. sott aber {{PLURAL:$1|Milch|Milch}} as {{PLURAL:$1|Milch}} aagee wäre.", @@ -86,7 +66,6 @@ "translate-checks-parametersnotequal": "D Parameteraazahl isch {{PLURAL:$1|$1}}, sott aber {{PLURAL:$2|$2}} syy.", "translate-checks-malformed": "$1 isch formal nit giltig.", "translate-checks-fudforum-syntax": "Bitte bruch $1 statt $2 in däm Projäkt.", - "translate-pref-nonewsletter": "Schick mir kei E-Mail-Newsletter zue", "translate-pref-editassistlang": "Hilfssproche:", "prefs-translate": "Ibersetzigoptione", "translate-pref-editassistlang-help": "Dur Komma trännti Lischt vu Sprochcodes.\nIbersetzige vun ere Nochricht in däne Sproche wäre aazeigt, wänn du am Ibersetze bisch.\nD Standardlischt vu Sproche hangt vu Dyyre Sproch ab.", @@ -214,7 +193,6 @@ "translate-import-err-no-such-file": "D Datei $1 git s nit oder isch nit lokal uffeglade wore.", "translate-import-err-stale-group": "D Nochrichtegruppe, wu die Datei zuegordnet woren isch, git s nit.", "translate-import-err-no-headers": "D Datei isch kei Datei im Gettext-Format vu dr Erwyterig „Translate“:\nD Gruppen un Sproche hän nit us em Dateichopf chenne ermittlet wäre.", - "translate-import-err-warnings": "D Datei entspricht nit em erwartete Format.\nStell sicher, ass dr Editor kei msgctxt-Fälder usenimmt.\nDetail: $1", "translate-js-summary": "Zämmefassig:", "translate-js-save": "Spychere", "translate-js-next": "Spychere un di negscht ufmache", diff --git a/MLEB/Translate/i18n/core/gu.json b/MLEB/Translate/i18n/core/gu.json index a8117dd8..5f6e6501 100644 --- a/MLEB/Translate/i18n/core/gu.json +++ b/MLEB/Translate/i18n/core/gu.json @@ -4,8 +4,8 @@ "Ashok modhvadia", "Dsvyas", "KartikMistry", - "Vyom", - "NehalDaveND" + "NehalDaveND", + "Vyom" ] }, "translate": "ભાષાંતર", @@ -50,31 +50,13 @@ "translate-edit-askpermission": "પરવાનગી મેળવો", "exporttranslations": "ભાષાંતરો નિકાસ કરો", "translate-export-form-format": "શૈલી", - "translate-magic-pagename": "વિસ્તારિત મિડિયાવિકિ ભાષાંતર", - "translate-magic-module": "નમૂનો:", - "translate-magic-submit": "મેળવો", - "translate-magic-cm-export": "નિકાસ", - "translate-magic-nothing-to-export": "નિકાસ કરવા માટે કશું નથી.", - "translate-magic-cm-current": "વર્તમાન", - "translate-magic-cm-original": "મૂળ", - "translate-magic-cm-comment": "ટિપ્પણી:", - "translate-magic-cm-save": "સાચવો", - "translate-magic-cm-savefailed": "સાચવો નિષ્ફળ", - "translate-magic-special": "ખાસ પાનાં ઉપનામ", - "translate-magic-words": "જાદુઇ શબ્દો", - "translate-magic-namespace": "નામાવકાશ નામો", - "translate-magic-notsaved": "આપનું સંપાદન સચવાયું નથી!", - "translate-magic-errors": "કૃપા કરી અહીં આપેલ {{PLURAL:$1|ક્ષતિ|ક્ષતિઓ}}ને ભાષાંતરમાં સુધારો:", - "translate-magic-saved": "આપના ફેરફારો સચવાયા હતા.", - "translate-checks-parameters": "અહીં આપેલ {{PLURAL:$2|પરિમાણ|પરિમાણો}}નો ઉપયોગ કરાયો નથી:\n$1", - "translate-checks-parameters-unknown": "અહીં આપેલ {{PLURAL:$2|પરિમાણ|પરિમાણો}} અજાણ્યા છે:\n$1", + "translate-checks-parameters": "અહીં આપેલ {{PLURAL:$2|પરિમાણ|પરિમાણો}}નો ઉપયોગ કરાયો નથી:\n$1", + "translate-checks-parameters-unknown": "અહીં આપેલ {{PLURAL:$2|પરિમાણ|પરિમાણો}} અજાણ્યા છે:\n$1", "translate-checks-balance": "ત્યાં અસમાન સંખ્યાનાં {{PLURAL:$2|કૌંસ|કૌંસ}} છે:\n$1", "translate-checks-links": "આપેલ {{PLURAL:$2|કડી|$2 કડીઓ}} સંદિગ્ધ છે:\n$1", "translate-checks-links-missing": "આપેલ {{PLURAL:$2|કડી|$2 કડીઓ}} ગાયબ છે:\n$1", - "translate-checks-xhtml": "કૃપા કરી આપેલ {{PLURAL:$2|ટૈગ|ટૈગ્સ}}ને સાચી શાથે બદલો:\n$1", "translate-checks-plural": "વ્યાખ્યા વપરાઇ {{PLURAL:}} પરંતુ ભાષાંતર નહીં.", "translate-checks-format": "આ ભાષાંતર વ્યાખ્યાનું પાલન કરતું નથી કે અવૈધ વાક્યવિન્યાસ $1 ધરાવે છે:", - "translate-pref-nonewsletter": "મને ઇ-મેઇલ પત્રિકા મોકલશો નહીં", "translate-pref-editassistlang": "સહાયક ભાષાઓ:", "prefs-translate": "ભાષાંતર વિકલ્પો", "translate-pref-editassistlang-help": "અલ્પવિરામો વડે વિભાજીત ભાષાસંકેતોની યાદી.\n\nજ્યારે તમે ભાષાંતર કરતા હશો ત્યારે આ ભાષાઓમાં ભાષાંતરીત સંદેશાઓ જોવા મળશે.\n\nભાષાઓની ડિફોલ્ટ યાદી તમારી ભાષા પર આધારીત છે.", @@ -183,7 +165,7 @@ "tux-editor-confirm-button-label": "અનુવાદની ખાતરી કરો", "tux-editor-suggestions-title": "સૂચન", "tux-editor-in-other-languages": "અન્ય ભાષાઓમાં", - "tux-warnings-hide": "છુપાઓ", + "tux-notices-hide": "છુપાઓ", "tux-editor-clear-translated": "ભાષાંતર કરેલ છુપાવો", "tux-editor-proofreading-mode": "પરીક્ષણ", "tux-editor-translate-mode": "યાદી", @@ -191,7 +173,7 @@ "tux-editor-proofreading-show-own-translations": "તમારા ભાષાંતરો દર્શાવો", "tux-proofread-edit-label": "ફેરફાર કરો", "tux-editor-page-mode": "પાનું", - "tux-editor-outdated-warning-diff-link": "ભેદ દર્શાવો", + "tux-editor-outdated-notice-diff-link": "ભેદ દર્શાવો", "tux-editor-doc-editor-placeholder": "સંદેશનું દસ્તાવેજીકરણ", "tux-editor-doc-editor-save": "દસ્તાવેજીકરણ સાચવો", "tux-editor-doc-editor-cancel": "રદ કરો", diff --git a/MLEB/Translate/i18n/core/ha.json b/MLEB/Translate/i18n/core/ha.json index 767cae16..e9411e6d 100644 --- a/MLEB/Translate/i18n/core/ha.json +++ b/MLEB/Translate/i18n/core/ha.json @@ -1,9 +1,10 @@ { "@metadata": { "authors": [ - "Ammarpad" + "Ammarpad", + "BaRaN6161 TURK" ] }, - "translate-magic-cm-comment": "Bahasi:", + "translate-taction-translate": "Fassara", "supportedlanguages-summary": "Wannan shine jerin dukkan harsunan dake akwai a {{SITENAME}}, tare da wanda suke aikin fassara akan harshen." } diff --git a/MLEB/Translate/i18n/core/hak.json b/MLEB/Translate/i18n/core/hak.json index 7ae8a8dc..a639d8a4 100644 --- a/MLEB/Translate/i18n/core/hak.json +++ b/MLEB/Translate/i18n/core/hak.json @@ -2,9 +2,14 @@ "@metadata": { "authors": [ "Hakka", - "Jetlag" + "Jetlag", + "唐吉訶德的侍從" ] }, "translate-page-edit": "編寫", - "translate-documentation-language": "Sin-sit sot-mìn vùn-khien" + "translate-langstats-expand": "chán-khôi", + "translate-langstats-collapse": "chap-thia̍p", + "translate-documentation-language": "Sin-sit sot-mìn vùn-khien", + "tux-editor-expand-tooltip": "Chán-khôi", + "tux-editor-collapse-tooltip": "Chap-thia̍p" } diff --git a/MLEB/Translate/i18n/core/haw.json b/MLEB/Translate/i18n/core/haw.json index 39996d6f..f3e491ca 100644 --- a/MLEB/Translate/i18n/core/haw.json +++ b/MLEB/Translate/i18n/core/haw.json @@ -1,11 +1,13 @@ { "@metadata": { "authors": [ + "BaRaN6161 TURK", "Kalani", "Singularity" ] }, "translate": "Unuhi", + "translate-taction-translate": "Unuhi", "translate-page-language": "ʻŌlelo", "translate-page-navigation-legend": "Ka hoʻokele ʻana", "translate-page-edit": "e hoʻololi", diff --git a/MLEB/Translate/i18n/core/he.json b/MLEB/Translate/i18n/core/he.json index 1d4b3b06..67ae17ec 100644 --- a/MLEB/Translate/i18n/core/he.json +++ b/MLEB/Translate/i18n/core/he.json @@ -5,19 +5,21 @@ "Amire80", "Guycn1", "Guycn2", + "Inkbug", "Ofrahod", "Rotemliss", "Shirayuki", + "Steeve815", "YaronSh", + "דגש חזק", "חיים", "ערן", - "פוילישער", - "Inkbug" + "פוילישער" ] }, "translate": "תרגום", "translate-desc": "[[Special:Translate|דף מיוחד]] לתרגום מדיה־ויקי ומעבר לכך", - "translate-fuzzybot-desc": "זה חשבון מערכת מיוחד שמשמש את [https://www.mediawiki.org/wiki/Extension:Translate ההרחבה Translate] של מדיה־ויקי כדי לטפל בתרגומים.\nהחשבון הזה הוא חלק מתוכנת מדיה־ויקי ואינו בבעלות של שום משתמש.", + "translate-fuzzybot-desc": "זה חשבון מערכת מיוחד שמשמש את [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate ההרחבה Translate] של מדיה־ויקי כדי לטפל בתרגומים.\nהחשבון הזה הוא חלק מתוכנת מדיה־ויקי ואינו בבעלות של שום משתמש.", "translate-taskui-export-to-file": "לייצא בתסדיר ילידי", "translate-taskui-export-as-po": "לייצא לתרגום בלתי־מקוון", "translate-taction-translate": "תרגום", @@ -66,46 +68,42 @@ "translate-export-invalid-format": "נא לציין תסדיר תקין.", "translate-export-not-supported": "התכונה \"ייצוא תרגומים\" אינה נתמכת.", "translate-export-format-notsupported": "תסדיר הייצוא שצוין אינו נתמך על־ידי קבוצת ההודעות.", - "translate-magic-pagename": "תרגום מורחב של מדיה־ויקי", - "translate-magic-help": "באפשרותכם לתרגם כינויים לדפים מיוחדים, מילות קסם ושמות מרחבי שם.\n\nלשמות דפים מיוחדים ולמילות קסם יכולים להיות כמה תרגומים.\nיש להפריד את התרגומים באמצעות פסיק (,).\nלמרחבי שם יכול להיות תרגום אחד בלבד.\n\nתרגום מרחב השם של שיחת פרויקט $1 talk עשוי להיות מסובך.\nהמחרוזת $1 מוחלפת בשם האתר, למשל ({{ns:project_talk}}).\nאם בשפה שלכם קשה ליצור ביטוי תקין בצורה הזאת, נא להודיע לנו על כך בדף [[Support]].\n\nעליכם להיות בקבוצת מתרגמים כדי לשמור שינויים.\nהשינויים לא יישמרו עד שתלחצו על כפתור השמירה שלהלן.", - "translate-magic-module": "מידע לתרגום:", - "translate-magic-submit": "הצגה", - "translate-magic-cm-export": "יצוא", - "translate-magic-nothing-to-export": "אין מה לייצא.", - "translate-magic-cm-to-be": "עתידיים", - "translate-magic-cm-current": "נוכחיים", - "translate-magic-cm-original": "מקוריים", - "translate-magic-cm-comment": "סיבה:", - "translate-magic-cm-save": "שמירה", - "translate-magic-cm-updatedusing": "עודכן באמצעות [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "השמירה נכשלה", - "translate-magic-special": "כינויי דפים מיוחדים", - "translate-magic-words": "מילות קסם", - "translate-magic-namespace": "שמות מרחבי שם", - "translate-magic-notsaved": "עריכתכם לא נשמרה!", - "translate-magic-errors": "נא לתקן את {{PLURAL:$1|השגיאה הבאה|$1 השגיאות הבאות}} בתרגום:", - "translate-magic-saved": "השינויים שלך נשמרו.", - "translate-checks-parameters": "{{PLURAL:$2|הפרמטר הבא אינו|הפרמטרים הבאים אינם}} בשימוש:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|הפרמטר הבא אינו ידוע|הפרמטרים הבאים אינם ידועים}}:\n$1", + "translate-export-group-too-large": "קבוצת ההודעות שבחרה גדולה מדי. נא לבחור קבוצת הודעות עם פחות {{PLURAL:$1|מהודעה אחת|מ־$1 הודעות}} או ליצור קשר עם מנהל תרגום לייעוץ.", + "translate-checks-parameters": "{{PLURAL:$2|הפרמטר הבא אינו|הפרמטרים הבאים אינם}} בשימוש:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|הפרמטר הבא אינו ידוע|הפרמטרים הבאים אינם ידועים}}:\n$1", "translate-checks-balance": "מספר {{PLURAL:$2|הסוגריים|הסוגריים}} אינו מאוזן:\n$1", "translate-checks-links": "{{PLURAL:$2|הקישור הבא בעייתי|$2 הקישורים הבאים בעייתיים}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|הקישור הבא חסר|$2 הקישורים הבאים חסרים}}:\n$1", - "translate-checks-xhtml": "נא החליפו את {{PLURAL:$2|התג הבא בתג הנכון|התגים הבאים בתגים הנכונים}}:\n$1", "translate-checks-plural": "ההגדרה משתמשת ב־{{PLURAL:}}, אך התרגום אינו משתמש בו.", "translate-checks-plural-forms": "בביטוי {{PLURAL:}} {{PLURAL:$1|נכתבה צורה אחת|נכתבו $1 צורות}}, אבל {{PLURAL:$2|נתמכת רק צורה אחת|נתמכות $2 צורות}} (לא כולל צורות 0= וצורות 1=).", "translate-checks-plural-dupe": "בביטוי {{PLURAL:}} יש צורות שחוזרות על עצמן בסוף. במקום {{PLURAL:$1|קילומטר|קילומטר}} מומלץ לכתוב {{PLURAL:$1|קילומטר}}.", + "translate-checks-gettext-plural-missing": "בתרגום הזה צריך להיות {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "התרגום הזה אינו תומך ב־{{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} מקבל {{PLURAL:$1|צורת רבים אחת|$1 צורות רבים}} בדיוק. כרגע {{PLURAL:$2|ניתנה צורת קבים|ניתנו $2 צורות רבים}}.", + "translate-checks-smartformat-plural-missing": "בתרגום הזה צריך להיות plural במשתנה $1.", + "translate-checks-smartformat-plural-unsupported": "ההודעה הזאת לא תומכת ב־plural במשתנה $1.", + "translate-checks-smartformat-plural-count": "מספר שגוי של צורות plural בקטע $3. {{PLURAL:$1|צריכה להיות שם צורת plural אחת|צריכות להיות שם $1 צורות plural}}. כרגע יש {{PLURAL:$2|צורת plural אחת|$1 צורות plural}}.", + "translate-checks-unicode-plural-missing": "התרגום הזה חייב לכלול {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "ההודעה הזאת אינה תומכת ב־{{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "צורות רבים אמורות להיות מוגדרות בתור $1. התרגום הזה מכיל $2.", "translate-checks-pagename": "מרחבי שם ששונו מהגדרתם", "translate-checks-format": "תרגום זה אינו תואם להגדרות או שהוא בעל תחביר שגוי: $1", - "translate-checks-escape": "ייתכן שהחילופים הבאים נוצרו בשגגה: $1", + "translate-checks-escape": "ייתכן {{PLURAL:$2|שתו החילוף הבא נכתב|שתווי החילוף הבאים נכתבו}} בשגגה: $1. {{PLURAL:$4|תו חילוף התקין הוא|תווי החילוף התקינים הם}}: $3", "translate-checks-parametersnotequal": "{{PLURAL:$1|נמצא פרמטר אחד|נמצאו $1 פרמטרים}}; {{PLURAL:אמורים להיות $2|אמור להיות אחד}}.", "translate-checks-malformed": "$1 אינו תקין.", "translate-checks-fudforum-syntax": "השתמשו ב־$1 ולא ב־$2 בפרויקט הזה.", - "translate-pref-nonewsletter": "אל תשלחו אליי חדשות תקופתיות בדואר אלקטרוני", + "translate-checks-newline-missing-start": "{{PLURAL:$1|חסר תו שורה חדשה אחד|חסרים $1 תווי שורה חדשה}} בתחילת התרגום.", + "translate-checks-newline-missing-end": "{{PLURAL:$1|חסר תו שורה חדשה אחד|חסרים $1 תווי שורה חדשה}} בסוף התרגום.", + "translate-checks-newline-extra-start": "{{PLURAL:$1|יש תו שורה חדשה אחד מיותר|יש $1 תווי שורה חדשה מיותרים}} בתחילת התרגום.", + "translate-checks-newline-extra-end": "{{PLURAL:$1|יש תו שורה חדשה אחד מיותר|יש $1 תווי שורה חדשה מיותרים}} בסוף התרגום.", + "translate-checks-value-not-present": "התרגום צריך להיות שווה {{PLURAL:$1|ל־$1|לאחד מהערכים הבאים: $1}}.", + "translate-checks-replacement": "להשתמש ב\"$2\" במקום ב\"$1\".", "translate-pref-editassistlang": "שפות מסייעות:", "prefs-translate": "אפשרויות תרגום", "translate-pref-editassistlang-help": "רשימת קודים של שפות, כאשר פסיקים מפרידים בין שפה לשפה.\nבעת תרגום של הודעה, יוצגו התרגומים של ההודעה לשפות העזר הללו.\nשפת העזר המשמשת כברירת מחדל תלויה בשפת הממשק שלך.", "translate-pref-editassistlang-bad": "קוד שפה שגוי ברשימה:\n$1.", "right-translate": "עריכה באמצעות ממשק התרגום", + "action-translate": "לערוך באמצעות ממשק תרגום", "right-translate-manage": "ניהול קבוצות הודעה", "action-translate-manage": "לנהל קבוצות הודעה", "right-translate-import": "ייבוא תרגומים לא מקוונים", @@ -205,17 +203,30 @@ "supportedlanguages-recenttranslations": "תרגומים אחרונים", "supportedlanguages-count": "{{PLURAL:$1|שפה אחת|$1 שפות}} בסך הכול.", "supportedlanguages-activity": "$1: {{PLURAL:$2|עריכה אחת|$2 עריכות}} - עריכה אחרונה לפני {{PLURAL:$3|יום אחד|$3 ימים}}", + "translate-supportedlanguages-cached": "המידע הזה נשמר במטמון לפני $1.", "abusefilter-edit-builder-vars-translate-source-text": "טקסט המקור של יחידת התרגום", - "translate-save": "שמירה ($1)", + "abusefilter-edit-builder-vars-translate-target-language": "שפת היעד לתרגום", + "translate-save": "פרסום ($1)", "translate-jssti-add": "הוספה לרשימה", "managemessagegroups": "ניהול קבוצות הודעות", "translate-smg-notallowed": "אין לך הרשאה לבצע פעולה זו.", "translate-smg-nochanges": "אין עוד שינויים שצריך לעבד.", "translate-smg-submit": "שליחת שינויים לעיבוד", "translate-smg-submitted": "הגדרות ההודעות עודכנו. השינויים מעובדים ברקע.", + "translate-smg-submitted-with-failure": "עדכון {{PLURAL:$1|הגדרת|הגדרות}} הודעה נכשל עבור {{PLURAL:$1|הקבוצה הבאה|הקבוצות הבאות}} - $2. $3", + "translate-smg-submitted-others-processing": "הגדרות הודעה עבור קבוצות אחרות מעובדות ברקע.", "translate-smg-more": "יהיו שינויים נוספים שיהיה צורך לעבד אחרי שליחת השינויים האלה.", "translate-smg-left": "תוכן ההודעה בוויקי", "translate-smg-right": "שינויים נכנסים", + "translate-smg-rename-select": "בחירה", + "translate-smg-rename-cancel": "ביטול", + "translate-smg-rename-search": "חיפוש הודעת מתאימה...", + "translate-smg-rename-select-err": "נא לבחור לאיזו הודעה לשנות את השם", + "translate-smg-rename-no-msg": "לא נמצאו הודעות.", + "translate-smg-rename-new": "להוסיף חדשה...", + "translate-smg-rename-rename": "להוסיף בתור שינוי שם של...", + "translate-smg-rename-dialog-title": "להציג שינוי שם מתאים עבור $1", + "translate-smg-changeset-modified": "ערכת השינויים שונתה על־ידי משתמש או תהליך אחר. השינויים שלך אינם יכולים להתפרסם כי הם יכולים לדרוס את השינויים שלהם. נא לרענן את הדף כדי לראות את השינויים האחרונים.", "translate-manage-import-diff": "הודעה $1 | פעולות: $2", "translate-manage-import-new": "הודעה חדשה $1", "translate-manage-import-deleted": "הודעה שנמחקה $1", @@ -223,11 +234,15 @@ "translate-manage-action-conflict": "לייבא ולטשטש", "translate-manage-action-ignore": "להתעלם", "translate-manage-action-fuzzy": "לייבא ולטשטש תרגומים", + "translate-manage-action-rename-fuzzy": "לשנות את השם ולסמן את התרגומים בתור לא עדכניים", + "translate-manage-action-rename": "שינוי שם", + "translate-manage-action-ignore-change": "להתעלם משינוי התרגום", "translate-manage-nochanges": "אין שינויים להגדרות ההודעות עבור קבוצה זו.", "translate-manage-nochanges-other": "אין שינויים עבור השפה הזאת.\nהשתמשו בקישור למטה כדי לחוזר לתצוגת פרטי קבוצה.", "translate-manage-inconsistent": "התגלתה חוסר עקביות בבקשה.\nנא לבדוק את השינויים ולנסות שוב.\nפרטים: $1", "translate-manage-toolong": "זמן העיבוד המרבי של {{PLURAL:$1|שנייה אחת|$1 שניות}} תם.\nנא לשלוח מחדש את הטופס כדי להמשיך בעיבודו.", "translate-manage-import-summary": "יבוא גרסה חדשה ממקור חיצוני", + "translate-manage-import-rename-summary": "השם שוּנה במקור חיצוני", "translate-manage-conflict-summary": "מייבא גרסה חדשה ממקור חיצוני.\nנא לבדוק.", "translate-manage-submit": "הפעלה", "translate-manage-intro-other": "להלן רשימה של שינויי תרגום ב$1.\nנא לסקור את השינויים ולבחור את הפעולה שברצונך לעשות עבור כל תרגום.\nהתעלמות מהשינויים תגרום לכך שהם יידרסו בייצוא הבא.", @@ -242,15 +257,14 @@ "translate-import-err-no-such-file": "הקובץ $1 אינו קיים או שהוא לא הועלה באופן מקומי.", "translate-import-err-stale-group": "קבוצת ההודעות שהקובץ הזה שייך אליה אינה קיימת.", "translate-import-err-no-headers": "הקובץ זה אינו קובץ Gettext תקין בתסדיר שתואם להרחבת התרגום:\nלא ניתן לקבוע אץ הקבוצה ואת השפה מכותרות הקובץ.", - "translate-import-err-warnings": "הקובץ אינו תקין.\nאנא ודאו כי העורך שלכם אינו מסיר את שדות ה־msgctxt.\nפרטים: $1", "translate-js-summary": "תקציר:", - "translate-js-save": "שמירה", - "translate-js-next": "לשמור ולפתוח את ההודעה הבאה", + "translate-js-save": "פרסום", + "translate-js-next": "לפרסם ולפתוח את ההודעה הבאה", "translate-js-skip": "מעבר להודעה הבאה", "translate-js-history": "היסטוריית התרגום", "translate-js-support": "לשאול שאלה", "translate-js-support-title": "לבקש עזרה אם אין מספיק מידע לתרגום נכון של ההודעה הזאת.", - "translate-js-support-unsaved-warning": "יש לכם תרגומים לא שמורים.", + "translate-js-support-unsaved-warning": "יש לך תרגומים שלא התפרסמו.", "translate-gs-pos": "מקום", "translate-gs-code": "קוד", "translate-gs-continent": "יבשת", @@ -292,7 +306,7 @@ "translate-msggroupselector-search-all": "הכול", "translate-msggroupselector-search-recent": "אחרונות", "translate-msggroupselector-view-subprojects": "הצגת {{PLURAL:$1|תת־מיזם אחד|$1 תת־מיזמים}}", - "tux-languageselector": "שפה היעד לתרגום:", + "tux-languageselector": "שפת היעד לתרגום:", "tux-tab-all": "הכול", "tux-tab-untranslated": "לא מתורגמות", "tux-tab-outdated": "לא עדכניות", @@ -303,14 +317,14 @@ "tux-status-fuzzy": "לא מעודכנת", "tux-status-proofread": "נסקרה", "tux-status-translated": "מתורגמת", - "tux-status-saving": "מתבצעת שמירה...", - "tux-status-unsaved": "לא שמורה", - "tux-save-unknown-error": "אירעה שגיאה בלתי ידועה.", + "tux-status-saving": "מתפרסם...", + "tux-status-unsaved": "לא התפרסמה", + "tux-save-unknown-error": "אירעה שגיאה בלתי־ידועה.", "tux-editor-placeholder": "התרגום שלך", "tux-editor-editsummary-placeholder": "תקציר עריכה (לא חובה)", "tux-editor-paste-original-button-label": "הדבקת טקסט המקור", "tux-editor-discard-changes-button-label": "ביטול שינויים", - "tux-editor-save-button-label": "שמירת תרגום", + "tux-editor-save-button-label": "פרסום תרגום", "tux-editor-skip-button-label": "מעבר להודעה הבאה", "tux-editor-cancel-button-label": "ביטול", "tux-editor-confirm-button-label": "אישור תרגום", @@ -323,9 +337,9 @@ "tux-editor-need-more-help": "דרושה עוד עזרה?", "tux-editor-ask-help": "בקשת מידע נוסף", "tux-editor-tm-match": "התאמה של $1%", - "tux-warnings-more": "{{PLURAL:$1|עוד $1}}", - "tux-warnings-hide": "להסתיר", - "tux-editor-save-failed": "שמירת התרגום נכשלה: $1", + "tux-notices-more": "{{PLURAL:$1|עוד $1}}", + "tux-notices-hide": "להסתיר", + "tux-editor-save-failed": "פרסום התרגום נכשל: $1", "tux-editor-n-uses": "שימש {{PLURAL:$1|פעם אחת|פעמיים|$1 פעמים}}", "tux-editor-message-desc-more": "להציג עוד", "tux-editor-message-desc-less": "להציג פחות", @@ -337,10 +351,10 @@ "tux-proofread-action-tooltip": "לסמן שההודעה נסקרה", "tux-proofread-edit-label": "עריכה", "tux-editor-page-mode": "דף", - "tux-editor-outdated-warning": "ייתכן שצריך לעדכן את התרגום הזה.", - "tux-editor-outdated-warning-diff-link": "הצגת שינויים", + "tux-editor-outdated-notice": "ייתכן שצריך לעדכן את התרגום הזה.", + "tux-editor-outdated-notice-diff-link": "הצגת שינויים", "tux-editor-doc-editor-placeholder": "תיעוד הודעה", - "tux-editor-doc-editor-save": "שמירת התיעוד", + "tux-editor-doc-editor-save": "פרסום התיעוד", "tux-editor-doc-editor-cancel": "ביטול", "tux-messagetable-more-messages": "עוד {{PLURAL:$1|הודעה אחת|$1 הודעות}}", "tux-messagetable-loading-messages": "טעינת {{PLURAL:$1|הודעה|הודעות}}...", @@ -376,12 +390,13 @@ "tux-editor-message-tools-translations": "כל התרגומים", "tux-editor-message-tools-linktothis": "קישור להודעה הזאת", "tux-editor-loading": "טעינה...", + "tux-editor-loading-failed": "טעינת עזרי תרגום לא עבדה: $1", "translate-search-more-languages-info": "עוד {{PLURAL:$1|שפה אחת|$1 שפות}}", "translate-statsbar-tooltip": "$1% תורגם, $2% נסקר", "translate-statsbar-tooltip-with-fuzzy": "$1% תורגם, $2% נסקר, $3% דורש סקירה", "translate-search-more-groups-info": "עוד {{PLURAL:$1|קבוצה אחת|$1 קבוצות}}", - "translate-ulsdep-title": "שגיאת הגדרות", - "translate-ulsdep-body": "ההרחבה Translate משתמשת ב[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector הרחבה Universal Language Selector].", + "translate-syntax-error": "התרגום מכיל שגיאות תחביר", "tux-session-expired": "אינך נמצא בחשבון עוד. נא להיכנס בלשונית אחרת. לחלופין, יש להעתיק תרגומים שלא נשמרו, להיכנס, לחזור לדף הזה, ולהזין שוב את התרגומים שלך.", - "tux-nojs": "הדף הזה דורש שימוש ב־JavaScript. התמיכה ב־JavaScript כבויה, לא פעלה, או שהדפדפן הזה אינו נתמך." + "tux-nojs": "הדף הזה דורש שימוש ב־JavaScript. התמיכה ב־JavaScript כבויה, לא פעלה, או שהדפדפן הזה אינו נתמך.", + "specialpages-group-translation": "תרגום" } diff --git a/MLEB/Translate/i18n/core/hi.json b/MLEB/Translate/i18n/core/hi.json index e4607bfd..8ee92909 100644 --- a/MLEB/Translate/i18n/core/hi.json +++ b/MLEB/Translate/i18n/core/hi.json @@ -7,10 +7,11 @@ "Karthi.dr", "Kaustubh", "Knightsofdawn", - "Siddhartha Ghai", "NehalDaveND", - "संजीव कुमार", - "Sfic" + "Nilesh shukla", + "Sfic", + "Siddhartha Ghai", + "संजीव कुमार" ] }, "translate": "अनुवाद", @@ -44,16 +45,9 @@ "translate-edit-tmmatch": "$1% मैच", "translate-edit-askpermission": "अनुमति लें", "translate-export-form-format": "प्रारूप", - "translate-magic-pagename": "एक्स्टेंडेड मीडियाविकि अनुवाद", - "translate-magic-module": "मोड्यूल:", - "translate-magic-submit": "खोजें", - "translate-magic-cm-export": "निर्यात", - "translate-magic-cm-current": "वर्तमान", - "translate-magic-cm-original": "मूल", - "translate-magic-cm-comment": "टिप्पणी:", - "translate-magic-cm-save": "संजोयें", - "translate-magic-words": "जादूई शब्द", - "translate-magic-namespace": "नामस्थान नाम", + "translate-checks-gettext-plural-missing": "इस अनुवाद में {{PLURAL:GETTEXT|}} होना चाहिए।", + "translate-checks-gettext-plural-unsupported": "यह संदेश {{PLURAL:GETTEXT|}} का समर्थन नहीं करता है।", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} बिलकुल $1 {{PLURAL:$1|plural form|plural forms}} स्वीकार करता है। वर्तमान में $2 {{PLURAL:$2|plural form is|plural forms are}} दिए गए हैं।", "translate-pref-editassistlang": "सहायक भाषा:", "prefs-translate": "अनुवाद विकल्प", "right-translate-messagereview": "अनुवाद समीक्षा", @@ -185,7 +179,7 @@ "tux-editor-add-desc": "प्रलेखन जोड़े", "tux-editor-suggestions-title": "सुझाव", "tux-editor-in-other-languages": "अन्य भाषा में", - "tux-warnings-hide": "छुपाएँ", + "tux-notices-hide": "छुपाएँ", "tux-editor-message-desc-more": "अधिक देखें", "tux-editor-proofreading-mode": "पुनरीक्षण", "tux-editor-translate-mode": "सूची", diff --git a/MLEB/Translate/i18n/core/hil.json b/MLEB/Translate/i18n/core/hil.json index d5385f98..cc6a1a4b 100644 --- a/MLEB/Translate/i18n/core/hil.json +++ b/MLEB/Translate/i18n/core/hil.json @@ -1,8 +1,10 @@ { "@metadata": { "authors": [ - "Jose77" + "Jose77", + "Pare Mo" ] }, - "translate-page-navigation-legend": "Nabigayson" + "translate-page-navigation-legend": "Nabigayson", + "translate-documentation-language": "Dokumentasyon sg mga pahatod" } diff --git a/MLEB/Translate/i18n/core/hr.json b/MLEB/Translate/i18n/core/hr.json index 259d20cd..e63a4ca0 100644 --- a/MLEB/Translate/i18n/core/hr.json +++ b/MLEB/Translate/i18n/core/hr.json @@ -1,19 +1,20 @@ { "@metadata": { "authors": [ + "Bugoslav", "Dalibor Bosits", "Dnik", "Ex13", "MaGa", + "Neptune, the Mystic", "Roberta F.", "SpeedyGonsales", - "Tivek", - "Bugoslav" + "Tivek" ] }, "translate": "Prevedi", "translate-desc": "[[Special:Translate|Posebna stranica]] za prevođenje MediaWiki i izvan", - "translate-fuzzybot-desc": "Ovo je poseban sustavski račun koji se rabi u [https://www.mediawiki.org/wiki/Extension:Translate proširenju »Prevođenje« (engl. Translate)] MediaWikija, koje se upotrebljava za održavanje prijevoda. Ovaj je račun dio softvera MediaWiki i nije u vlasništvu ijednoga suradnika.", + "translate-fuzzybot-desc": "Ovo je poseban sustavski račun koji se rabi u [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate proširenju »Prevođenje« (engl. Translate)] MediaWikija, koje se upotrebljava za održavanje prijevoda. Ovaj je račun dio softvera MediaWiki i nije u vlasništvu ijednoga suradnika.", "translate-taskui-export-to-file": "Izvoz u izvornom obliku", "translate-taskui-export-as-po": "Izvoz za ''off-line'' prijevod", "translate-taction-translate": "Prevođenje", @@ -62,33 +63,17 @@ "translate-export-invalid-format": "Navedite valjani oblik.", "translate-export-not-supported": "Izvoz prijevoda nije podržan.", "translate-export-format-notsupported": "Skupina poruka ne podržava navedeni izvozni format.", - "translate-magic-pagename": "Prošireni MediaWiki prijevod", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Dohvati", - "translate-magic-cm-export": "Izvezi", - "translate-magic-nothing-to-export": "Nema ništa za izvoz.", - "translate-magic-cm-to-be": "Budući", - "translate-magic-cm-current": "Trenutni", - "translate-magic-cm-original": "Izvornik", - "translate-magic-cm-comment": "Komentar:", - "translate-magic-cm-save": "Spremi", - "translate-magic-cm-updatedusing": "Osvježeno uporabom [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] stranice", - "translate-magic-cm-savefailed": "Snimanje nije uspjelo", - "translate-magic-special": "Alijasi posebnih stranica", - "translate-magic-words": "Magične riječi (stringovi)", - "translate-magic-namespace": "Imena imenskih prostora", - "translate-magic-notsaved": "Vaše uređivanje nije spremljeno!", - "translate-magic-errors": "Ispravite {{PLURAL:$1|sljedeću grešku|sljedeće greške}} u prijevodima:", - "translate-magic-saved": "Vaše izmjene su spremljene.", - "translate-checks-parameters": "Sljedeći {{PLURAL:$2|parametar se ne koristi|parametri se ne koriste}}:\n$1", - "translate-checks-parameters-unknown": "Sljedeći {{PLURAL:$2|parametar je nepoznat|parametri su nepoznati}}:\n$1", + "translate-checks-parameters": "Sljedeći {{PLURAL:$2|parametar se ne koristi|parametri se ne koriste}}:\n$1", + "translate-checks-parameters-unknown": "Sljedeći {{PLURAL:$2|parametar je nepoznat|parametri su nepoznati}}:\n$1", "translate-checks-balance": "Nejednak broj {{PLURAL:$2|zagrada|zagrada}}:\n$1", "translate-checks-links": "{{PLURAL:$2|Sljedeća je poveznica problematična|$2 sljedeće poveznice problematične su|$2 sljedećih poveznica su problematične}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Nedostaje sljedeća poveznica|$2 Nedostaju sljedeće poveznice}}:\n$1", - "translate-checks-xhtml": "Molimo, zamijenite {{PLURAL:$2|oznaku točnom|sljedeće oznake točnim}}:\n$1", "translate-checks-plural": "Definicija koristi {{PLURAL:}}, ali prijevod ne.", + "translate-checks-plural-forms": "U {{PLURAL:}} {{PLURAL:$1|je upisan jedan oblik|su upisana $1 oblika|je upisano $1 oblika}}, ali on {{PLURAL:$2|podržava samo jedan|podržava samo $2}} (izuzimajući oblike 0= i 1=).", + "translate-checks-plural-dupe": "{{PLURAL:}} ima duplicirane oblike na kraju. {{PLURAL:$1|škare|škare}} trebalo bi pisati kao {{PLURAL:$1|škare}}.", + "translate-checks-gettext-plural-missing": "Ovaj prijevod mora sadržavati {{PLURAL:GETTEXT|}}.", "translate-checks-fudforum-syntax": "Upotrijebite nowiki>$1 umjesto $2 u ovom projektu.", - "translate-pref-nonewsletter": "Ne šalji mi e-poštom obavijesti translatewiki.net projekta", + "translate-checks-replacement": "Upotrebljavaj $2 umjesto $1.", "translate-pref-editassistlang": "Pomoćni jezici:", "prefs-translate": "Mogućnosti prijevoda", "translate-pref-editassistlang-help": "Popis jezičnih kodova odijeljen zarezima.\nPrijevod poruke na tim jezicima bit će prikazani dok prevodite.\nZadani popis jezika ovisi o vašem jeziku.", @@ -107,6 +92,8 @@ "translate-rcfilters-translations-only-desc": "Promjene stranica s prijevodima.", "translate-rcfilters-translations-filter-label": "Nisu prijevodi", "translate-rcfilters-translations-filter-desc": "Sva uređivanja koja nisu prijevodi.", + "translate-rcfilters-translations-site-label": "Poruke vezane uz prevođenje", + "translate-rcfilters-translations-site-desc": "Prilagođavanja poruka mrežnoga sjedišta u imenskom prostoru za prevođenje poruka.", "translate-rc-translation-filter": "Filtriraj prijevode:", "translate-rc-translation-filter-no": "Ne filtriraj ništa", "translate-rc-translation-filter-only": "Prikaži samo prijevode", @@ -144,7 +131,7 @@ "translations-summary": "Unesite naziv poruke da biste vidjeli sve prijevode.", "translate-translations-no-message": "\"$1\" nije poruka koja se prevodi", "translate-translations-none": "Ne postoje prijevodi za \"$1\"", - "translate-translations-count": "Pronađeno prijevoda: {{PLURAL:$1|jedan|$1}}.", + "translate-translations-count": "{{PLURAL:$1|Pronađen $1 prijevod|Pronađena $1 prijevoda|Pronađeno $1 prijevoda}}.", "translate-translations-fieldset-title": "Poruka", "translate-translations-messagename": "Ime:", "translate-translations-project": "Projekt:", @@ -155,6 +142,7 @@ "messagegroupstats-summary": "Ova stranica prikazuje statistike grupa poruka.", "languagestats-stats-for": "Statistika prijevoda za $1 ($2).", "languagestats-recenttranslations": "nedavni prijevodi", + "translate-langstats-incomplete": "Neke su statistike na ovoj stranici nepotpune. Da biste dobili više statistika, molimo ponovno učitajte stranicu.", "translate-langstats-expand": "proširi", "translate-langstats-collapse": "sažmi", "translate-langstats-expandall": "proširi sve", @@ -179,27 +167,40 @@ "translate-mgs-noempty": "Ne prikazuj jezike koji uopće nemaju prijevode", "translate-mgs-submit": "Prikaži statistiku", "translate-mgs-column-language": "Jezik", - "translate-mgs-totals": "All $1 {{PLURAL:$1|Jedan jezik|Oba jezika zajedno|Svih $1 jezika zajedno}}", + "translate-mgs-totals": "{{PLURAL:$1|1=Jedan jezik|2=Oba jezika zajedno|Ukupno $1 jezik zajedno|Svih $1 jezika zajedno}}", "translate-mgs-invalid-group": "Navedena skupina $1 ne postoji.", "translate-mgs-nothing": "Nema se što prikazati za zahtijevane statistike.", "supportedlanguages": "Podržani jezici", "supportedlanguages-summary": "Ova stranica prikazuje popis svih podržanih jezika na ovome wikiju, {{SITENAME}}, zajedno s imenima prevoditelja koji rade na tim jezicima.\nVeličina suradničkih imena prevoditelja, tj. veličina slova, ovisi od toga koliko je tko poruka preveo.\nBoja podcrtavanja ovdje označuje kolika je aktivnost prevoditeljā – prevoditeljicā.", "supportedlanguages-colorlegend": "Legenda za boju: Posljednji prijevod načinjen prije $1 dana.", + "supportedlanguages-sqlite-error": "SQLite nije u statusu podržanoga softvera", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Prevoditelj}}|Prevoditelji}}: $1", "supportedlanguages-recenttranslations": "nedavni prijevodi", "supportedlanguages-count": "Ukupno $1 {{PLURAL:$1|jezik|jezika}}.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|uređivanje|uređivanja}} – posljednje uređivanje prije $3 {{PLURAL:$3|dan|dana}}", + "translate-supportedlanguages-cached": "Ova informacija nalazila se u međuspremniku prije: $1.", "abusefilter-edit-builder-vars-translate-source-text": "Izvorni tekst prijevodne jedinice", - "translate-save": "Sačuvaj ($1)", + "abusefilter-edit-builder-vars-translate-target-language": "Željeni jezik za prevođenje", + "translate-save": "Objavi ($1)", "translate-jssti-add": "Dodaj na popis", "managemessagegroups": "Upravljanje skupinom poruka", "translate-smg-notallowed": "Nije Vam dopušteno izvršiti ovu radnju.", "translate-smg-nochanges": "Nema izmjena koje treba obraditi.", "translate-smg-submit": "Proslijedi izmjene na obradbu", "translate-smg-submitted": "Definicije poruka su ažurirane. Izmjene se obrađuju u pozadini.", + "translate-smg-submitted-with-failure": "Ažuriranje {{PLURAL:$1|poruke s definicijom definition|poruka s definicijama}} nije uspjelo za {{PLURAL:$1|sljedeću skupinu|sljedeće skupine|sljedećih skupina}} — $2. $3", + "translate-smg-submitted-others-processing": "Poruke s definicijama obrađuju se u pozadini.", "translate-smg-more": "Bit će još izmjena za obradbu nakon što proslijedite ove.", "translate-smg-left": "Sadržaj poruke na wikiju", "translate-smg-right": "Predstojeće izmjene", + "translate-smg-rename-select": "Odaberi", + "translate-smg-rename-cancel": "Odustani", + "translate-smg-rename-search": "Pretraživanje za porukama sličnoga sadržaja...", + "translate-smg-rename-select-err": "Molimo Vas, odaberite poruku kojoj želite promijeniti naziv", + "translate-smg-rename-no-msg": "Poruke nisu nađene.", + "translate-smg-rename-new": "Dodati kao novu...", + "translate-smg-rename-rename": "Dodati kao preimenovanje...", + "translate-smg-rename-dialog-title": "Odabir sličnih preimenovanja za $1", "translate-manage-import-diff": "Poruka $1 | Radnje: $2", "translate-manage-import-new": "Nova poruka $1", "translate-manage-import-deleted": "Obrisana poruka $1", @@ -220,13 +221,13 @@ "translate-import-err-ul-failed": "Postavljanje datoteke nije uspjelo", "translate-import-err-invalid-title": "Navedeno ime datoteke $1 nije bilo valjano.", "translate-js-summary": "Sažetak:", - "translate-js-save": "Spremi", - "translate-js-next": "Spremi i otvori sljedeću", + "translate-js-save": "Objavi", + "translate-js-next": "Objavi i otvori sljedeću", "translate-js-skip": "Prijeđi na sljedeću poruku", "translate-js-history": "Povijest prijevoda", "translate-js-support": "Postavi pitanje", "translate-js-support-title": "Zatražite pomoć ako nemate dovoljno informacija za ispravan prijevod ove poruke.", - "translate-js-support-unsaved-warning": "Imate nesačuvanih izmjena.", + "translate-js-support-unsaved-warning": "Imate neobjavljenih prijevoda.", "translate-gs-pos": "Mj.", "translate-gs-code": "Kôd", "translate-gs-continent": "Kontinent", @@ -278,14 +279,14 @@ "tux-status-fuzzy": "Zastarjelo", "tux-status-proofread": "Provjereno", "tux-status-translated": "Prevedeno", - "tux-status-saving": "Pohranjivanje...", - "tux-status-unsaved": "Nesačuvano", + "tux-status-saving": "Objavljivanje...", + "tux-status-unsaved": "Neobjavljeno", "tux-save-unknown-error": "Nepoznata se pogrješka dogodila.", "tux-editor-placeholder": "Vaš prijevod", "tux-editor-editsummary-placeholder": "Neobvezan sažetak", "tux-editor-paste-original-button-label": "Zalijepi izvorni tekst", "tux-editor-discard-changes-button-label": "Zanemari izmjene", - "tux-editor-save-button-label": "Spremi prijevod", + "tux-editor-save-button-label": "Objavi prijevod", "tux-editor-skip-button-label": "Preskoči na sljedeću poruku", "tux-editor-cancel-button-label": "Otkaži", "tux-editor-confirm-button-label": "Potvrdi prijevod", @@ -298,9 +299,9 @@ "tux-editor-need-more-help": "Trebate pomoć?", "tux-editor-ask-help": "Zatražite više informacija", "tux-editor-tm-match": "$1% podudarnosti", - "tux-warnings-more": "{{PLURAL:$1|još $1}}", - "tux-warnings-hide": "skrij", - "tux-editor-save-failed": "Spremanje prijevoda nije uspjelo: $1", + "tux-notices-more": "{{PLURAL:$1|još $1}}", + "tux-notices-hide": "skrij", + "tux-editor-save-failed": "Objavljivanje prijevoda nije uspjelo: $1", "tux-editor-n-uses": "upotrijebljeno $1 {{PLURAL:$1|put|puta}}", "tux-editor-message-desc-more": "Prikaži više", "tux-editor-message-desc-less": "Prikaži manje", @@ -312,10 +313,10 @@ "tux-proofread-action-tooltip": "Označi provjerenim", "tux-proofread-edit-label": "Uredi", "tux-editor-page-mode": "Stranica", - "tux-editor-outdated-warning": "Ovaj prijevod možda mora biti ažuriran.", - "tux-editor-outdated-warning-diff-link": "Prikaži razlike", + "tux-editor-outdated-notice": "Ovaj prijevod možda mora biti ažuriran.", + "tux-editor-outdated-notice-diff-link": "Prikaži razlike", "tux-editor-doc-editor-placeholder": "Dokumentacija poruke", - "tux-editor-doc-editor-save": "Spremi dokumentaciju", + "tux-editor-doc-editor-save": "Objavi dokumentaciju", "tux-editor-doc-editor-cancel": "Otkaži", "tux-messagetable-more-messages": "Još $1 {{PLURAL:$1|poruka|poruke|poruka}}", "tux-messagetable-loading-messages": "Učitavanje {{PLURAL:$1|poruke|poruka}}...", @@ -334,7 +335,7 @@ "tux-empty-there-are-optional": "Postoje neobvezne poruke koje nisu prikazane na popisu", "tux-empty-show-optional-messages": "Prikaži neobvezne poruke", "tux-empty-no-outdated-messages": "Nema zastarjelih poruka", - "tux-empty-nothing-to-proofread": "Nema ičega za provjeru", + "tux-empty-nothing-to-proofread": "Nema ničega za provjeru", "tux-empty-you-can-help-providing": "Pomozite i Vi prevodeći nove poruke", "tux-empty-nothing-new-to-proofread": "Za provjeru nema novih poruka", "tux-empty-you-can-review-already-proofread": "Provjeri već provjerene prijevode.", @@ -351,11 +352,12 @@ "tux-editor-message-tools-translations": "Svi prijevodi", "tux-editor-message-tools-linktothis": "Poveznica na ovu poruku", "tux-editor-loading": "Učitavam...", + "tux-editor-loading-failed": "Nije uspjelo učitavanje pomoćnih prijevoda: $1", "translate-search-more-languages-info": "{{PLURAL:$1|Još jedan jezik|Još $1 druga jezika|Još $1 drugih jezika}}", "translate-statsbar-tooltip": "$1 % prevedeno, $2 % pregledano", "translate-statsbar-tooltip-with-fuzzy": "‎$1 % prevedeno, $2 % provjereno, $3 % zastarjelo", "translate-search-more-groups-info": "još $1 {{PLURAL:$1|skupina|skupine|skupina}}", - "translate-ulsdep-title": "Pogrješka u konfiguraciji", - "tux-session-expired": "Više niste prijavljeni. Prijavite se u zasebnoj kartici. Druga mogućnost je da prekopirate nesačuvane prijevode, prijavite se, vratite se na ovu stranicu i ponovo upišete svoje prijevode.", - "tux-nojs": "Ovaj alat ne radi bez JavaScripta. Javascript je onemogućen, ne radi ili je preglednik nepodržan." + "tux-session-expired": "Više niste prijavljeni. Molimo Vas, prijavite se u zasebnoj kartici. Druga mogućnost je da načinite kopije nesačuvanih prijevoda, prijavite se, a potle vratite na ovu stranicu i ponovo unesete svoje prijevode.", + "tux-nojs": "Ovaj alat ne radi bez JavaScripta. Javascript je onemogućen, ne radi ili je preglednik nepodržan.", + "specialpages-group-translation": "Prevođenje" } diff --git a/MLEB/Translate/i18n/core/hsb.json b/MLEB/Translate/i18n/core/hsb.json index 0a4edd62..d23937ff 100644 --- a/MLEB/Translate/i18n/core/hsb.json +++ b/MLEB/Translate/i18n/core/hsb.json @@ -2,9 +2,9 @@ "@metadata": { "authors": [ "Dundak", + "J budissin", "Michawiki", - "Shirayuki", - "J budissin" + "Shirayuki" ] }, "translate": "Přełožić", @@ -52,31 +52,11 @@ "translate-use-suggestion": "Aktualny přełožk přez tutón namjet wuměnić", "translate-edit-nopermission": "Trjebaš přełožowanske prawa, zo by móhł zdźělenki přełožować.", "translate-edit-askpermission": "Prawo dóstać", - "translate-magic-pagename": "Rozšěrjeny přełožk MediaWiki", - "translate-magic-help": "Móžěs aliasy specialnych stronow, magiske słowa a mjena mjenowych rumow přełožić.\n\nAliasy specialnych stronow a magiske słowow móža wjacore přełožki měć.\nPřełožki so přež komu (,) wotdźěleja.\nMjenowe rumy móža jenož jedyn přełožk měć.\n\nPřełožowanje mjenoweho ruma projektoweje diskusije $1 talk móže kompliowane być. $1 so přez mjeno sydła wuměnuje (na přikład {{ns:project_talk}}). Jeli w twojej rěči njeje móžno, płaćiwy wuraz tworić, bjeztoho zo by so mjeno strony změniło, zdźěl nam to prošu na stronje [[Support|Podpěra]].\n\nDyrbiš přełožowar być, zo by změny składował.\nZměny so njeskładuja, doniž na tłóčatko ''Stronu składować'' njekliknješ.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Pokazać", - "translate-magic-cm-export": "Eksportować", - "translate-magic-nothing-to-export": "Njejo ničo eksportować.", - "translate-magic-cm-to-be": "Ma być:", - "translate-magic-cm-current": "Tuchwilu", - "translate-magic-cm-original": "Originalny", - "translate-magic-cm-comment": "Komentar:", - "translate-magic-cm-save": "Składować", - "translate-magic-cm-updatedusing": "Z [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] zaktualizowany", - "translate-magic-cm-savefailed": "Składowanje njeporadźiło", - "translate-magic-special": "Aliasy specialnych stronow", - "translate-magic-words": "Magiske słowa", - "translate-magic-namespace": "Mjena mjenowych rumow", - "translate-magic-notsaved": "Twoja změna njeje so składowała!", - "translate-magic-errors": "Prošu skoriguj {{PLURAL:$1|slědowacy zmylk|slědowacej zmylkaj|slědowace zmylki|slědowace zmylki}} w přełožkach:", - "translate-magic-saved": "Twoje změny su so wuspěšnje składowali.", - "translate-checks-parameters": "{{PLURAL:$2|Slědowacy parameter|Slědowacej parametraj|Slědowace parametry|Slědowacych parametrow}} so {{PLURAL:$2|njewužiwa|njewužiwatej|njewužiwaja|njewužiwa}}: $1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Slědowacy parameter je njeznaty|Slědowacej parametraj stej njeznatej|Slědowace parametry su njeznate|Slědowacych parametrow je njeznate}}: $1", + "translate-checks-parameters": "{{PLURAL:$2|Slědowacy parameter|Slědowacej parametraj|Slědowace parametry|Slědowacych parametrow}} so {{PLURAL:$2|njewužiwa|njewužiwatej|njewužiwaja|njewužiwa}}: $1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Slědowacy parameter je njeznaty|Slědowacej parametraj stej njeznatej|Slědowace parametry su njeznate|Slědowacych parametrow je njeznate}}: $1", "translate-checks-balance": "Je njeruna ličba {{PLURAL:$2|spinka|spinkow|spinkow|spinkow}}: $1", "translate-checks-links": "{{PLURAL:$2|Slědowacy wotkaz je problematiski|Slědowacej wotkazaj stej problematiskej|Slědowace wotkazy wotkazy su problematiske|Slědowacych wotkazow je problematiske}}: $1", "translate-checks-links-missing": "{{PLURAL:$2|Slědowacy wotkaz pobrachuje|Slědowacej $2 wotkazaj pobrachujetej|Slědowace $2 wotkazy pobrachuja|Slědowacych $2 wotkazow pobrachuje}}: $1", - "translate-checks-xhtml": "Narunaj prošu {{PLURAL:$2|slědowacu tafličku|slědowacej tafličce|slědowace taflički|slědowacych tafličkow}} přez {{PLURAL:$2|korektnu|korektnej|korektne|korektne}}: $1", "translate-checks-plural": "Definicija wužiwa {{PLURAL:}}, přełožk pak nic.", "translate-checks-plural-forms": "Za {{PLURAL:}} {{PLURAL:$1|je so jedna forma podała|stej so $1 formje podałoj|su so $1 formy podali|je so $1 formow podało}}, ale {{PLURAL:$2|podpěruje so jenož jedna forma|podpěrujetej so $2 formje|podpěruja so $2 formy|podpěruje so $2 formow}} (bjez formow 0= a 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} ma dwě jeničkej formje na kóncu. {{PLURAL:$1|mloko|mloko}} měł so jako {{PLURAL:$1|mloko}} pisać.", @@ -86,7 +66,6 @@ "translate-checks-parametersnotequal": "Ličba parametrow je {{PLURAL:$1|$1}}; to měł {{PLURAL:$2|$2}} być.", "translate-checks-malformed": "$1 ma njepłaćiwu formu.", "translate-checks-fudforum-syntax": "$1 město $2 w tutym projekće wužiwać.", - "translate-pref-nonewsletter": "Njepósćel mi žane e-mejlowe dopisy nowinkow", "translate-pref-editassistlang": "Pomocne rěče:", "prefs-translate": "Přełožowanske opcije", "translate-pref-editassistlang-help": "Lisćina rěčnych kodow z komu jako dźělatko.\nPřełožk powěsće w tutych rěčach pokazuja so, hdyž přełožuješ.\nStandardna lisćina rěčow wotwisuje wot twojeje rěče.", @@ -98,6 +77,8 @@ "action-translate-import": "offline přewjedźene přełožki importować", "right-translate-messagereview": "Přełožki přepruwować", "right-translate-groupreview": "Dźěłowy status zdźělenskich skupinow změnić", + "translate-rcfilters-translations": "Přełožki", + "translate-rcfilters-translations-only-label": "Přełožki", "translate-rc-translation-filter": "Přełožki filtrować:", "translate-rc-translation-filter-no": "Ničo nječinić", "translate-rc-translation-filter-only": "Jenož přełožki pokazać", @@ -216,7 +197,6 @@ "translate-import-err-no-such-file": "Dataja $1 njeeksistuje abo njeje so lokalnje nahrała.", "translate-import-err-stale-group": "Skupina powěsćow, ke kotrejž tuta dataja słuša, njeeksistuje.", "translate-import-err-no-headers": "Dataja derje sformowana dataja Gettext we formaće rozšěrjenje \"Translate\" njeje:\nNjeje móžno skupinu a rěč z hłowy dataje zwěsćić.", - "translate-import-err-warnings": "Dataja derje sformowana njeje.\nZawěsć, zo twój editor pola msgctxt njewotstronja.\nPodrobnosće: $1", "translate-js-summary": "Zjeće:", "translate-js-save": "Składować", "translate-js-next": "Přichodnu powěsć składować a wočinić", @@ -293,8 +273,8 @@ "tux-editor-need-more-help": "Trjebaš wjace pomocy?", "tux-editor-ask-help": "Wo dalše informacije prosyć", "tux-editor-tm-match": "$1 % wotpowědowanja", - "tux-warnings-more": "{{PLURAL:$1|$1 dalše|$1dalšej|$1dalše|$1 dalšich}}", - "tux-warnings-hide": "schować", + "tux-notices-more": "{{PLURAL:$1|$1 dalše|$1dalšej|$1dalše|$1 dalšich}}", + "tux-notices-hide": "schować", "tux-editor-save-failed": "Přełožk njeda so składować: $1", "tux-editor-n-uses": "{{PLURAL:$1|$1 raz|dwójce|$1 razy|$1 razow}} wužity", "tux-editor-message-desc-more": "Wjace sej wobhladać", @@ -307,8 +287,8 @@ "tux-proofread-action-tooltip": "Jako přepruwowany markěrować", "tux-proofread-edit-label": "Wobdźěłać", "tux-editor-page-mode": "Strona", - "tux-editor-outdated-warning": "Tutón přełožk dyrbi so snano aktualizować.", - "tux-editor-outdated-warning-diff-link": "Rozdźěle pokazać", + "tux-editor-outdated-notice": "Tutón přełožk dyrbi so snano aktualizować.", + "tux-editor-outdated-notice-diff-link": "Rozdźěle pokazać", "tux-editor-doc-editor-placeholder": "Dokumentacija zdźělenki", "tux-editor-doc-editor-save": "Dokumentaciju składować", "tux-editor-doc-editor-cancel": "Přetorhnyć", @@ -346,7 +326,5 @@ "translate-search-more-languages-info": "$1 {{PLURAL:$1|dalša rěč|dalšej rěči|dalše rěče|dalšich rěčow}}", "translate-statsbar-tooltip": "$1 % přełoženy, $2 % přepruwowany", "translate-statsbar-tooltip-with-fuzzy": "$1 % přełoženy, $2 % přepruwowany, $3 % zestarjeny", - "translate-search-more-groups-info": "$1 {{PLURAL:$1|dalša skupina|dalšej skupinje|dalše skupiny|dalšich skupinow}}", - "translate-ulsdep-title": "Konfiguraciski zmylk", - "translate-ulsdep-body": "Přełožowanske rozšěrjenje wotwisuje wot [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector rozšěrjenja Universal Language Selector]." + "translate-search-more-groups-info": "$1 {{PLURAL:$1|dalša skupina|dalšej skupinje|dalše skupiny|dalšich skupinow}}" } diff --git a/MLEB/Translate/i18n/core/ht.json b/MLEB/Translate/i18n/core/ht.json index c5e1fad1..256cd7de 100644 --- a/MLEB/Translate/i18n/core/ht.json +++ b/MLEB/Translate/i18n/core/ht.json @@ -38,37 +38,16 @@ "translate-edit-warnings": "Avètisman sou tradiksyon ki pa konplete yo", "translate-edit-tmmatch": "$1% korespondans", "translate-use-suggestion": "Mete sijesyon sa a nan zòn tradiksyon a. L ap ranplase tout kontni aktyèl.", - "translate-magic-pagename": "Tradiksyon MediaWiki pwolonje", - "translate-magic-help": "Ou kapab tradui alias paj espesyal yo, mo majik ak non espas non yo.\n\nAlias pou paj espesyal yo ak mo majik yo ka gen plizyè tradiksyon.\nTradiksyon yo separe pa yon vigil (,).\nEspas non yo ka genyen yon sèl tradiksyon sèlman.\n\nNan tradiksyon espas non yo $1 talk espesyal. $1 ranplase pa non sitwèb (pa ekzanp {{ns:project_talk}}).\nSi li pa posib nan lang ou pou fòme ekspresyon valid san ou pa chanje nonsitwèb, souple kontakte yon devlopè.\n\nFòk ou fè pati group tradiktè yo pou ou kapab sove chanjman yo.\nChanjman yo pa sove jouk ou klike sou bouton sove anba.", - "translate-magic-module": "Modil:", - "translate-magic-submit": "Mande", - "translate-magic-cm-export": "Expòte", - "translate-magic-nothing-to-export": "Pa gen anyen pou ekspòte.", - "translate-magic-cm-to-be": "Ap vin'", - "translate-magic-cm-current": "Aktyèl", - "translate-magic-cm-original": "Orijinal", - "translate-magic-cm-comment": "Kòmantè:", - "translate-magic-cm-save": "Anrejistre", - "translate-magic-cm-updatedusing": "Mete a jou pa [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Anrejistreman pa t reyisi", - "translate-magic-special": "Alias paj espesyal yo", - "translate-magic-words": "Mo majik yo", - "translate-magic-namespace": "Non espas non yo", - "translate-magic-notsaved": "Modifikasyon ou pa t anrejistre!", - "translate-magic-errors": "Tanpri, korije {{PLURAL:$1|erè sa|erè sa yo}} nan tradiksyon:", - "translate-magic-saved": "Modifikasyon ou yo te byen anrejistre.", - "translate-checks-parameters": "Paramèt {{PLURAL:$2|swivan|swivan yo}} pa itilize:\n$1", - "translate-checks-parameters-unknown": "Nou pa konnen paramèt {{PLURAL:$2|swivan|swivan yo}}:\n$1", + "translate-checks-parameters": "Paramèt {{PLURAL:$2|swivan|swivan yo}} pa itilize:\n$1", + "translate-checks-parameters-unknown": "Nou pa konnen paramèt {{PLURAL:$2|swivan|swivan yo}}:\n$1", "translate-checks-balance": "Genyen yon kantite {{PLURAL:$2|parantèz|parantèz}} ki enpè:\n$1", "translate-checks-links": "{{PLURAL:$2|Lyen swivan an|$2 lyen swivan yo}} gen pwoblèm:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Lyen swivan an|$2 lyen swivan yo}} manke:\n$1", - "translate-checks-xhtml": "Tanpri, ranplase {{PLURAL:$2|etikèt swivan|etikèt swivan yo}} avèk sa ki kòrèk yo:\n$1", "translate-checks-plural": "Definisyon itilize {{PLURAL:}} men pa tradiksyon.", "translate-checks-pagename": "Espas non chanje apati definisyon an", "translate-checks-format": "Tradiksyon sa a pa swiv definisyon a oubyen gen yon sentaks ki pa bon: $1", "translate-checks-escape": "Echapman sa yo kapab rive pa aksidan: $1", "translate-checks-fudforum-syntax": "Pito ou sèvi ak $1 pase $2 nan pwojè sa a.", - "translate-pref-nonewsletter": "Pa voye imèl nouvèl yo ban mwen", "translate-pref-editassistlang": "Lang pou sipòte:", "prefs-translate": "Opsyon pou tradiksyon", "translate-pref-editassistlang-help": "Lis kòd lang yo ki separe pa vigil.\nTradiksyon pou yon mesaj nan lang sa yo parèt lè w ap tradui.\nLis lang pa defo depann de lang ou an.", @@ -163,7 +142,6 @@ "translate-import-err-invalid-title": "Non fichye $1 pa bon.", "translate-import-err-no-such-file": "Fichye $1 pa egziste oubyen pa t chaje localman.", "translate-import-err-no-headers": "Fichye sa pa byen fòme nan fòma Gettext pou ekstansyon tradiksyon:\nPa kapab detèmine gwoup ak lang depi tèt fichye.", - "translate-import-err-warnings": "Fichye sa pa byen fòme.\nAsire w editè ou itilize a pa retire mòso msgctxt yo.\nDetay: $1", "translate-js-next": "Anrejistre epi ouvri swivan.", "translate-js-skip": "Sote ale nan swivan", "translate-js-history": "Istorik tradiksyon", diff --git a/MLEB/Translate/i18n/core/hu.json b/MLEB/Translate/i18n/core/hu.json index 2f147bae..abc1eb81 100644 --- a/MLEB/Translate/i18n/core/hu.json +++ b/MLEB/Translate/i18n/core/hu.json @@ -1,17 +1,18 @@ { "@metadata": { "authors": [ + "Bencemac", "Bináris", "BáthoryPéter", + "Csega", "Dani", "Dj", "Glanthor Reviol", "Misibacsi", + "Máté", "Tacsipacsi", "Tgr", - "Wilander", - "Csega", - "Máté" + "Wilander" ] }, "translate": "Fordítás", @@ -65,31 +66,11 @@ "translate-export-invalid-format": "Adj meg egy érvényes formátumot.", "translate-export-not-supported": "A fordítások exportálása nem támogatott.", "translate-export-format-notsupported": "A megadott exportálási formátumot nem támogatja ez az üzenetcsoport.", - "translate-magic-pagename": "Kibővített MediaWiki-fordítás", - "translate-magic-help": "Lefordíthatod a speciális lapok álneveit, a varázsszavakat és a névterek neveit.\n\nA speciális lapoknak és a varázsszavaknak több fordítása is lehet.\nA fordításokat vesszővel (,) kell elválasztani.\nA névtereknek csak egyetlen fordítása lehet.\n\nA projektvita-névtér fordításánál a $1 talk speciális, a $1 az oldal nevére lesz lecserélve (pl. {{ns:project_talk}}).\nHa a te nyelveden nem lehet az oldal nevének változtatása nélkül értelmes kifejezést összehozni, értesítsd a fejlesztőket a [[Support]] lapon.\n\nA változtatások mentését csak az tudja elvégezni, aki tagja a fordítók csoportjának.\nA változtatások nem mentődnek, míg alul a mentés gombra nem kattintasz.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Lekérés", - "translate-magic-cm-export": "Exportálás", - "translate-magic-nothing-to-export": "Nincs mit exportálni.", - "translate-magic-cm-to-be": "Leendő", - "translate-magic-cm-current": "Jelenlegi", - "translate-magic-cm-original": "Eredeti", - "translate-magic-cm-comment": "Megjegyzés:", - "translate-magic-cm-save": "Mentés", - "translate-magic-cm-updatedusing": "Frissítve a [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] használatával", - "translate-magic-cm-savefailed": "Mentés sikertelen", - "translate-magic-special": "Speciális lapok álnevei", - "translate-magic-words": "Varázsszavak", - "translate-magic-namespace": "Névterek nevei", - "translate-magic-notsaved": "A szerkesztésed nem lett elmentve!", - "translate-magic-errors": "Javítsd ki a következő {{PLURAL:$1|hibát|hibákat}} a fordításokban:", - "translate-magic-saved": "A módosításaid el lettek mentve.", - "translate-checks-parameters": "A következő {{PLURAL:$2|paraméter nincs|paraméterek nincsenek}} használva:\n$1", - "translate-checks-parameters-unknown": "A következő {{PLURAL:$2|paraméter ismeretlen|paraméterek ismeretlenek}}:\n$1", + "translate-checks-parameters": "A következő {{PLURAL:$2|paraméter nincs|paraméterek nincsenek}} használva:\n$1", + "translate-checks-parameters-unknown": "A következő {{PLURAL:$2|paraméter ismeretlen|paraméterek ismeretlenek}}:\n$1", "translate-checks-balance": "Nem egyenlő számban vannak használva a nyitó és záró {{PLURAL:$2|zárójelek|zárójelek}}:\n$1", "translate-checks-links": "A következő {{PLURAL:$2|link problémás|linkek problémásak}}:\n$1", "translate-checks-links-missing": "A következő {{PLURAL:$2|hivatkozás hiányzik|hivatkozások hiányoznak}}:\n$1", - "translate-checks-xhtml": "A következő {{PLURAL:$2|elemet|elemeket}} cseréld le a megfelelőekre:\n$1", "translate-checks-plural": "Az alapértelmezett változatban van {{PLURAL:}} forma, míg a fordításban nincs (magyar nyelv esetén ez nem feltétlenül probléma!).", "translate-checks-plural-forms": "A {{PLURAL:}} $1 formát kapott, de csak $2 forma támogatott (0= és 1= kivételével).", "translate-checks-plural-dupe": "A {{PLURAL:}} dupla formákat kap a végén. A $1 {{PLURAL:$1|kutya|kutya}} $1 kutya formában írandó (és még véletlenül se $1 {{PLURAL:$1|kutya|kutyák}}-ként, az felér a magyar nyelv elpusztításával :)!), ha az üzenetben nincs előtte szám, akkor {{PLURAL:$1|kutya|kutya}} helyett {{PLURAL:$1|kutya|kutyák}}, amennyiben máshogy megjelenik szám előtte, akkor {{PLURAL:$1|kutya}} kell.", @@ -99,12 +80,12 @@ "translate-checks-parametersnotequal": "A paraméterek száma a szükséges {{PLURAL:$1|$1}} helyett {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 hibás formátumú.", "translate-checks-fudforum-syntax": "Használj $1 formát $2 helyett ebben a projektben.", - "translate-pref-nonewsletter": "Ne küldjenek hírlevelet", "translate-pref-editassistlang": "Segédnyelvek:", "prefs-translate": "Fordítási beállítások", "translate-pref-editassistlang-help": "Nyelvkódok vesszővel elválasztott listája.\nAz üzenetek fordításai ezeken a nyelveken jelennek meg, amikor fordítasz.\nA nyelvek alapértelmezett listája a nyelvedtől függ.", "translate-pref-editassistlang-bad": "Érvénytelen nyelvkód a listában:\n$1.", "right-translate": "szerkesztés a fordítói felületen keresztül", + "action-translate": "szerkesztés a fordítói felületen használatával", "right-translate-manage": "üzenetcsoportok kezelése", "action-translate-manage": "üzenetcsoportok kezelése", "right-translate-import": "kapcsolat nélküli fordítások importálása", @@ -215,18 +196,27 @@ "translate-smg-more": "További feldolgozandó változtatások lesznek ezen módosítások elküldése után.", "translate-smg-left": "Üzenet tartalom wikiben", "translate-smg-right": "Bejövő változtatások", + "translate-smg-rename-select": "Kiválasztás", + "translate-smg-rename-cancel": "Mégse", + "translate-smg-rename-select-err": "Válassz ki egy átnevezendő üzenetet", + "translate-smg-rename-no-msg": "Nem találhatók üzenetek.", + "translate-smg-rename-new": "Hozzáadás újként…", "translate-manage-import-diff": "Üzenet: $1 | Műveletek: $2", "translate-manage-import-new": "Új üzenet: $1", "translate-manage-import-deleted": "Törölt üzenet: $1", "translate-manage-action-import": "Importálás", - "translate-manage-action-conflict": "Importálás és fuzzy-nak jelölés", + "translate-manage-action-conflict": "Importálás és elavultnak jelölés", "translate-manage-action-ignore": "Figyelmen kívül hagyás", - "translate-manage-action-fuzzy": "Fordítások importálása és fuzzy-nak jelölése", + "translate-manage-action-fuzzy": "Importálás és fordítások elavultnak jelölése", + "translate-manage-action-rename-fuzzy": "Átnevezés és fordítások elavultnak jelölése", + "translate-manage-action-rename": "Átnevezés", + "translate-manage-action-ignore-change": "Fordítás változásának ignorálása", "translate-manage-nochanges": "Ebben a csoportban nem történt módosítás az üzenetek definíciójában.", "translate-manage-nochanges-other": "Ennél a nyelvnél nem történtek változtatások.\nHasználd az alábbi linket a csoport adatlapjához történő visszalépéshez.", "translate-manage-inconsistent": "A kérésben inkonzisztenciát észleltem.\nEllenőrizd a változtatásokat, majd próbáld újra.\nRészletek: $1.", "translate-manage-toolong": "A maximális feldolgozási idő ({{PLURAL:$1|egy|$1}} másodperc) túl lett lépve.\nKüldd el újra az űrlapot a feldolgozás folytatásához.", "translate-manage-import-summary": "Új változat importálása külső forrásból", + "translate-manage-import-rename-summary": "Átnevezve külső forrásban", "translate-manage-conflict-summary": "Új változat importálása külső forrásból.\nEllenőrizd.", "translate-manage-submit": "Végrehajtás", "translate-manage-intro-other": "Alább látható a(z) $1 nyelv fordításaiban történt változtatások listája.\nEllenőrizd a változtatásokat, és válaszd ki azt a műveletet, amit alkalmazni szeretnél minden egyes frissítésre.\nHa figyelmen kívül hagyod a változtatásokat, az csak ideiglenes művelet.", @@ -241,7 +231,6 @@ "translate-import-err-no-such-file": "A(z) $1 fájl nem létezik vagy nem helyben lett feltöltve.", "translate-import-err-stale-group": "A fájlhoz tartozó üzenetcsoport nem létezik.", "translate-import-err-no-headers": "A fájl nem egy jól formázott Gettext-fájl a Translate-kiterjesztés formátumával:\nnem sikerült meghatározni a csoportot és a nyelvet a fájl fejlécéből.", - "translate-import-err-warnings": "A fájl nem megfelelően formázott.\nEllenőrizd, hogy a szerkesztőd nem távolította-e el az msgctxt-mezőket.\nRészletek: $1", "translate-js-summary": "Összefoglaló:", "translate-js-save": "Mentés", "translate-js-next": "Mentés és a következő megnyitása", @@ -322,8 +311,8 @@ "tux-editor-need-more-help": "További segítségre van szükséged?", "tux-editor-ask-help": "További információ kérése", "tux-editor-tm-match": "$1%-os egyezés", - "tux-warnings-more": "$1 további", - "tux-warnings-hide": "elrejtés", + "tux-notices-more": "$1 további", + "tux-notices-hide": "elrejtés", "tux-editor-save-failed": "A fordítás elmentése sikertelen: $1", "tux-editor-n-uses": "$1 használat", "tux-editor-message-desc-more": "Több", @@ -336,8 +325,8 @@ "tux-proofread-action-tooltip": "Megjelölés átnézettként", "tux-proofread-edit-label": "Szerkesztés", "tux-editor-page-mode": "Lap", - "tux-editor-outdated-warning": "A fordítást lehet, hogy frissíteni kell.", - "tux-editor-outdated-warning-diff-link": "Változtatások megjelenítése", + "tux-editor-outdated-notice": "A fordítást lehet, hogy frissíteni kell.", + "tux-editor-outdated-notice-diff-link": "Változtatások megjelenítése", "tux-editor-doc-editor-placeholder": "Üzenetdokumentáció", "tux-editor-doc-editor-save": "Dokumentáció mentése", "tux-editor-doc-editor-cancel": "Mégse", @@ -375,12 +364,13 @@ "tux-editor-message-tools-translations": "Összes fordítás", "tux-editor-message-tools-linktothis": "Hivatkozás erre az üzenetre", "tux-editor-loading": "Betöltés…", + "tux-editor-loading-failed": "A fordítási segítségek betöltése sikertelen: $1", "translate-search-more-languages-info": "$1 további nyelv", "translate-statsbar-tooltip": "$1% lefordítva, $2% átnézve", "translate-statsbar-tooltip-with-fuzzy": "$1% lefordítva, $2% átnézve, $3% elavult", "translate-search-more-groups-info": "$1 további csoport", - "translate-ulsdep-title": "Konfigurációs hiba", - "translate-ulsdep-body": "A fordítás kiterjesztés a [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector Universal Language Selector kiterjesztésen] alapszik.", + "translate-syntax-error": "a fordítás szintaxisa hibás", "tux-session-expired": "Már nem vagy bejelentkezve. Jelentkezz be egy másik fülön, vagy másold ki a mentetlen fordításaidat, jelentkezz be, gyere vissza erre a lapra és másold vissza a fordításaidat.", - "tux-nojs": "Ez az eszköz nem működik JavaScript nélkül. A JavaScript le van tiltva, nem működik, vagy ez a böngésző nem támogatott." + "tux-nojs": "Ez az eszköz nem működik JavaScript nélkül. A JavaScript le van tiltva, nem működik, vagy ez a böngésző nem támogatott.", + "specialpages-group-translation": "Fordítás" } diff --git a/MLEB/Translate/i18n/core/hy.json b/MLEB/Translate/i18n/core/hy.json index 6ce19ec8..031dff2c 100644 --- a/MLEB/Translate/i18n/core/hy.json +++ b/MLEB/Translate/i18n/core/hy.json @@ -1,18 +1,22 @@ { "@metadata": { "authors": [ + "Beko", "Chaojoker", + "Kareyac", "Vadgt", - "Դավիթ Սարոյան", - "Beko" + "Դավիթ Սարոյան" ] }, "translate": "Թարգմանություն", "translate-taction-translate": "Թարգմանություն", "translate-taction-proofread": "Սրբագրել", "translate-edit-translation": "Թարգմանություն", - "translate-magic-module": "Մոդուլ:", "translate-sidebar-alltrans": "Այլ լեզուներով", + "translate-smg-rename-select": "Ընտրել", + "translate-smg-rename-cancel": "Չեղարկել", "translate-manage-import-new": "Նոր Հաղորդագրություն $1", + "translate-manage-action-rename": "Վերանվանել", + "translate-js-save": "Հրապարակել", "translate-documentation-language": "Հաղորդագրության փաստաթղթեր" } diff --git a/MLEB/Translate/i18n/core/hyw.json b/MLEB/Translate/i18n/core/hyw.json index c5037155..ba60336c 100644 --- a/MLEB/Translate/i18n/core/hyw.json +++ b/MLEB/Translate/i18n/core/hyw.json @@ -1,8 +1,32 @@ { "@metadata": { "authors": [ - "ArmenBakkalian" + "ArmenBakkalian", + "Azniv Stepanian", + "Kareyac" ] }, + "translate": "Թարգմանութիւն", + "translate-extensionname": "Թարգմանութիւն", + "translate-taction-translate": "Թարգմանութիւն", + "translate-page-settings-legend": "Կարգաւորումներ", + "translate-page-language": "Լեզու", + "translate-page-limit": "Սահման", + "translate-page-navigation-legend": "Նաւարկութիւն", + "translate-page-paging-links": "[$1][$2]", + "translate-next": "Յաջորդ էջը", + "translate-prev": "Նախորդ էջը", + "translate-page-edit": "Խմբագրել", + "translate-edit-translation": "Թարգմանութիւն", + "translate-export-form-format": "Ձեւաւորել", + "translate-rcfilters-translations": "Թարգմանութիւններ", + "translate-stats-edits": "Խմբագրումներ", + "translate-stats-users": "Թարգմանիչներ", + "translate-statsf-scale-months": "Ամիսներ", + "translate-statsf-scale-weeks": "Շաբաթներ", + "translate-statsf-scale-days": "Օրեր", + "translate-statsf-scale-hours": "Ժամեր", + "translate-statsf-submit": "Կանխաստուգել", + "translate-smg-rename-cancel": "Չեղարկել", "translate-documentation-language": "Հաղորդագրութեան փաստագրութիւն" } diff --git a/MLEB/Translate/i18n/core/ia.json b/MLEB/Translate/i18n/core/ia.json index 20909d0e..39055155 100644 --- a/MLEB/Translate/i18n/core/ia.json +++ b/MLEB/Translate/i18n/core/ia.json @@ -54,41 +54,20 @@ "translate-export-invalid-format": "Specifica un formato valide.", "translate-export-not-supported": "Le exportation de traductiones non es supportate.", "translate-export-format-notsupported": "Le formato de exportation specificate non es supportate per le gruppo de messages.", - "translate-magic-pagename": "Traduction extendite de MediaWiki", - "translate-magic-help": "Tu pote traducer le aliases de paginas special, le parolas magic e le nomines de spatios de nomines.\n\nLe aliases de paginas special e le parolas magic pote haber plure traductiones.\nLe traductiones es separate per un comma (,).\nLe spatios de nomines pote haber solmente un traduction.\n\nLe traduction del spatio de nomines pro le discussion del projecto, $1 talk, pote esser complexe. Le codice $1 es reimplaciate per le nomine del sito (per exemplo {{ns:project_talk}}).\nSi non es possibile in tu lingua formar un expression valide sin cambiar le nomine del sito, per favor contacta nos in [[Support]].\n\nTu debe esser traductor pro poter salveguardar le modificationes.\nLe modificationes non es salveguardate usque tu clicca super le button Salveguardar hic infra.", - "translate-magic-module": "Modulo:", - "translate-magic-submit": "Obtener", - "translate-magic-cm-export": "Exportar", - "translate-magic-nothing-to-export": "Il ha nihil a exportar.", - "translate-magic-cm-to-be": "Futur", - "translate-magic-cm-current": "Actual", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Commento:", - "translate-magic-cm-save": "Salveguardar", - "translate-magic-cm-updatedusing": "Actualisate con [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Non poteva salveguardar", - "translate-magic-special": "Aliases de paginas special", - "translate-magic-words": "Parolas magic", - "translate-magic-namespace": "Nomines de spatios de nomines", - "translate-magic-notsaved": "Tu modification non ha essite salveguardate!", - "translate-magic-errors": "Corrige per favor le sequente {{PLURAL:$1|error|errores}} in le traductiones:", - "translate-magic-saved": "Le modificationes ha essite salveguardate.", - "translate-checks-parameters": "Le sequente {{PLURAL:$2|parametro|parametros}} non es usate:\n$1", - "translate-checks-parameters-unknown": "Le sequente {{PLURAL:$2|parametro|parametros}} es incognite:\n$1", + "translate-checks-parameters": "Le sequente {{PLURAL:$2|parametro|parametros}} non es usate:\n$1", + "translate-checks-parameters-unknown": "Le sequente {{PLURAL:$2|parametro|parametros}} es incognite:\n$1", "translate-checks-balance": "Il ha un numero impar de {{PLURAL:$2|parentheses|parentheses}}:\n$1", "translate-checks-links": "Le sequente {{PLURAL:$2|ligamine|ligamines}} es problematic:\n$1", "translate-checks-links-missing": "Le sequente {{PLURAL:$2|ligamine|$2 ligamines}} es mancante:\n$1", - "translate-checks-xhtml": "Per favor corrige le sequente {{PLURAL:$2|etiquetta|etiquettas}}:\n$1", "translate-checks-plural": "Le definition usa {{PLURAL:}} sed non le traduction.", "translate-checks-plural-forms": "Pro {{PLURAL:}} es specificate {{PLURAL:$1|un forma|$1 formas}} ma solmente {{PLURAL:$2|un forma|$2 formas}} es supportate (excludente le formas 0= e 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} ha formas duplicate al fin. Per exemplo, {{PLURAL:$1|cosalia|cosalia}} debe esser scribite como {{PLURAL:$1|cosalia}}.", "translate-checks-pagename": "Spatio de nomines cambiate ab le definition", "translate-checks-format": "Iste traduction non seque le definition o ha un syntaxe invalide: $1", - "translate-checks-escape": "Le sequente escappamentos pote esser accidental: $1", + "translate-checks-escape": "Le sequente {{PLURAL:$2|character|characteres}} de escappamento pote esser accidental: $1. {{PLURAL:$4|Un character de escappamento valide es|Le characteres de escappamento valide include:}} $3.", "translate-checks-parametersnotequal": "Le numero de parametros es {{PLURAL:$1|$1}}; debe esser {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 es mal formate.", "translate-checks-fudforum-syntax": "Usar $1 in loco de $2 in iste projecto.", - "translate-pref-nonewsletter": "Non inviar me bulletines in e-mail", "translate-pref-editassistlang": "Linguas assistente:", "prefs-translate": "Optiones de traduction", "translate-pref-editassistlang-help": "Lista de codices de linguas separate per commas.\nLe traductiones de un message in iste linguas es monstrate quando tu traduce.\nLe lista predefinite de linguas depende de tu lingua.", @@ -228,7 +207,6 @@ "translate-import-err-no-such-file": "Le file $1 non existe o non ha essite incargate localmente.", "translate-import-err-stale-group": "Le gruppo de messages al qual iste file pertine non existe.", "translate-import-err-no-headers": "Le file non es un file Gettext ben formate in le formato del extension Translate:\nNon pote determinar le gruppo e lingua ex le capites del file.", - "translate-import-err-warnings": "Le file non es ben formate.\nAssecura te que tu editor non remove le campos msgctxt.\nDetalios: $1", "translate-js-summary": "Summario:", "translate-js-save": "Salveguardar", "translate-js-next": "Salveguardar e aperir le sequente", @@ -309,8 +287,8 @@ "tux-editor-need-more-help": "Require adjuta?", "tux-editor-ask-help": "Demandar plus information", "tux-editor-tm-match": "$1% corresponde", - "tux-warnings-more": "$1 {{PLURAL:$1|altere|alteres}}", - "tux-warnings-hide": "celar", + "tux-notices-more": "$1 {{PLURAL:$1|altere|alteres}}", + "tux-notices-hide": "celar", "tux-editor-save-failed": "Error durante le salveguarda del traduction: $1", "tux-editor-n-uses": "usate $1 {{PLURAL:$1|vice|vices}}", "tux-editor-message-desc-more": "Vider plus", @@ -323,8 +301,8 @@ "tux-proofread-action-tooltip": "Marcar como revidite", "tux-proofread-edit-label": "Modificar", "tux-editor-page-mode": "Pagina", - "tux-editor-outdated-warning": "Iste traduction debe possibilemente esser actualisate.", - "tux-editor-outdated-warning-diff-link": "Monstrar differentias", + "tux-editor-outdated-notice": "Iste traduction debe possibilemente esser actualisate.", + "tux-editor-outdated-notice-diff-link": "Monstrar differentias", "tux-editor-doc-editor-placeholder": "Documentation del message", "tux-editor-doc-editor-save": "Salveguardar documentation", "tux-editor-doc-editor-cancel": "Cancellar", @@ -366,8 +344,6 @@ "translate-statsbar-tooltip": "$1% traducite, $2% revidite", "translate-statsbar-tooltip-with-fuzzy": "$1% traducite, $2% revidite, $3% obsolete", "translate-search-more-groups-info": "$1 altere {{PLURAL:$1|gruppo|gruppos}}", - "translate-ulsdep-title": "Error de configuration", - "translate-ulsdep-body": "Le extension Translate depende del [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector extension Universal Language Selector].", "tux-session-expired": "Le session ha essite claudite. Per favor, re-aperi session in un fenestra o scheda separate del navigator. Alternativemente, face un copia del traductiones non salveguardate, aperi session, retorna a iste pagina e re-insere le traductiones.", "tux-nojs": "Iste instrumento non functiona sin JavaScript. Pote esser que JavaScript es disactivate o non functiona, o que iste navigator non es supportate." } diff --git a/MLEB/Translate/i18n/core/id.json b/MLEB/Translate/i18n/core/id.json index acac48ae..e71bc7ef 100644 --- a/MLEB/Translate/i18n/core/id.json +++ b/MLEB/Translate/i18n/core/id.json @@ -11,15 +11,16 @@ "Kenrick95", "Meursault2004", "Naval Scene", + "NoiX180", "Rex", + "Uchup19", "William Surya Permana", - "පසිඳු කාවින්ද", - "NoiX180", - "Uchup19" + "පසිඳු කාවින්ද" ] }, "translate": "Terjemahkan", "translate-desc": "[[Special:Translate|Halaman istimewa]] untuk menerjemahkan MediaWiki dan lain-lain", + "translate-fuzzybot-desc": "Ini adalah akun sistem khusus yang digunakan oleh [https://www.mediawiki.org/wiki/Extension:Translate ekstensi Terjemahan] MediaWiki untuk mengelola terjemahan. Akun ini adalah bagian dari perangkat lunak MediaWiki dan tidak dimiliki oleh pengguna mana pun.", "translate-taskui-export-to-file": "Ekspor dalam format asli", "translate-taskui-export-as-po": "Ekspor untuk terjemahan luring", "translate-taction-translate": "Terjemahkan", @@ -56,7 +57,7 @@ "translate-edit-translation": "Terjemahan", "translate-edit-contribute": "berkontribusi", "translate-edit-no-information": "Pesan ini tidak memiliki dokumentasi.\nJika Anda mengetahui di mana dan bagaimana pesan ini digunakan, Anda dapat membantu penerjemah lain dengan menambahkan dokumentasi untuk pesan ini.", - "translate-edit-information": "Informasi pesan ($1)", + "translate-edit-information": "Informasi mengenai pesan ($1)", "translate-edit-in-other-languages": "Pesan dalam bahasa lain", "translate-edit-warnings": "Peringatan mengenai terjemahan yang tak lengkap", "translate-edit-tmmatch-source": "Teks sumber terjemahan: $1", @@ -69,41 +70,20 @@ "translate-export-invalid-format": "Silakan tentukan format yang sah.", "translate-export-not-supported": "Ekspor terjemahan tidak didukung.", "translate-export-format-notsupported": "Format ekspor yang diinginkan tidak didukung oleh kelompok pesan ini.", - "translate-magic-pagename": "Terjemahan MediaWiki yang Diperluas", - "translate-magic-help": "Anda dapat menerjemahkan alias untuk halaman istimewa, kata magis, dan ruang nama.\n\nAlias untuk halaman istimewa dan kata magis dapat memiliki beberapa terjemahan.\nSetiap terjemahan dipisahkan dengan tanda koma (,).\nRuang nama hanya boleh memiliki satu terjemahan.\n\nMenerjemahkan ruang nama pembicaraan proyek pembicaraan $1 mungkin cukup rumit.\n$1 akan digantikan dengan nama situs proyek (misalnya {{ns:project_talk}}).\nJika bahasa Anda tidak memungkinkan untuk membentuk suatu frase yang sah tanpa mengganti nama situs, silakan beri tahu kami di [[Support|halaman Dukungan]].\n\nAnda harus menjadi penerjemah untuk menyimpan perubahan.\nPerubahan tidak akan disimpan hingga Anda mengeklik tombol simpan di bawah.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Ambil", - "translate-magic-cm-export": "Ekspor", - "translate-magic-nothing-to-export": "Tidak ada yang dapat diekspor.", - "translate-magic-cm-to-be": "Ubah menjadi", - "translate-magic-cm-current": "Saat ini", - "translate-magic-cm-original": "Asli", - "translate-magic-cm-comment": "Komentar:", - "translate-magic-cm-save": "Simpan", - "translate-magic-cm-updatedusing": "Diperbaharui menggunakan [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Penyimpanan gagal", - "translate-magic-special": "Alias halaman istimewa", - "translate-magic-words": "Kata magis", - "translate-magic-namespace": "Nama ruang nama", - "translate-magic-notsaved": "Suntingan Anda tidak tersimpan!", - "translate-magic-errors": "Mohon perbaiki {{PLURAL:$1|kesalahan|kesalahan}} berikut pada terjemahan:", - "translate-magic-saved": "Perubahan Anda telah disimpan.", - "translate-checks-parameters": "{{PLURAL:$2|Parameter|Parameter}} berikut ini tidak digunakan:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Parameter|Parameter}} berikut ini tidak dikenali:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Parameter|Parameter}} berikut ini tidak digunakan:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Parameter|Parameter}} berikut ini tidak dikenali:\n$1", "translate-checks-balance": "Terdapat {{PLURAL:$2|tanda kurung|tanda kurung}} dengan jumlah yang tidak sama:\n$1", "translate-checks-links": "{{PLURAL:$2|Pranala|Pranala}} berikut ini bermasalah:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Pranala|Pranala}} berikut ini hilang:\n$1", - "translate-checks-xhtml": "Harap ganti {{PLURAL:$2|tag|tag}} berikut ini dengan tag yang tepat:\n$1", "translate-checks-plural": "Definisi menggunakan {{PLURAL:}} namun terjemahannya tidak menggunakannya.", - "translate-checks-plural-forms": "{{PLURAL:}} menghasilkan {{PLURAL:$1|sebuah wujud|$1 buah wujud}} namun {{PLURAL:$2|hanya ada sebuah wujud yang|$2 buah wujud lainnya juga}} didukung (kecuali wujud 0= dan 1=).", - "translate-checks-plural-dupe": "{{PLURAL:}} memiliki wujud yang sama di akhir. {{PLURAL:$1|orang|orang}} seharusnya ditulis menjadi {{PLURAL:$1|orang}}.", + "translate-checks-plural-forms": "{{PLURAL:}} diberikan {{PLURAL:$1|satu bentukan|$1 bentukan}}, namun {{PLURAL:$2|hanya ada satu bentukan|sebenarnya ada $2 buah bentuk}} yang didukung (selain bentukan 0= dan 1=).", + "translate-checks-plural-dupe": "{{PLURAL:}} memiliki bentukan yang sama di akhir. {{PLURAL:$1|sheep|sheep}} seharusnya ditulis menjadi {{PLURAL:$1|sheep}}.", "translate-checks-pagename": "Ruang nama berubah dari definisinya", "translate-checks-format": "Terjemahan ini tidak mengikuti definisi atau memiliki sintaks yang tidak sah: $1", "translate-checks-escape": "''Escape'' berikut mungkin tidak disengaja: $1", "translate-checks-parametersnotequal": "Terdapat {{PLURAL:$1|$1}} parameter; seharusnya ada {{PLURAL:$2|$2}}.", - "translate-checks-malformed": "$1 cacat.", + "translate-checks-malformed": "Bentukan $1 salah.", "translate-checks-fudforum-syntax": "Gunakan $1 bukan $2 pada proyek ini.", - "translate-pref-nonewsletter": "Jangan kirimi saya surel berita", "translate-pref-editassistlang": "Bahasa penunjang:", "prefs-translate": "Opsi terjemahan", "translate-pref-editassistlang-help": "Daftar kode bahasa dipisahkan koma.\nTerjemahan pesan dalam bahasa ini ditampilkan saat Anda menerjemahkan.\nDaftar bahasa baku tergantung pada bahasa Anda.", @@ -114,21 +94,29 @@ "right-translate-import": "Mengimpor terjemahan luring", "action-translate-import": "mengimpor terjemahan luring", "right-translate-messagereview": "Meninjau terjemahan", - "action-translate-messagereview": "tinjau terjemahan", + "action-translate-messagereview": "meninjau terjemahan", "right-translate-groupreview": "Mengubah keadaan alur kerja kelompok pesan", + "action-translate-groupreview": "mengubah keadaan alur kerja kelompok pesan", + "translate-rcfilters-translations": "Terjemahan", + "translate-rcfilters-translations-only-label": "Terjemahan", + "translate-rcfilters-translations-only-desc": "Perubahan pada halaman terjemahan.", + "translate-rcfilters-translations-filter-label": "Bukan terjemahan", + "translate-rcfilters-translations-filter-desc": "Semua perubahan yang bukan terjemahan.", + "translate-rcfilters-translations-site-label": "Pesan situs", + "translate-rcfilters-translations-site-desc": "Penyesuaian pesan situs dalam ruang nama MediaWiki.", "translate-rc-translation-filter": "Saring terjemahan:", "translate-rc-translation-filter-no": "Jangan lakukan apa pun", "translate-rc-translation-filter-only": "Tampilkan hanya terjemahan", - "translate-rc-translation-filter-filter": "Tampilkan selain terjemahan", + "translate-rc-translation-filter-filter": "Jangan sertakan terjemahan", "translate-rc-translation-filter-site": "Hanya perubahan ke pesan situs", "translationstats": "Statistik penerjemahan", - "translate-stats-edits": "Sunting", + "translate-stats-edits": "Suntingan", "translate-stats-users": "Penerjemah", "translate-stats-registrations": "Pendaftaran", "translate-stats-reviews": "Tinjauan", "translate-stats-reviewers": "Peninjau", "translate-statsf-intro": "Anda dapat menciptakan statistik sederhana menggunakan formulir ini. Semua nilai memiliki batas atas dan bawah.", - "translate-statsf-options": "Opsi grafik", + "translate-statsf-options": "Opsi bagan", "translate-statsf-width": "Lebar dalam piksel:", "translate-statsf-height": "Tinggi dalam piksel:", "translate-statsf-days": "Periode waktu dalam hari:", @@ -138,14 +126,14 @@ "translate-statsf-scale-weeks": "Pekan", "translate-statsf-scale-days": "Hari", "translate-statsf-scale-hours": "Jam", - "translate-statsf-count": "Ukuran:", + "translate-statsf-count": "Yang diukur:", "translate-statsf-count-edits": "Jumlah suntingan", "translate-statsf-count-users": "Penerjemah aktif", "translate-statsf-count-registrations": "Pengguna baru", "translate-statsf-count-reviews": "Tinjauan terjemahan", "translate-statsf-count-reviewers": "Peninjau", "translate-statsf-language": "Daftar kode bahasa dipisahkan koma:", - "translate-statsf-group": "Daftar kode kelompok dipisahkan koma.", + "translate-statsf-group": "Daftar kode kelompok dipisahkan koma:", "translate-statsf-submit": "Pratayang", "translate-tag-page-desc": "Terjemahan dari halaman wiki [[$2|$1]] dalam bahasa $3 ($4).", "translate-sidebar-alltrans": "Dalam bahasa lain", @@ -171,14 +159,15 @@ "translate-langstats-collapseall": "ciutkan semua", "translate-language-code": "Kode bahasa", "translate-language-code-field-name": "Kode bahasa:", - "translate-suppress-complete": "Sembunyikan grup yang telah diterjemahkan sepenuhnya", - "translate-ls-noempty": "Sembunyikan grup yang belum diterjemahkan sepenuhnya", + "translate-suppress-complete": "Sembunyikan kelompok pesan yang telah diterjemahkan sepenuhnya", + "translate-ls-noempty": "Sembunyikan kelompok pesan yang belum diterjemahkan sepenuhnya", "translate-language": "Bahasa", "translate-total": "Pesan", "translate-untranslated": "Belum diterjemahkan", - "translate-percentage-complete": "Selesai", + "translate-percentage-complete": "Rampung", "translate-percentage-fuzzy": "Usang", - "translate-languagestats-overall": "Semua kelompok pesan sekaligus", + "translate-percentage-proofread": "Telah ditinjau", + "translate-languagestats-overall": "Total keseluruhan kelompok pesan", "translate-ls-submit": "Tampilkan statistik", "translate-ls-column-group": "Kelompok pesan", "translate-mgs-pagename": "Statistik kelompok pesan", @@ -188,17 +177,18 @@ "translate-mgs-noempty": "Jangan tampilkan bahasa yang tidak memiliki terjemahan", "translate-mgs-submit": "Tampilkan statistik", "translate-mgs-column-language": "Bahasa", - "translate-mgs-totals": "Semua bahasa sekaligus", + "translate-mgs-totals": "Total keseluruhan $1 {{PLURAL:$1|bahasa}}", "translate-mgs-invalid-group": "Kelompok $1 yang dimaksud tidak ditemukan.", "translate-mgs-nothing": "Tidak ada statistik yang dapat ditampilkan.", "supportedlanguages": "Bahasa yang didukung", - "supportedlanguages-summary": "Halaman ini menampilkan daftar semua bahasa yang didukung oleh {{SITENAME}}, beserta nama penerjemah yang bekerja pada bahasa tersebut. Nama penerjemah nampak lebih besar jika telah mereka telah menyumbangkan banyak suntingan. Warna garis bawah menandakan seberapa sering penerjemah tersebut aktif di sini.", + "supportedlanguages-summary": "Halaman ini menampilkan daftar total keseluruhan bahasa yang didukung oleh {{SITENAME}}, beserta nama penerjemah yang mengerjakan bahasa tersebut. Nama penerjemah nampak semakin besar jika mereka telah semakin banyak memberikan kontribusi. Warna garis bawah menandakan apakah seorang penerjemah baru saja aktif di sini.", "supportedlanguages-colorlegend": "Legenda warna: Terjemahan terakhir $1 hari yang lalu.", "supportedlanguages-portallink": "[$1] $2 - $3", "supportedlanguages-portallink-nocldr": "[$1] $2", + "supportedlanguages-sqlite-error": "SQLite tidak didukung", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Penerjemah}}|Penerjemah}}: $1", "supportedlanguages-recenttranslations": "terjemahan terkini", - "supportedlanguages-count": "Total: $1 {{PLURAL:$1|bahasa|bahasa}}.", + "supportedlanguages-count": "Ada $1 {{PLURAL:$1|bahasa|bahasa}} totalnya.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|suntingan|suntingan}} - suntingan terakhir $3 {{PLURAL:$3|hari|hari}} yang lalu", "abusefilter-edit-builder-vars-translate-source-text": "Teks sumber satuan terjemahan", "translate-save": "Simpan ($1)", @@ -208,24 +198,24 @@ "translate-smg-nochanges": "Tidak ada perubahan yang dapat diproses.", "translate-smg-submit": "Kirim perubahan untuk diproses", "translate-smg-submitted": "Definisi pesan telah diperbarui. Perubahan sedang diproses di latar.", - "translate-smg-more": "Akan ada perubahan lainnya untuk diproses setelah menyerahkan perubahan ini.", + "translate-smg-more": "Akan ada perubahan lainnya untuk diproses setelah mengirimkan perubahan ini.", "translate-smg-left": "Konten pesan di wiki", - "translate-smg-right": "Peubahan baru", + "translate-smg-right": "Perubahan baru", "translate-manage-import-diff": "Pesan $1 | Tindakan: $2", "translate-manage-import-new": "Pesan baru $1", - "translate-manage-import-deleted": "Pesan terhapus $1", + "translate-manage-import-deleted": "Pesan $1 terhapus", "translate-manage-action-import": "Impor", - "translate-manage-action-conflict": "Impor dan takjelas", + "translate-manage-action-conflict": "Impor dan tandai perlu diulas", "translate-manage-action-ignore": "Abaikan", - "translate-manage-action-fuzzy": "Terjemahan impor dan takjelas", + "translate-manage-action-fuzzy": "Impor dan tandai perlu diulas terjemahan", "translate-manage-nochanges": "Tidak ada perubahan pada definisi pesan untuk kelompok ini.", "translate-manage-nochanges-other": "Tidak ada perubahan pada bahasa ini.\nGunakan pranala berikut untuk kembali ke tampilan rincian kelompok.", - "translate-manage-inconsistent": "Ketidakkonsistenan terdeteksi pada permintaan.\nPeriksa ulang perubahan yang dilakukan dan cobalah lagi.\nDetail: $1.", - "translate-manage-toolong": "Waktu proses maksimum {{PLURAL:$1||}}$1 detik telah terlampaui.\nMohon kirimkan kembali formulir untuk melanjutkan proses.", - "translate-manage-import-summary": "Impor versi baru dari sumber luar", - "translate-manage-conflict-summary": "Mengimpor versi baru dari sumber luar.\nSilakan diperiksa.", + "translate-manage-inconsistent": "Ketidakkonsistenan terdeteksi pada permintaan.\nPeriksa ulang perubahan lalu coba kembali.\nRincian: $1.", + "translate-manage-toolong": "Waktu proses maksimum $1 {{PLURAL:$1|detik}} telah terlampaui.\nMohon kirimkan kembali formulir untuk melanjutkan proses.", + "translate-manage-import-summary": "Mengimpor versi baru dari sumber eksternal", + "translate-manage-conflict-summary": "Mengimpor versi baru dari sumber eksternal.\nTolong diperiksa.", "translate-manage-submit": "Jalankan", - "translate-manage-intro-other": "Di bawah ini adalah daftar perubahan terjemahan dalam bahasa $1.\nSilakan tinjau perubahan-perubahan ini dan pilihlah tindakan yang ingin Anda lakukan untuk setiap perubahan.\nJika Anda memilih untuk tidak menghiraukan perubahan, tindakan ini hanya bersifat sementara.", + "translate-manage-intro-other": "Di bawah ini adalah daftar perubahan terjemahan dalam bahasa $1.\nSilakan tinjau perubahan ini dan pilih tindakan yang ingin Anda lakukan untuk setiap perubahannya.\nJika Anda memilih untuk tidak mengabaikan perubahan, tindakan ini hanya bersifat sementara.", "translate-manage-import-ok": "Diimpor: $1", "translate-manage-import-done": "Impor selesai!", "importtranslations": "Impor terjemahan", @@ -234,19 +224,18 @@ "translate-import-err-dl-failed": "Tidak dapat mengambil berkas:\n$1", "translate-import-err-ul-failed": "Pengunggahan berkas gagal", "translate-import-err-invalid-title": "Nama berkas $1 yang diberikan tidak sah.", - "translate-import-err-no-such-file": "Berkas $1 tidak ada atau belum di unggah kelokal.", - "translate-import-err-stale-group": "Kelompok pesan berkas ini tidak ditemukan.", - "translate-import-err-no-headers": "Berkas bukan merupakan berkas Gettext dalam format pengaya Translate yang diciptakan dengan benar:\nTidak dapat menentukan grup dan bahasa dari kepala berkas.", - "translate-import-err-warnings": "Berkas ini tidak diciptakan dengan benar.\nPastikan penyunting Anda tidak membuang ''field'' msgctxt.\nDetail: $1", + "translate-import-err-no-such-file": "Berkas $1 tidak ada atau belum diunggah secara lokal.", + "translate-import-err-stale-group": "Kelompok pesan dari berkas ini tidak ditemukan.", + "translate-import-err-no-headers": "Berkas bukan merupakan berkas Gettext dalam format pengaya Translate yang diciptakan dengan benar:\nTidak dapat menentukan kelompok pesan dan bahasa dari kop berkas.", "translate-js-summary": "Ringkasan:", "translate-js-save": "Simpan", "translate-js-next": "Simpan dan buka selanjutnya", - "translate-js-skip": "Lewati ke selanjutnya", - "translate-js-history": "Terjemahan terdahulu", + "translate-js-skip": "Lewati ke pesan selanjutnya", + "translate-js-history": "Riwayat terjemahan", "translate-js-support": "Ajukan pertanyaan", "translate-js-support-title": "Mintalah bantuan jika informasi yang ada tidak cukup untuk menerjemahkan pesan ini dengan benar.", "translate-js-support-unsaved-warning": "Anda memiliki terjemahan yang belum disimpan.", - "translate-gs-pos": "Tingkat.", + "translate-gs-pos": "Posisi", "translate-gs-code": "Kode", "translate-gs-continent": "Benua", "translate-gs-speakers": "Penutur", @@ -261,8 +250,8 @@ "translate-searchprofile-note": "Lebih banyak opsi penelusuran tersedia dalam [$1 penelusuran terjemahan].", "translate-search-languagefilter": "Saring menurut bahasa:", "translate-search-nofilter": "Tanpa penyaringan", - "log-name-translationreview": "Catatan peninjauan terjemahan", - "log-description-translationreview": "Catatan semua tinjauan terhadap terjemahan dan kelompok pesan.", + "log-name-translationreview": "Log peninjauan terjemahan", + "log-description-translationreview": "Log semua tinjauan terjemahan dan kelompok pesan.", "logentry-translationreview-message": "$1 {{GENDER:$2|telah meninjau}} terjemahan $3", "logentry-translationreview-group": "$1 {{GENDER:$2|mengubah}} status terjemahan $4 untuk $3 dari $6 menjadi $7", "group-translate-sandboxed": "Penerjemah yang belum disetujui", @@ -273,19 +262,20 @@ "action-translate-sandboxaction": "menjalankan tindakan yang masuk daftar putih untuk pengguna dalam bak pasir", "translate-workflow-state-": "(tidak ditetapkan)", "translate-workflowstatus": "Status: $1", - "translate-workflow-set-doing": "Sedang menetapkan...", - "translate-workflow-autocreated-summary": "Pembuatan halaman otomatis untuk status alur kerja $1", - "translate-stats-workflow": "Status", - "translate-workflowgroup-label": "Status alur kerja", + "translate-workflow-set-doing": "Menetapkan...", + "translate-workflow-autocreated-summary": "Pembuatan halaman otomatis untuk keadaan alur kerja $1", + "translate-stats-workflow": "Keadaan", + "translate-workflowgroup-label": "Keadaan alur kerja", + "translate-workflowgroup-desc": "Kelompok pesan ini menampilkan keadaan alur kerja terjemahan.\nKeadaan ini didefinisikan dalam variabel konfigurasi $wgTranslateWorkflowStates.", "translate-dynagroup-recent-label": "Terjemahan terkini", - "translate-dynagroup-recent-desc": "Kelompok pesan ini menampilkan seluruh terjemahan terkini dalam bahasa ini.\nSangat berguna ketika mengerjakan tugas peninjauan.", + "translate-dynagroup-recent-desc": "Kelompok pesan ini menampilkan seluruh terjemahan terkini dalam bahasa ini.\nSangat berguna saat mengerjakan tugas peninjauan.", "translate-dynagroup-additions-label": "Penambahan terkini", "translate-dynagroup-additions-desc": "Kelompok pesan ini menampilkan pesan yang baru dan yang telah berubah.", "translate-msggroupselector-projects": "Kelompok pesan", "translate-msggroupselector-search-placeholder": "Cari kelompok", "translate-msggroupselector-search-all": "Semua", "translate-msggroupselector-search-recent": "Terkini", - "translate-msggroupselector-view-subprojects": "$1 {{PLURAL:$1|sub-kelompok|sub-kelompok}}", + "translate-msggroupselector-view-subprojects": "$1 {{PLURAL:$1|subkelompok|subkelompok}}", "tux-languageselector": "Terjemahkan ke", "tux-tab-all": "Semua", "tux-tab-untranslated": "Belum diterjemahkan", @@ -297,7 +287,7 @@ "tux-status-fuzzy": "Usang", "tux-status-proofread": "Telah ditinjau", "tux-status-translated": "Telah diterjemahkan", - "tux-status-saving": "Sedang menyimpan...", + "tux-status-saving": "Menyimpan...", "tux-status-unsaved": "Belum disimpan", "tux-save-unknown-error": "Terjadi galat tak dikenal.", "tux-editor-placeholder": "Terjemahan Anda", @@ -305,11 +295,11 @@ "tux-editor-paste-original-button-label": "Tempel teks sumber", "tux-editor-discard-changes-button-label": "Buang perubahan", "tux-editor-save-button-label": "Simpan terjemahan", - "tux-editor-skip-button-label": "Lewati", + "tux-editor-skip-button-label": "Lewati ke pesan selanjutnya", "tux-editor-cancel-button-label": "Batal", "tux-editor-confirm-button-label": "Konfirmasikan terjemahan", "tux-editor-proofread-button-label": "Tandai sebagai telah ditinjau", - "tux-editor-shortcut-info": "Tekan \"$1\" untuk menyimpan atau \"$2\" untuk lanjut ke pesan selanjutnya atau \"$4\" untuk menyediakan ringkasan atau \"$3\" untuk pintasan lainnya.", + "tux-editor-shortcut-info": "Tekan \"$1\" untuk mengkonfirmasi dan pindah ke pesan selanjutnya, \"$2\" untuk melewatinya, \"$4\" untuk menyediakan ringkasan, atau tahan\"$3\" untuk melihat pintasan lainnya.", "tux-editor-edit-desc": "Sunting dokumentasi", "tux-editor-add-desc": "Tambah dokumentasi", "tux-editor-suggestions-title": "Saran", @@ -317,9 +307,9 @@ "tux-editor-need-more-help": "Butuh bantuan?", "tux-editor-ask-help": "Silakan tanya", "tux-editor-tm-match": "$1% sesuai", - "tux-warnings-more": "{{PLURAL:$1|$1 lagi}}", - "tux-warnings-hide": "sembunyikan", - "tux-editor-save-failed": "Penyimpanan terjemahan gagal: $1", + "tux-notices-more": "{{PLURAL:$1|$1 lagi}}", + "tux-notices-hide": "sembunyikan", + "tux-editor-save-failed": "Gagal menyimpan terjemahan: $1", "tux-editor-n-uses": "digunakan $1 {{PLURAL:$1|kali|kali}}", "tux-editor-message-desc-more": "Tampilkan selengkapnya", "tux-editor-message-desc-less": "Tampilkan seperlunya", @@ -331,12 +321,12 @@ "tux-proofread-action-tooltip": "Tandai sebagai telah ditinjau", "tux-proofread-edit-label": "Sunting", "tux-editor-page-mode": "Halaman", - "tux-editor-outdated-warning": "Terjemahan ini mungkin perlu dimutakhirkan.", - "tux-editor-outdated-warning-diff-link": "Tampilkan perbedaan", + "tux-editor-outdated-notice": "Terjemahan ini mungkin perlu dimutakhirkan.", + "tux-editor-outdated-notice-diff-link": "Tampilkan perbedaan", "tux-editor-doc-editor-placeholder": "Dokumentasi pesan", "tux-editor-doc-editor-save": "Sunting dokumentasi", "tux-editor-doc-editor-cancel": "Batal", - "tux-messagetable-more-messages": "$1 {{PLURAL:$1|pesan|pesan}} lainnya", + "tux-messagetable-more-messages": "$1 {{PLURAL:$1|pesan|pesan}} lagi", "tux-messagetable-loading-messages": "Memuat {{PLURAL:$1|pesan|pesan}}...", "tux-message-filter-placeholder": "Saring daftar", "tux-message-filter-result": "Ditemukan $1 buah {{PLURAL:$1|hasil|hasil}} untuk \"$2\"", @@ -344,8 +334,8 @@ "tux-message-filter-optional-messages-label": "Pesan opsional", "tux-proofread-translated-by-self": "Diterjemahkan oleh Anda", "tux-empty-list-all": "Kelompok pesan ini kosong", - "tux-empty-list-all-guide": "Pilih kelompok pesan lainnya untuk diterjemahkan", - "tux-translate-page-no-such-group": "Kelompok yang diinginkan tidak tersedia. Pilihlah kelompok pesan yang berbeda.", + "tux-empty-list-all-guide": "Pilih kelompok pesan yang lain untuk menerjemahkan", + "tux-translate-page-no-such-group": "Kelompok yang diinginkan tidak tersedia. Pilihlah kelompok pesan yang lain.", "tux-empty-list-translated": "Tidak ada pesan yang telah diterjemahkan", "tux-empty-list-translated-guide": "Anda dapat membantu menerjemahkan", "tux-empty-list-translated-action": "Terjemahkan", @@ -362,19 +352,18 @@ "tux-empty-list-other-action": "Tinjau terjemahan", "tux-empty-list-other-link": "Tampilkan semua pesan", "tux-editor-close-tooltip": "Tutup", - "tux-editor-expand-tooltip": "Bentangkan", + "tux-editor-expand-tooltip": "Luaskan", "tux-editor-collapse-tooltip": "Ciutkan", "tux-editor-message-tools-show-editor": "Tampilkan dalam penyunting wiki", "tux-editor-message-tools-history": "Riwayat", "tux-editor-message-tools-delete": "Hapus", "tux-editor-message-tools-translations": "Semua terjemahan", - "tux-editor-loading": "Sedang memuat...", - "translate-search-more-languages-info": "$1 {{PLURAL:$1|bahasa|bahasa}} lainnya", + "tux-editor-message-tools-linktothis": "Pranala balik pesan ini", + "tux-editor-loading": "Memuat...", + "translate-search-more-languages-info": "$1 {{PLURAL:$1|bahasa|bahasa}} lagi", "translate-statsbar-tooltip": "$1% telah diterjemahkan, $2% telah ditinjau", "translate-statsbar-tooltip-with-fuzzy": "$1% telah diterjemahkan, $2% telah ditinjau, $3% usang", - "translate-search-more-groups-info": "$1 {{PLURAL:$1|kelompok|kelompok}} lainnya", - "translate-ulsdep-title": "Galat konfigurasi", - "translate-ulsdep-body": "Ekstensi Terjemahan bergantung pada [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector ekstensi Pemilihan Bahasa Universal].", + "translate-search-more-groups-info": "$1 {{PLURAL:$1|kelompok|kelompok}} lagi", "tux-session-expired": "Anda sudah tidak lagi masuk log. Silakan masuk log di tab yang terpisah. Atau, buatlah salinan dari terjemahan yang belum disimpan, masuk log, kembali ke halaman ini, lalu masukkan kembali terjemahan Anda.", - "tux-nojs": "Laman ini memerlukan JavaScript." + "tux-nojs": "Perkakas ini tidak dapat bekerja tanpa JavaScript. JavaScript dinonaktifkan, gagal berfungsi, atau peramban ini tidak mendukungnya." } diff --git a/MLEB/Translate/i18n/core/ig.json b/MLEB/Translate/i18n/core/ig.json index db120eb0..45564cfe 100644 --- a/MLEB/Translate/i18n/core/ig.json +++ b/MLEB/Translate/i18n/core/ig.json @@ -1,11 +1,13 @@ { "@metadata": { "authors": [ + "BaRaN6161 TURK", "Ukabia", "Uzoma Ozurumba" ] }, "translate": "Tụ̀wári ásụ̀sụ̀", + "translate-taction-translate": "Tugharia", "translate-page-settings-legend": "Otu ihe dị", "translate-page-group": "Ọtú", "translate-page-language": "Ásụ̀sụ̀", @@ -19,8 +21,6 @@ "translate-ignored": "(atùfùghịrị)", "translate-edit-title": "Mèzi \"$1\"", "translate-edit-definition": "Mkpurụ ómárí ozi", - "translate-magic-cm-to-be": "I-bu", - "translate-magic-cm-save": "Dònye", "translate-rc-translation-filter-no": "Emela ihe obulà", "translate-stats-edits": "Ḿmezi", "translate-stats-users": "Ndi na kuwari asụsụ na asụsụ nke ozor", diff --git a/MLEB/Translate/i18n/core/ilo.json b/MLEB/Translate/i18n/core/ilo.json index 259dc506..58028ee5 100644 --- a/MLEB/Translate/i18n/core/ilo.json +++ b/MLEB/Translate/i18n/core/ilo.json @@ -51,31 +51,11 @@ "translate-use-suggestion": "Sukatan ti agdama panakaipatarus iti daytoy a singasing.", "translate-edit-nopermission": "Masapolmo ti karbengan ti panagipatarus tapno makaipatarus kadagiti mensahe.", "translate-edit-askpermission": "Mangala ti pammalubos", - "translate-magic-pagename": "Naipaatiddog a panagipatarus ti MediaWiki", - "translate-magic-help": "Mabalinmo nga ipatarus dagiti parbo a nagan dagiti espesial a panid, salamangka a balbalikas ken nagnagan ti espasio.\n\nDagiti parbo a nagan ti espesial a panid ken salamangka a pampanid ket mabalinda nga adaan kadagiti adu a pannakaipatarus.\nDagiti patarus ket naisinsina babaen ti koma (,).\nDagiti nagan ti espasio ket mabalin laeng ti maysa a patarus.\n\nMabalin a narigat ti papangipatarus ti nagan ti espasio ti $1 talk a tungtungan ti gandat.\nTi $1 ket sukatan ti nagan ti sitio ti gandat (kas pagarigan {{ns:project_talk}}).\nNo ti pagsasaom ket saan a mabalin ti mangporma ti umiso a panagiyebkas nga awan ti panangibaliw ti nagan ti sitio, pangngaasi a pakaammuandakami idiay [[Support|Suporta]].\n\nNasken nga agipatpataruska tapno maidulin dagiti binaliwan.\nDagiti binaliwan ket saan a maidulin aginggana no pindutem ti buton ti iduin dita baba.", - "translate-magic-module": "Modulo:", - "translate-magic-submit": "Alaen", - "translate-magic-cm-export": "Iluas", - "translate-magic-nothing-to-export": "Awan ti mailuas.", - "translate-magic-cm-to-be": "Ti kuma", - "translate-magic-cm-current": "Agdama", - "translate-magic-cm-original": "Kasisigud", - "translate-magic-cm-comment": "Komentario:", - "translate-magic-cm-save": "Idulin", - "translate-magic-cm-updatedusing": "Pabaruen nga agusar ti [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Napaay ti panagidulin", - "translate-magic-special": "Parbo a nagnagan ti espesial a panid", - "translate-magic-words": "Salamangka a balbalikas", - "translate-magic-namespace": "Nagan ti lugar a nagnagan", - "translate-magic-notsaved": "Ti inurnosmo ket saan a naidulin!", - "translate-magic-errors": "Pangaasi a simpaen {{PLURAL:$1|ti sumaganad a kamali|dagiti sumaganad a kamali}} a naipatarus:", - "translate-magic-saved": "Balligi a naidulin dagiti sinuksukatam.", - "translate-checks-parameters": "{{PLURAL:$2|Ti sumaganad a parametro|Dagiti sumaganad a parametro}} ket saan a nausar:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Ti sumaganad a parametro|Dagiti sumaganad a parametro}} ket di ammo:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Ti sumaganad a parametro|Dagiti sumaganad a parametro}} ket saan a nausar:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Ti sumaganad a parametro|Dagiti sumaganad a parametro}} ket di ammo:\n$1", "translate-checks-balance": "Adda saan nga agtumbas a bilang {{PLURAL:$2|ti parentesis|dagiti parentesis}}:\n$1", "translate-checks-links": "{{PLURAL:$2|Ti sumaganad a silpo|Dagiti sumaganad a $2 a silpo}} ket problematiko:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Ti sumaganad a silpo|Dagiti sumaganad a $2 silpo}} ket awan:\n$1", - "translate-checks-xhtml": "Pangngaasi a sukatan {{PLURAL:$2|ti etiketa|dagiti etiketa}} kadagiti husto:\n$1", "translate-checks-plural": "Ti panangipalawag ket agus-usar ti {{PLURAL:}} ngem ti panangipatarus ket saan.", "translate-checks-plural-forms": "Ti {{PLURAL:}} ket naikkan {{PLURAL:$1|ti maysa a porma|kadagiti $1 a porma}} ngem {{PLURAL:$2|maysa laeng a porma|$2 a porporma}} ti masuportaran (malaksid ti 0= ken 1= a porporma).", "translate-checks-plural-dupe": "Ti {{PLURAL:}} ket addaan ti duplikado a porporma iti gibus. Ti {{PLURAL:$1|karnero|karnero}} ket maisurat kuma a kas {{PLURAL:$1|karnero}}.", @@ -85,7 +65,6 @@ "translate-checks-parametersnotequal": "Ti bilang ti parametro ket {{PLURAL:$1|$1}}; nasken kuma a {{PLURAL:$2|$2}}.", "translate-checks-malformed": "Ti $1 ket nadadael.", "translate-checks-fudforum-syntax": "Usaren ti $1 imbes nga ti $2 iti daytoy a gandat.", - "translate-pref-nonewsletter": "Saannak a patulodan iti esurat ti damdamag", "translate-pref-editassistlang": "Dagiti katakunaynay a pagsasao:", "prefs-translate": "Dagiti pagpilian ti panagipatarus", "translate-pref-editassistlang-help": "Listaan dagiti kodigo ti pagsasao nga insinsina ti koma.\nTi patarus ti mensahe kadagitoy a pagsasao ket maipakita no agipatpataruska.\nTi kasisigud a listan dagiti pagsasao ket depende iti pagsasaom.", @@ -214,7 +193,6 @@ "translate-import-err-no-such-file": "Awan ti papeles ti$1 wenno saan pay a lokal a naikarga.", "translate-import-err-stale-group": "Awan ti grupo ti mensahe nga agtagikua iti daytoy a papeles.", "translate-import-err-no-headers": "Ti papeles ket saan a nasayaat a naporma a papeles iti Gettext iti pormat a pagpaatiddog ti Translate:\nDi naikeddeng ti grupo ti mensahe ken pagsasao manipud kadagiti paulo ti papeles.", - "translate-import-err-warnings": "Saan a nasayaat a naporma daytoy a papeles.\nSiguraduem a ti editormo ket saan nga agikkat kadagiti pagikabilan ti msgctxt.\nDagiti salaysay: $1", "translate-js-summary": "Pakabuklan:", "translate-js-save": "Idulin", "translate-js-next": "Idulin ken lukatan ti sumaruno", @@ -291,8 +269,8 @@ "tux-editor-need-more-help": "Makasapul pay ti adu a tulong?", "tux-editor-ask-help": "Agdamag pay ti adu a pakaammo", "tux-editor-tm-match": "$1% a kapada", - "tux-warnings-more": "{{PLURAL:$1|$1 pay}}", - "tux-warnings-hide": "ilemmeng", + "tux-notices-more": "{{PLURAL:$1|$1 pay}}", + "tux-notices-hide": "ilemmeng", "tux-editor-save-failed": "Napay ti panagidulin ti patarus: $1", "tux-editor-n-uses": "inus-usar ti $1 {{PLURAL:$1|a beses|a besbeses}}", "tux-editor-message-desc-more": "Agkita pay ti adu", @@ -305,8 +283,8 @@ "tux-proofread-action-tooltip": "Markaan a kas narepaso", "tux-proofread-edit-label": "Urnosen", "tux-editor-page-mode": "Panid", - "tux-editor-outdated-warning": "Daytoy a patarus ket mabalin a nasken a mapabaro.", - "tux-editor-outdated-warning-diff-link": "Ipakita dagiti paggiddiatan", + "tux-editor-outdated-notice": "Daytoy a patarus ket mabalin a nasken a mapabaro.", + "tux-editor-outdated-notice-diff-link": "Ipakita dagiti paggiddiatan", "tux-editor-doc-editor-placeholder": "Dokumentasion ti mensahe", "tux-editor-doc-editor-save": "Idulin ti dokumentasion", "tux-editor-doc-editor-cancel": "Ukasen", diff --git a/MLEB/Translate/i18n/core/inh.json b/MLEB/Translate/i18n/core/inh.json index f014f0ad..45f698a3 100644 --- a/MLEB/Translate/i18n/core/inh.json +++ b/MLEB/Translate/i18n/core/inh.json @@ -1,11 +1,13 @@ { "@metadata": { "authors": [ - "Умар", "Adam-Yourist", - "ElizaMag" + "ElizaMag", + "Умар" ] }, + "translate": "Таржам", + "translate-taction-translate": "Таржам", "translate-page-group": "Тоаба", "translate-page-language": "Мотт", "translate-edit-translation": "Таржам", @@ -14,10 +16,15 @@ "translate-rcfilters-translations-filter-label": "Таржамаш дац", "translations": "Деррига таржамаш", "translate-language": "Мотт", + "translate-ls-column-group": "Хоамий тоаба", + "translate-mgs-group": "Хоамий тоаба:", "translate-mgs-column-language": "Мотт", "translate-documentation-language": "Хоам бара документаци", "translate-searchprofile": "Таржамаш", + "translate-msggroupselector-projects": "Хоамий тоаба", "translate-msggroupselector-search-all": "Деррига", + "tux-languageselector": "Таржам де укх меттала", "tux-tab-all": "Деррига", + "tux-empty-list-translated-action": "Таржам де", "tux-editor-message-tools-translations": "Деррига таржамаш" } diff --git a/MLEB/Translate/i18n/core/io.json b/MLEB/Translate/i18n/core/io.json index f7152651..486103ff 100644 --- a/MLEB/Translate/i18n/core/io.json +++ b/MLEB/Translate/i18n/core/io.json @@ -1,15 +1,18 @@ { "@metadata": { "authors": [ - "Malafaya", - "Wyvernoid", + "Joao Xavier", "Lakaoso", - "Joao Xavier" + "Malafaya", + "Wyvernoid" ] }, "translate": "Traduko", + "translate-taction-translate": "Tradukuro", + "translate-taction-proofread": "Revizuri", "translate-taction-lstats": "Linguala statistiki", "translate-taction-mstats": "Statistiki pri grupi di mesaji", + "translate-taction-export": "Exportacar", "translate-page-no-such-language": "La linguo selektita esas nevalida.", "translate-page-disabled": "Tradukuri ad ica linguo en ica grupo ne permisesas.\nMotivo:\n\n$1", "translate-page-group": "Grupo", @@ -26,25 +29,27 @@ "translate-edit-information": "Informo pri mesajo ($1)", "translate-edit-in-other-languages": "Mesajo en altra lingui", "translate-edit-warnings": "Avizi pri nekompleta tradukuri", - "translate-magic-submit": "Serchez", - "translate-magic-cm-current": "Aktuala", - "translate-magic-cm-comment": "Komento:", - "translate-magic-cm-save": "Registragar", - "translate-magic-namespace": "Nomi di la nomari", - "translate-magic-notsaved": "Vua redakto ne konservesis!", + "translate-use-suggestion": "Substitucar la nuna tradukuro per ca sugesto.", + "translate-checks-parameters": "Atencez! La sequanta {{PLURAL:$2|parametro|parametri}} ne uzesis:\n$1", + "translate-checks-parameters-unknown": "La sequanta {{PLURAL:$2|parametro|parametri}} esas nekonocata:\n$1", "translate-checks-balance": "Existas neegala quanto di {{PLURAL:$2|parentezo|parentezi}}:\n$1", - "translate-pref-nonewsletter": "Ne sendez \"newsletters\" a me per e-posto", + "translate-checks-links": "La sequanta {{PLURAL:$2|ligilo|$2 ligili}} havas problemi:\n$1", + "translate-checks-links-missing": "La sequanta {{PLURAL:$2|ligilo|$2 ligili}} mankas:\n$1", + "translate-checks-gettext-plural-missing": "Ca tradukuro mustas havar {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "Ca mesajo ne aceptas {{PLURAL:GETTEXT|}}.", "translate-pref-editassistlang-help": "Listo pri kodexo di lingui separata per komo (,).\nLa tradukuro di ula mesajo en ica lingui montresas dum ke vu tradukas.\nLa listo 'default' pri lingui dependas de vua propra linguo.", "translate-pref-editassistlang-bad": "Linguala kodexo nevalida che la listo:\n$1.", "translate-rc-translation-filter-only": "Montrez nur tradukuri", "translate-stats-edits": "Editi", - "translate-stats-users": "Tradukisti", + "translate-stats-users": "Tradukeri", + "translate-stats-reviews": "Revizuri", "translate-statsf-scale": "Tempo-skalo:", "translate-statsf-scale-months": "Monati", "translate-statsf-scale-weeks": "Semani", "translate-statsf-scale-days": "Dii", "translate-statsf-scale-hours": "Hori", "translate-statsf-submit": "Previdar", + "translate-tag-page-desc": "Tradukuro de la pagino wiki [[$2|$1]], de $3 ($4).", "translate-sidebar-alltrans": "En altra lingui", "translations": "Omna tradukuri", "translations-summary": "Skribez la titulo di ula mesajo adinfre, por montrar omna tradukuri disponebla.", @@ -57,6 +62,7 @@ "languagestats-stats-for": "Statistiki pri tradukuro $1 ($2).", "languagestats-recenttranslations": "recenta tradukuri", "translate-langstats-expand": "Montrez", + "translate-langstats-collapse": "Celez", "translate-langstats-expandall": "expansar omna", "translate-langstats-collapseall": "rekoliar omna", "translate-language-code": "Linguala kodexo", @@ -72,15 +78,19 @@ "translate-mgs-pagename": "Statistiki pri la grupo di mesaji", "translate-mgs-fieldset": "Montrez preferaji", "translate-mgs-group": "Grupo di mesaji:", + "translate-mgs-column-language": "Linguo", "supportedlanguages": "Suportita lingui", "supportedlanguages-summary": "Ica pagino montras listo pri omna lingui suportida da {{SITENAME}}, kune la nomi di la tradukeri qui verkas en singla de la lingui.\nLa nomo dil tradukero videsas tante plu granda kam la quanto di redakti quin ilu facabas.\nLa koloro dil substrekizo indikas quan recenta esas la verko dil tradukero hike.", "supportedlanguages-colorlegend": "Skalo di kolori: Lasta modifikuri dum la $1 dii.", + "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Tradukero}}|Tradukeri}}: $1", "supportedlanguages-recenttranslations": "recenta tradukuri", "supportedlanguages-count": "Entote $1 {{PLURAL:$1|linguo|lingui}}.", + "translate-supportedlanguages-cached": "Ca informo konservesis $1 ante nun.", "translate-save": "Registragar ($1)", "managemessagegroups": "Administrado di mesajo-grupi", "translate-smg-nochanges": "Existas nula modifiki por procedar.", "translate-smg-left": "Kontenajo di la mesajo en la Wiki", + "translate-manage-import-rename-summary": "Rinomizita en extera fonto", "translate-import-err-stale-group": "Ne existas la mesajo-grupo a quo ica arkivo apartenas.", "translate-js-skip": "Saltez a la sequanta", "translate-js-support": "Questionar", @@ -92,7 +102,9 @@ "translate-dynagroup-additions-label": "Recenta adjuntaji", "translate-dynagroup-additions-desc": "Ica mesajo-grupo montras ambe la nova e la modifikita mesaji.", "translate-msggroupselector-projects": "Grupo di mesaji", + "translate-msggroupselector-search-placeholder": "Serchez grupi", "translate-msggroupselector-search-all": "Omni", + "tux-languageselector": "Tradukez a(d)", "tux-tab-all": "Omna", "tux-tab-untranslated": "Ne tradukita", "tux-tab-outdated": "Sen aktualigo", @@ -104,22 +116,41 @@ "tux-editor-discard-changes-button-label": "Eliminar modifikuri", "tux-editor-save-button-label": "Sparez la tradukuro", "tux-editor-skip-button-label": "Saltez a la sequanta", + "tux-editor-cancel-button-label": "Nuligar", "tux-editor-shortcut-info": "Kliktez \"$1\" por konservar, o \"$2\" por saltar a la sequanta mesajo, o \"$4\" por furnisar rezumo, o \"$3\" por altra plu kurta voyi tra la klavaro.", "tux-editor-edit-desc": "Redaktar dokumentigo", + "tux-editor-add-desc": "Adjuntez dokumenti", "tux-editor-suggestions-title": "Sugesti", + "tux-editor-in-other-languages": "En altra lingui", "tux-editor-need-more-help": "Ka vu bezonas plusa helpo?", "tux-editor-ask-help": "Demandez plusa informi", + "tux-notices-more": "{{PLURAL:$1|$1 pluse}}", "tux-editor-save-failed": "Faliis pri konservar la tradukuro: $1", + "tux-editor-n-uses": "uzita $1 {{PLURAL:$1|foyo|foyi}}", "tux-editor-message-desc-more": "Montrez pluse", "tux-editor-message-desc-less": "Montrez mine", "tux-editor-clear-translated": "Celar facita tradukuri", - "tux-editor-outdated-warning": "Ica tradukuro posible esas obsoleta.", - "tux-editor-outdated-warning-diff-link": "Montrez diferi", + "tux-editor-proofreading-mode": "Revizuri", + "tux-editor-page-mode": "Pagino", + "tux-editor-outdated-notice": "Ica tradukuro posible esas obsoleta.", + "tux-editor-outdated-notice-diff-link": "Montrez diferi", + "tux-editor-doc-editor-placeholder": "Dokumentado pri la mesajo", + "tux-editor-doc-editor-save": "Konservez dokumenturo", "tux-editor-doc-editor-cancel": "Anular", + "tux-messagetable-more-messages": "$1 plusa {{PLURAL:$1|mesajo|mesaji}}", + "tux-messagetable-loading-messages": "Karganta {{PLURAL:$1|mesajo|mesaji}}...", + "tux-message-filter-placeholder": "Filtrez listo", + "tux-message-filter-optional-messages-label": "Fakultativa mesaji", + "tux-empty-list-translated-action": "Tradukar", + "tux-empty-there-are-optional": "Existas fakultativa mesaji, ne montrata en ca listo", "tux-empty-list-other": "Nulo por tradukar", + "tux-empty-list-other-guide": "Vu povas helpar per revizo di existanta tradukuri", "tux-empty-list-other-action": "Revizar tradukuri", "tux-empty-list-other-link": "Montrez omna mesaji", "tux-editor-message-tools-show-editor": "Montrar en la redakto-buxo dil Wiki", + "tux-editor-message-tools-delete": "Efacar", "tux-editor-message-tools-translations": "Omna tradukuri", - "tux-editor-message-tools-linktothis": "Ligilo ad ica mesajo" + "tux-editor-message-tools-linktothis": "Ligilo ad ica mesajo", + "translate-statsbar-tooltip": "$1% tradukita, $2% revizita", + "tux-nojs": "Ca utensilo ne funcionas sen JavaScript. Sive JavaScript esas nekapabligata, sive ne funcionis, sive vua interreto-navigilo ('browser') ne suportas ol." } diff --git a/MLEB/Translate/i18n/core/is.json b/MLEB/Translate/i18n/core/is.json index 7a1e41fc..86748d9b 100644 --- a/MLEB/Translate/i18n/core/is.json +++ b/MLEB/Translate/i18n/core/is.json @@ -55,33 +55,17 @@ "translate-edit-askpermission": "Fá réttindi", "exporttranslations": "Flytja út þýðingar", "translate-export-form-format": "Snið", - "translate-magic-module": "Eining:", - "translate-magic-submit": "Sækja", - "translate-magic-cm-export": "Flytja", - "translate-magic-nothing-to-export": "Það er ekkert til að flytja út.", - "translate-magic-cm-to-be": "Verðandi", - "translate-magic-cm-current": "Núverandi", - "translate-magic-cm-original": "Upprunalega", - "translate-magic-cm-comment": "Athugasemd:", - "translate-magic-cm-save": "Vista", - "translate-magic-cm-savefailed": "Vistun mistókst", - "translate-magic-special": "Aukanefni kerfissíðna", - "translate-magic-namespace": "Heiti nafnrýma", - "translate-magic-notsaved": "Vistun breytingarinnar þinnar mistókst!", - "translate-magic-errors": "Vinsamlegast lagaðu eftirfarandi {{PLURAL:$1|villu|villur}} í þýðingunni:", - "translate-checks-parameters": "Eftirfarandi {{PLURAL:$2|færibreyta er ekki notuð|færibreytur eru ekki notaðar}}:\n$1", - "translate-checks-parameters-unknown": "Eftirfarandi {{PLURAL:$2|færibreyta er óþekkt|færibreytur eru óþekktar}}:\n$1", + "translate-checks-parameters": "Eftirfarandi {{PLURAL:$2|færibreyta er ekki notuð|færibreytur eru ekki notaðar}}:\n$1", + "translate-checks-parameters-unknown": "Eftirfarandi {{PLURAL:$2|færibreyta er óþekkt|færibreytur eru óþekktar}}:\n$1", "translate-checks-balance": "Ójafn fjöldi {{PLURAL:$2|sviga}}:\n$1", "translate-checks-links": "Eftirfarandi {{PLURAL:$2|tengill er vafasamur|$2 tenglar eru vafasamir}}:\n$1", "translate-checks-links-missing": "Eftirfarandi {{PLURAL:$2|tengil|$2 tengla}} vantar:\n$1", - "translate-checks-xhtml": "Vinsamlegast skiptu út eftirfarandi {{PLURAL:$2|tagi|tögum}} fyrir þau réttu:\n$1", "translate-checks-plural": "Skilgreiningin notar {{PLURAL:}} en ekki þýðingin.", "translate-checks-pagename": "Nafnrýmið er annað en í skilgreiningunni.", "translate-checks-format": "Þýðingin fylgir ekki skilgreiningunni eða hefur ógilda málskipan: $1", "translate-checks-parametersnotequal": "Fjöldi stika er {{PLURAL:$1|$1}}, en ætti að vera {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 er ógilt.", "translate-checks-fudforum-syntax": "Notaðu $1 í staðinn fyrir $2 í þessu verkefni.", - "translate-pref-nonewsletter": "Ekki senda mér rafrænt fréttabréf", "translate-pref-editassistlang": "Aðstoðar tungumál:", "prefs-translate": "Stillingar þýðinga", "translate-pref-editassistlang-help": "Listi yfir tungumálakóða, aðskildir með kommu.\nSkilaboðin eru sýnd á þessum tungumálum þegar þú þýðir skilaboð.\nSjálfvirkur listi tungumála fer eftir tungumáli þínu.", @@ -158,6 +142,7 @@ "translate-untranslated": "Óþýtt", "translate-percentage-complete": "Lokið", "translate-percentage-fuzzy": "Úrelt", + "translate-percentage-proofread": "Yfirfarið", "translate-languagestats-overall": "Allir þýðingahópar saman", "translate-ls-submit": "Birta tölfræði", "translate-ls-column-group": "Þýðingahópur", @@ -260,8 +245,8 @@ "tux-editor-need-more-help": "Þarftu meiri hjálp?", "tux-editor-ask-help": "Spyrja um frekari upplýsingar", "tux-editor-tm-match": "$1% samsvörun", - "tux-warnings-more": "{{PLURAL:$1|$1 meira}}", - "tux-warnings-hide": "fela", + "tux-notices-more": "{{PLURAL:$1|$1 meira}}", + "tux-notices-hide": "fela", "tux-editor-save-failed": "Vistun þýðingar mistókst: $1", "tux-editor-n-uses": "notað $1 {{PLURAL:$1|sinni|sinnum}}", "tux-editor-message-desc-more": "Skoða meira", @@ -274,8 +259,8 @@ "tux-proofread-action-tooltip": "Merkja sem yfirfarið", "tux-proofread-edit-label": "Breyta", "tux-editor-page-mode": "Síða", - "tux-editor-outdated-warning": "Þessa þýðingu þyrfti kannski að uppfæra.", - "tux-editor-outdated-warning-diff-link": "Sýna mun", + "tux-editor-outdated-notice": "Þessa þýðingu þyrfti kannski að uppfæra.", + "tux-editor-outdated-notice-diff-link": "Sýna mun", "tux-editor-doc-editor-placeholder": "Leiðbeiningar þýðingastrengs", "tux-editor-doc-editor-save": "Vista leiðbeiningar", "tux-editor-doc-editor-cancel": "Hætta við", diff --git a/MLEB/Translate/i18n/core/it.json b/MLEB/Translate/i18n/core/it.json index 68fc6c6b..8ef4c538 100644 --- a/MLEB/Translate/i18n/core/it.json +++ b/MLEB/Translate/i18n/core/it.json @@ -1,25 +1,26 @@ { "@metadata": { "authors": [ + "Albe Albe460", "Amire80", + "Anto", "Aushulz", "Beta16", "BrokenArrow", "Civvì", "Darth Kule", "F. Cosoleto", + "Fringio", "Gianfranco", "Klutzy", + "Matteocng", "McDutchie", "Melos", "Nemo bis", "Pietrodn", "Shirayuki", "VittGam", - "Vituzzu", - "Matteocng", - "Anto", - "Fringio" + "Vituzzu" ] }, "translate": "Traduzione", @@ -74,41 +75,30 @@ "translate-export-invalid-format": "Specifica un formato valido.", "translate-export-not-supported": "L'esportazione delle traduzioni non è supportata.", "translate-export-format-notsupported": "Il formato di esportazione specificato non è supportato dal gruppo messaggi.", - "translate-magic-pagename": "Traduzione estesa di MediaWiki", - "translate-magic-help": "Puoi tradurre gli alias delle pagine speciali, le parole magiche e i nomi dei namespace.\n\nGli alias delle pagine speciali e le parole magiche possono avere più traduzioni.\nLe traduzioni sono separate da una virgola (,).\nI namespace possono avere solo una traduzione.\n\nTradurre il namespace di discussione delle pagine di progetto $1 talk può essere complicato. $1 viene sostituito con il nome del sito (per esempio {{ns:project_talk}}).\nSe non è possibile formare un'espressione valida nella tua lingua senza cambiare il nome del sito, per favore contatta il [[Support]].\n\nDevi essere un traduttore per salvare le modifiche.\nLe modifiche non vengono salvate finché non clicchi sul pulsante \"Salva\" sotto.", - "translate-magic-module": "Modulo:", - "translate-magic-submit": "Riporta", - "translate-magic-cm-export": "Esporta", - "translate-magic-nothing-to-export": "Non c'è nulla da esportare.", - "translate-magic-cm-to-be": "Nuovo", - "translate-magic-cm-current": "Attuale", - "translate-magic-cm-original": "Originale", - "translate-magic-cm-comment": "Commento:", - "translate-magic-cm-save": "Salva", - "translate-magic-cm-updatedusing": "Aggiornato usando [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Salvataggio fallito", - "translate-magic-special": "Alias delle pagine speciali", - "translate-magic-words": "Parole magiche", - "translate-magic-namespace": "Nomi dei namespace", - "translate-magic-notsaved": "La modifica non è stata salvata!", - "translate-magic-errors": "Correggere {{PLURAL:$1|il seguente errore|i seguenti errori}} nelle traduzioni:", - "translate-magic-saved": "Le modifiche sono state salvate.", - "translate-checks-parameters": "{{PLURAL:$2|Il seguente parametro non è stato usato|I seguenti parametri non sono stati usati}}: $1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Il seguente parametro è sconosciuto|I seguenti parametri sono sconosciuti}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Il seguente parametro non è stato usato|I seguenti parametri non sono stati usati}}: $1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Il seguente parametro è sconosciuto|I seguenti parametri sono sconosciuti}}:\n$1", "translate-checks-balance": "C'è un numero di {{PLURAL:$2|parentesi}} ineguale: $1", "translate-checks-links": "{{PLURAL:$2|Il seguente collegamento è problematico|I seguenti $2 collegamenti sono problematici}}: $1", "translate-checks-links-missing": "{{PLURAL:$2|Il seguente collegamento è mancante|I seguenti $2 collegamenti sono mancanti}}:\n$1", - "translate-checks-xhtml": "Sostituire {{PLURAL:$2|il marcatore seguente|i marcatori seguenti}} con quelli corretti: $1", "translate-checks-plural": "La definizione usa {{PLURAL:}} ma la traduzione no.", "translate-checks-plural-forms": "{{PLURAL:}} è stato usato con {{PLURAL:$1|una forma|$1 forme}}, ma {{PLURAL:$2|è accettata solo una forma|sono accettate $2 forme}} (a parte le forme 0= e 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} contiene una forma duplicata. {{PLURAL:$1|città|città}} dovrebbe essere scritto come {{PLURAL:$1|città}}.", + "translate-checks-gettext-plural-missing": "Questa traduzione deve avere {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "Questo messaggio non supporta {{PLURAL:GETTEXT|}}.", + "translate-checks-unicode-plural-missing": "Questa traduzione deve avere {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "Questo messaggio non supporta {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "La forma plurale dovrebbe essere definita come $1. Questa traduzione contiene $2.", "translate-checks-pagename": "Namespace cambiato rispetto alla definizione", "translate-checks-format": "Questa traduzione non segue la definizione o ha una sintassi non valida: $1", - "translate-checks-escape": "I seguenti cambi di codice potrebbero essere accidentali: $1", + "translate-checks-escape": "{{PLURAL:$2|Il seguente carattere di escape potrebbe essere accidentale|I seguenti caratteri di escape potrebbero essere accidentali}}: $1. {{PLURAL:$4|Un carattere escape valido è|I caratteri escape validi sono:}} $3.", "translate-checks-parametersnotequal": "Il numero dei parametri è {{PLURAL:$1|$1}}; dovrebbe essere {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 non è corretto.", "translate-checks-fudforum-syntax": "In questo progetto usare $1 invece di $2.", - "translate-pref-nonewsletter": "Non mandarmi la newsletter per e-mail", + "translate-checks-newline-missing-start": "{{PLURAL:$1|C'è|Ci sono}} $1 {{PLURAL:$1|carattere|caratteri}} di nuova riga mancanti all'inizio della traduzione.", + "translate-checks-newline-missing-end": "{{PLURAL:$1|C'è|Ci sono}} $1 {{PLURAL:$1|carattere|caratteri}} di nuova riga mancanti alla fine della traduzione.", + "translate-checks-newline-extra-start": "{{PLURAL:$1|C'è|Ci sono}} $1 {{PLURAL:$1|carattere|caratteri}} di nuova riga in più all'inizio della traduzione.", + "translate-checks-newline-extra-end": "{{PLURAL:$1|C'è|Ci sono}} $1 {{PLURAL:$1|carattere|caratteri}} di nuova riga in più alla fine della traduzione.", + "translate-checks-replacement": "Usa $2 anziché $1.", "translate-pref-editassistlang": "Lingue di confronto:", "prefs-translate": "Opzioni di traduzione", "translate-pref-editassistlang-help": "Codici delle lingue separati da virgola.\nLe traduzioni di un messaggio in queste lingue sono mostrate durante la traduzione.\nL'elenco predefinito (default) delle lingue dipende dalla propria lingua.", @@ -215,7 +205,7 @@ "supportedlanguages-count": "$1 {{PLURAL:$1|lingua|lingue}} in totale.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|modifica|modifiche}} - ultima modifica $3 {{PLURAL:$3|giorno|giorni}} fa", "abusefilter-edit-builder-vars-translate-source-text": "Testo di origine di un'unità di traduzione", - "translate-save": "Salva ($1)", + "translate-save": "Pubblica ($1)", "translate-jssti-add": "Aggiungi all'elenco", "managemessagegroups": "Gestione del gruppo di messaggi", "translate-smg-notallowed": "Non sei autorizzato a eseguire questa azione.", @@ -225,6 +215,10 @@ "translate-smg-more": "Ci saranno ulteriori cambiamenti da trattare dopo l'invio di queste modifiche.", "translate-smg-left": "Contenuto del messaggio nel wiki", "translate-smg-right": "Modifiche in arrivo", + "translate-smg-rename-select": "Seleziona", + "translate-smg-rename-cancel": "Annulla", + "translate-smg-rename-no-msg": "Nessun messaggio trovato.", + "translate-smg-rename-new": "Aggiungi come nuovo...", "translate-manage-import-diff": "Messaggio $1 | Azioni: $2", "translate-manage-import-new": "Nuovo messaggio $1", "translate-manage-import-deleted": "Cancellato messaggio $1", @@ -251,15 +245,14 @@ "translate-import-err-no-such-file": "Il file $1 non esiste o non è stato caricato a livello locale.", "translate-import-err-stale-group": "Il gruppo di messaggi a cui appartiene questo file non esiste.", "translate-import-err-no-headers": "Il file non è un file Gettext correttamente formattato per l'estensione Translate:\nImpossibile determinare il gruppo di messaggi e la lingua dalle intestazioni del file.", - "translate-import-err-warnings": "Il file non è ben formattato, assicurarsi che il proprio editor non rimuova i campi msgctxt.\nDettagli: $1", "translate-js-summary": "Oggetto:", - "translate-js-save": "Salva", - "translate-js-next": "Salva e passa al successivo", + "translate-js-save": "Pubblica", + "translate-js-next": "Pubblica e passa al successivo", "translate-js-skip": "Passa al successivo", "translate-js-history": "Cronologia traduzione", "translate-js-support": "Fai una domanda", "translate-js-support-title": "Richiesta d'assistenza nel caso non si trovino sufficienti informazioni per tradurre questo messaggio.", - "translate-js-support-unsaved-warning": "Ci sono traduzioni non salvate.", + "translate-js-support-unsaved-warning": "Ci sono traduzioni non pubblicate.", "translate-gs-pos": "Pos.", "translate-gs-code": "Codice", "translate-gs-continent": "Continente", @@ -312,14 +305,14 @@ "tux-status-fuzzy": "Da aggiornare", "tux-status-proofread": "Revisionata", "tux-status-translated": "Tradotto", - "tux-status-saving": "Salvataggio...", - "tux-status-unsaved": "Non salvate", + "tux-status-saving": "Pubblicazione...", + "tux-status-unsaved": "Non pubblicate", "tux-save-unknown-error": "Si è verificato un errore sconosciuto.", "tux-editor-placeholder": "La tua traduzione", "tux-editor-editsummary-placeholder": "Oggetto facoltativo", "tux-editor-paste-original-button-label": "Incolla il testo sorgente", "tux-editor-discard-changes-button-label": "Ignora modifiche", - "tux-editor-save-button-label": "Salva traduzione", + "tux-editor-save-button-label": "Pubblica traduzione", "tux-editor-skip-button-label": "Passa al successivo", "tux-editor-cancel-button-label": "Annulla", "tux-editor-confirm-button-label": "Conferma traduzione", @@ -332,9 +325,9 @@ "tux-editor-need-more-help": "Hai bisogno di aiuto?", "tux-editor-ask-help": "Chiedi per maggiori informazioni", "tux-editor-tm-match": "$1 % di corrispondenza", - "tux-warnings-more": "$1 {{PLURAL:$1|altro|altri}}", - "tux-warnings-hide": "nascondi", - "tux-editor-save-failed": "Errore durante il salvataggio della traduzione: $1", + "tux-notices-more": "$1 {{PLURAL:$1|altro|altri}}", + "tux-notices-hide": "nascondi", + "tux-editor-save-failed": "Errore durante la pubblicazione della traduzione: $1", "tux-editor-n-uses": "usato $1 {{PLURAL:$1|volta|volte}}", "tux-editor-message-desc-more": "Mostra altri", "tux-editor-message-desc-less": "Mostra meno", @@ -346,10 +339,10 @@ "tux-proofread-action-tooltip": "Contrassegna come revisionata", "tux-proofread-edit-label": "Modifica", "tux-editor-page-mode": "Pagina", - "tux-editor-outdated-warning": "Questa traduzione deve essere aggiornata.", - "tux-editor-outdated-warning-diff-link": "Mostra le differenze", + "tux-editor-outdated-notice": "Questa traduzione deve essere aggiornata.", + "tux-editor-outdated-notice-diff-link": "Mostra le differenze", "tux-editor-doc-editor-placeholder": "Documentazione del messaggio", - "tux-editor-doc-editor-save": "Salva la documentazione", + "tux-editor-doc-editor-save": "Pubblica documentazione", "tux-editor-doc-editor-cancel": "Annulla", "tux-messagetable-more-messages": "$1 {{PLURAL:$1|altro messaggio|altri messaggi}}", "tux-messagetable-loading-messages": "Carico {{PLURAL:$1|messaggio|messaggi}}...", @@ -389,8 +382,8 @@ "translate-statsbar-tooltip": "$1% tradotti, $2% revisionati", "translate-statsbar-tooltip-with-fuzzy": "$1% tradotti, $2% revisionati, $3% da aggiornare", "translate-search-more-groups-info": "$1 {{PLURAL:$1|altro gruppo|altri gruppi}}", - "translate-ulsdep-title": "Errore di configurazione", - "translate-ulsdep-body": "L'estensione Translate dipende dall'[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector estensione Universal Language Selector].", + "translate-syntax-error": "La traduzione contiene errori di sintassi", "tux-session-expired": "Non hai effettuato l'accesso. Accedi in una scheda separata; o in alternativa copia la traduzione non salvata, accedi, ritorna in questa pagina e inserisci nuovamente la tua traduzione.", - "tux-nojs": "Questo strumento non funziona senza JavaScript. JavaScript potrebbe essere disattivato, non ha funzionato o questo browser non è supportato." + "tux-nojs": "Questo strumento non funziona senza JavaScript. JavaScript potrebbe essere disattivato, non ha funzionato o questo browser non è supportato.", + "specialpages-group-translation": "Traduzione" } diff --git a/MLEB/Translate/i18n/core/ja.json b/MLEB/Translate/i18n/core/ja.json index 934f81ac..6e01bbbf 100644 --- a/MLEB/Translate/i18n/core/ja.json +++ b/MLEB/Translate/i18n/core/ja.json @@ -1,32 +1,35 @@ { "@metadata": { "authors": [ + "2nd-player", + "Afaz", "Akaniji", "Aotake", "Fryed-peach", + "Gminky", "Hosiryuhosi", "JtFuruhata", + "Kkairri", "Klutzy", "Marine-Blue", "Naohiro19", "Ohgi", + "Omotecho", + "Otokoume", + "Rxy", "Schu", "Shirayuki", + "Sujiniku", "Whym", + "神樂坂秀吉", "青子守歌", - "아라", - "Rxy", - "Sujiniku", - "Otokoume", - "2nd-player", - "Gminky", - "Omotecho", - "Afaz" + "아라" ] }, "translate": "翻訳", "translate-extensionname": "翻訳", "translate-desc": "MediaWiki やその他のものを翻訳するための[[Special:Translate|特別ページ]]", + "translate-fuzzybot-desc": "これは、MediaWikiの[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate Translate拡張機能]が、翻訳のメンテナンスに使用する特別なシステム・アカウントです。\nこのアカウントはMediaWikiソフトウェアの一部であり、利用者によって所有されていません。", "translate-taskui-export-to-file": "ネイティブ形式で書き出し", "translate-taskui-export-as-po": "オフライン翻訳のために書き出し", "translate-taction-translate": "翻訳", @@ -73,55 +76,44 @@ "translate-edit-askpermission": "権限を取得", "exporttranslations": "翻訳の書き出し", "translate-export-form-format": "形式", + "translate-export-invalid-format": "有効な形式を指定してください。", "translate-export-not-supported": "翻訳の書き出しはサポートされていません。", - "translate-magic-pagename": "拡張MediaWiki翻訳", - "translate-magic-help": "特別ページへのエイリアス、マジックワード、名前空間名を翻訳できます。\n\n特別ページへのエイリアスとマジックワードには複数の翻訳を当てられます。\n複数の翻訳がある場合はカンマ (,) で区切ってください。\n名前空間名には 1 つの翻訳のみを当てられます。\n\nプロジェクトのトーク名前空間 $1 talk の翻訳は複雑かもしれません。\n$1 はプロジェクトのサイト名に置換されます (例: {{ns:project_talk}})。\nあなたの言語において、サイト名の変更なしでは正しく表現できない場合は、[[Support]] にお問い合わせください。\n\nあなたが翻訳者であれば、変更を保存できます。\n下の保存ボタンをクリックするまで、変更内容は保存されません。", - "translate-magic-module": "モジュール:", - "translate-magic-submit": "取得", - "translate-magic-cm-export": "書き出し", - "translate-magic-nothing-to-export": "書き出せるものはありません。", - "translate-magic-cm-to-be": "変更後", - "translate-magic-cm-current": "現在", - "translate-magic-cm-original": "元の内容", - "translate-magic-cm-comment": "編集内容の要約:", - "translate-magic-cm-save": "保存", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]による更新に成功しました", - "translate-magic-cm-savefailed": "保存に失敗しました", - "translate-magic-special": "特別ページの別名", - "translate-magic-words": "マジックワード", - "translate-magic-namespace": "名前空間名", - "translate-magic-notsaved": "編集は保存されませんでした!", - "translate-magic-errors": "翻訳内の以下の{{PLURAL:$1|エラー}}を修正してください:", - "translate-magic-saved": "変更を保存しました。", - "translate-checks-parameters": "以下の{{PLURAL:$2|パラメーター}}が使用されていません:\n$1", - "translate-checks-parameters-unknown": "以下の{{PLURAL:$2|パラメーター}}が未定義です:\n$1", + "translate-export-format-notsupported": "指定された書き出しの形式は、メッセージ群でサポートされていません。", + "translate-checks-parameters": "以下の{{PLURAL:$2|パラメーター}}が使用されていません:\n$1", + "translate-checks-parameters-unknown": "以下の{{PLURAL:$2|パラメーター}}が未定義です:\n$1", "translate-checks-balance": "{{PLURAL:$2|括弧}}の個数が一致していません:\n$1", "translate-checks-links": "以下の{{PLURAL:$2|リンク|​ $2 個のリンク}}に問題点があります:\n$1", "translate-checks-links-missing": "以下の{{PLURAL:$2|リンク|​ $2 個のリンク}}がありません:\n$1", - "translate-checks-xhtml": "以下の{{PLURAL:$2|タグ}}を正しいものに書き換えてください:\n$1", "translate-checks-plural": "定義に{{PLURAL:}}がありますが、翻訳にはありません。", "translate-checks-plural-forms": "{{PLURAL:}} で {{PLURAL:$1|$1 形式}}を指定しましたが、{{PLURAL:$2|1 形式のみ|$2 形式}}に対応しています (0= 形式および 1= 形式を除く)。", "translate-checks-plural-dupe": "{{PLURAL:}} での指定が重複しています。{{PLURAL:$1|sheep|sheep}} であれば {{PLURAL:$1|sheep}} と書いてください。", + "translate-checks-gettext-plural-missing": "この翻訳には{{PLURAL:GETTEXT|}}が必要です。", + "translate-checks-gettext-plural-unsupported": "このメッセージは{{PLURAL:GETTEXT|}}をサポートしていません。", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}}には正確に$1 {{PLURAL:$1|複数形|複数形}}のみ当てはまります。現在、$2 {{PLURAL:$2|複数形が|複数形が}}入力されています。", + "translate-checks-unicode-plural-missing": "この翻訳には{{PLURAL|}}が必要です。", + "translate-checks-unicode-plural-unsupported": "このメッセージは{{PLURAL|}}をサポートしていません。", + "translate-checks-unicode-plural-invalid": "複数形の定義は$1にする必要があります。この翻訳には$2が含まれています。", "translate-checks-pagename": "名前空間が変更されており、定義と異なっています", "translate-checks-format": "この翻訳は定義に沿っていない、または無効な構文を使用しています: $1", - "translate-checks-escape": "以下のエスケープは偶発的なものかもしれません: $1", + "translate-checks-escape": "以下のエスケープ{{PLURAL:$2|文字列}}は偶発的なものかもしれません: $1。{{PLURAL:$4|有効なエスケープ記号}}は$3です。", "translate-checks-parametersnotequal": "引数の数が{{PLURAL:$1|$1}}個ですが、{{PLURAL:$2|$2}}個である必要があります。", "translate-checks-malformed": "$1 の形式に誤りがあります。", "translate-checks-fudforum-syntax": "このプロジェクトでは$2の代わりに$1を使用します。", - "translate-pref-nonewsletter": "メールのニュースレターを受け取らない", + "translate-checks-newline-missing-start": "翻訳の冒頭で新しい行の{{PLURAL:$1|文字列|文字列}}$1個{{PLURAL:$1|が|が}}不足しています。", "translate-pref-editassistlang": "補助言語:", "prefs-translate": "翻訳設定", "translate-pref-editassistlang-help": "言語コードをカンマ区切りで列挙します。\n翻訳中に、これらの言語での翻訳が表示されます。\n既定の言語一覧は、自身の言語により変化します。", "translate-pref-editassistlang-bad": "無効な言語コードを含んでいます:\n$1", "right-translate": "翻訳用インターフェイスを使用して編集", + "action-translate": "翻訳用インターフェイスを使用した編集", "right-translate-manage": "メッセージ群を管理", "action-translate-manage": "メッセージ群の管理", "right-translate-import": "オフラインでの翻訳を取り込み", "action-translate-import": "オフラインでの翻訳の取り込み", "right-translate-messagereview": "翻訳を査読", - "action-translate-messagereview": "翻訳を査読", + "action-translate-messagereview": "翻訳の査読", "right-translate-groupreview": "メッセージ群のワークフローの状態を変更", - "action-translate-groupreview": "メッセージ群のワークフローの状態を変更", + "action-translate-groupreview": "メッセージ群のワークフローの状態の変更", "translate-rcfilters-translations": "翻訳", "translate-rcfilters-translations-only-label": "翻訳", "translate-rcfilters-translations-only-desc": "翻訳ページの変更。", @@ -210,11 +202,13 @@ "supportedlanguages-colorlegend": "色の凡例: 最後の翻訳が $1 日前", "supportedlanguages-portallink": "[$1] $2 - $3", "supportedlanguages-portallink-nocldr": "[$1] $2", + "supportedlanguages-sqlite-error": "SQLiteはサポートされていません", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|翻訳者}}|翻訳者}}: $1", "supportedlanguages-recenttranslations": "最近の翻訳", "supportedlanguages-count": "合計 $1 {{PLURAL:$1|言語}}", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|回の編集}}・$3 {{PLURAL:$3|日}}前に最終編集", - "abusefilter-edit-builder-vars-translate-source-text": "翻訳する単位の翻訳原文", + "abusefilter-edit-builder-vars-translate-source-text": "翻訳単位の原文", + "abusefilter-edit-builder-vars-translate-target-language": "翻訳先言語", "translate-save": "保存 ($1)", "translate-jssti-add": "追加", "managemessagegroups": "メッセージ群の管理", @@ -222,9 +216,16 @@ "translate-smg-nochanges": "処理する変更はありません。", "translate-smg-submit": "処理するために変更を送信", "translate-smg-submitted": "メッセージの定義が更新されました。変更をバックグラウンドで処理しています。", + "translate-smg-submitted-with-failure": "以下の{{PLURAL:$1|グループ|グループ}} についてメッセージの{{PLURAL:$1|定義|定義}} に失敗しました - $2。 $3", "translate-smg-more": "これらの変更を送信した後にさらに処理するべき変更があります。", "translate-smg-left": "ウィキ内のメッセージ本文", "translate-smg-right": "新着の差分", + "translate-smg-rename-select": "選択", + "translate-smg-rename-cancel": "中止", + "translate-smg-rename-search": "適合するメッセージの検索……", + "translate-smg-rename-select-err": "改名するメッセージを選択してください", + "translate-smg-rename-no-msg": "メッセージが見つかりません。", + "translate-smg-rename-dialog-title": "$1に適した改名を選択", "translate-manage-import-diff": "メッセージ $1 | 操作: $2", "translate-manage-import-new": "新しいメッセージ $1", "translate-manage-import-deleted": "削除されたメッセージ $1", @@ -232,11 +233,15 @@ "translate-manage-action-conflict": "取り込んで要更新にする", "translate-manage-action-ignore": "無視", "translate-manage-action-fuzzy": "翻訳を取り込んで要更新の印を付ける", + "translate-manage-action-rename-fuzzy": "改名して要更新の印を付ける", + "translate-manage-action-rename": "改名", + "translate-manage-action-ignore-change": "翻訳の変更を無視", "translate-manage-nochanges": "この群のメッセージの定義には変更はありません。", "translate-manage-nochanges-other": "この言語が対応すべき変更はありませんでした。\n下のリンクをクリックするとメッセージ群の詳細画面に戻ります。", "translate-manage-inconsistent": "リクエスト内で矛盾を検出しました。\n変更点を確認してから、再度試してください。\n詳細: $1", "translate-manage-toolong": "処理時間の最大値である$1秒を超過しました。処理を続行するにはフォームを再投稿してください。", "translate-manage-import-summary": "外部ソースから新しい版を取り込み", + "translate-manage-import-rename-summary": "外部のソースで改名済み", "translate-manage-conflict-summary": "外部ソースから新しい版を取り込み中。\n確認してください。", "translate-manage-submit": "実行", "translate-manage-intro-other": "以下は言語 $1 での翻訳の変更の一覧です。\nそれぞれの更新について、変更を精査して、行いたい操作を選択してください。\n変更を無視することを選択した場合、この操作は一時的なものに留まります。", @@ -251,7 +256,6 @@ "translate-import-err-no-such-file": "ファイル $1 は存在しないか、ローカルにアップロードされていません。", "translate-import-err-stale-group": "このファイルが所属するメッセージ群は存在しません。", "translate-import-err-no-headers": "ファイルが Translate 拡張機能の形式に正しく適応した gettext ファイルではありません。\nファイル ヘッダーからメッセージ群と言語を決定できませんでした。", - "translate-import-err-warnings": "このファイルは形式が正しくありません。\nあなたが使用したエディターが msgctxt フィールドを除去していないか確認してください。\n詳細: $1", "translate-js-summary": "要約:", "translate-js-save": "保存", "translate-js-next": "保存して次を開く", @@ -277,7 +281,7 @@ "translate-search-nofilter": "すべて表示", "log-name-translationreview": "翻訳査読記録", "log-description-translationreview": "翻訳とメッセージ群に対するすべての査読の記録", - "logentry-translationreview-message": "$1 が $3 の翻訳を{{GENDER:$2|査読}}", + "logentry-translationreview-message": "$1 が $3 の翻訳を{{GENDER:$2|査読}}しました", "logentry-translationreview-group": "$1 が $3 の $4 の翻訳の状態を $6 から $7 に{{GENDER:$2|変更}}", "group-translate-sandboxed": "未承認の翻訳者", "group-translate-sandboxed-member": "{{GENDER:$1|未承認の翻訳者}}", @@ -332,8 +336,8 @@ "tux-editor-need-more-help": "助けが必要ですか?", "tux-editor-ask-help": "詳細について質問する", "tux-editor-tm-match": "$1%の一致", - "tux-warnings-more": "{{PLURAL:$1|他 $1 件}}", - "tux-warnings-hide": "非表示", + "tux-notices-more": "{{PLURAL:$1|他 $1 件}}", + "tux-notices-hide": "非表示", "tux-editor-save-failed": "翻訳の保存に失敗しました: $1", "tux-editor-n-uses": "$1 {{PLURAL:$1|回}}使用", "tux-editor-message-desc-more": "続きを表示", @@ -346,8 +350,8 @@ "tux-proofread-action-tooltip": "査読済の印を付ける", "tux-proofread-edit-label": "編集", "tux-editor-page-mode": "ページ", - "tux-editor-outdated-warning": "この翻訳は修正が必要かもしれません。", - "tux-editor-outdated-warning-diff-link": "差分を表示", + "tux-editor-outdated-notice": "この翻訳は修正が必要かもしれません。", + "tux-editor-outdated-notice-diff-link": "差分を表示", "tux-editor-doc-editor-placeholder": "メッセージについての説明文", "tux-editor-doc-editor-save": "説明文を保存", "tux-editor-doc-editor-cancel": "キャンセル", @@ -389,8 +393,8 @@ "translate-statsbar-tooltip": "$1% 翻訳済、$2% 査読済", "translate-statsbar-tooltip-with-fuzzy": "$1% 翻訳済、$2% 査読済、$3% 要更新", "translate-search-more-groups-info": "他 $1 {{PLURAL:$1|メッセージ群}}", - "translate-ulsdep-title": "設定エラー", - "translate-ulsdep-body": "Translate 拡張機能は [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector Universal Language Selector 拡張機能]を必要とします。", + "translate-syntax-error": "翻訳に構文エラーが含まれています", "tux-session-expired": "ログインしていない状態になっています。別のタブでログインしてください。できない場合は、未保存の翻訳をコピーしておいて、ログインして、このページに戻ってきて、翻訳ページに入り直してください。", - "tux-nojs": "このツールの動作には JavaScript が必要です。JavaScript が無効、作動していないもしくはブラウザーがサポートされていません。" + "tux-nojs": "このツールの動作には JavaScript が必要です。JavaScript が無効、作動していないもしくはブラウザーがサポートされていません。", + "specialpages-group-translation": "翻訳" } diff --git a/MLEB/Translate/i18n/core/jam.json b/MLEB/Translate/i18n/core/jam.json index 029d584a..964fe986 100644 --- a/MLEB/Translate/i18n/core/jam.json +++ b/MLEB/Translate/i18n/core/jam.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Yocahuna", - "Katxis" + "Katxis", + "Yocahuna" ] }, "translate": "Chransliet", @@ -35,6 +35,5 @@ "translate-edit-warnings": "Waanin bout inkompliit chranslieshan", "translate-edit-tmmatch": "$1% mach", "translate-use-suggestion": "Insoert dis sojeshan ina di chranslieshan ieria. Dis riplies aal korant kantent.", - "translate-magic-pagename": "Extendid MediaWiki chranslieshan", "translate-documentation-language": "Mechiz dakiumentieshan" } diff --git a/MLEB/Translate/i18n/core/jbo.json b/MLEB/Translate/i18n/core/jbo.json index cd645f22..39724016 100644 --- a/MLEB/Translate/i18n/core/jbo.json +++ b/MLEB/Translate/i18n/core/jbo.json @@ -2,14 +2,13 @@ "@metadata": { "authors": [ "Gleki", - "Xbony2", - "Olwe519" + "Olwe519", + "Xbony2" ] }, "translate-page-edit": "stika ti", "translate-edit-title": "stika $1", "translate-edit-in-other-languages": "lo notci poi se bangu lo drata", - "translate-magic-cm-save": "gau se vreji", "translate-rc-translation-filter": "pagrygau lo xe fanva", "translate-stats-edits": "stika", "translate-stats-users": "le fanva", @@ -25,7 +24,7 @@ "tux-edit": "stika", "tux-editor-cancel-button-label": "kansele", "tux-editor-in-other-languages": "bau lo drata", - "tux-warnings-hide": "cancygau", + "tux-notices-hide": "cancygau", "tux-proofread-edit-label": "stika", "tux-editor-page-mode": "lo papri", "tux-editor-doc-editor-cancel": "kansele", diff --git a/MLEB/Translate/i18n/core/jut.json b/MLEB/Translate/i18n/core/jut.json index 566b263e..72f20e2d 100644 --- a/MLEB/Translate/i18n/core/jut.json +++ b/MLEB/Translate/i18n/core/jut.json @@ -4,7 +4,6 @@ "Jyllanj" ] }, - "translate-magic-notsaved": "Din redigiireng ä ett djiemen!", "translations": "Åll öwesättelse", "translate-documentation-language": "Beskeddokumentasjon" } diff --git a/MLEB/Translate/i18n/core/jv.json b/MLEB/Translate/i18n/core/jv.json index 1abebbe7..9ab194d2 100644 --- a/MLEB/Translate/i18n/core/jv.json +++ b/MLEB/Translate/i18n/core/jv.json @@ -1,16 +1,18 @@ { "@metadata": { "authors": [ + "Bennylin", + "Diki Ananta", "Kaganer", "Meursault2004", "NoiX180", "Pras", - "Bennylin" + "Sumbukompor" ] }, "translate": "Pertal", "translate-extensionname": "Pertal", - "translate-desc": "[[Special:Translate|Kaca mirunggan]] kanggo mertal MediaWiki lan liyané", + "translate-desc": "[[Special:Translate|Kaca mirunggan]] kanggo mertal MédiaWiki lan liyané", "translate-taskui-export-to-file": "Èspor nganggo format asli", "translate-taskui-export-as-po": "Èspor kanggo pertalan njaban jaringan", "translate-taction-translate": "Pertal", @@ -36,66 +38,45 @@ "translate-next": "Kaca sabanjuré", "translate-prev": "Kaca sadurungé", "translate-page-description-legend": "Katerangan ngenani golongané", - "translate-page-description-hasoptional": "Golongan layang iki ngemu layang-layang manasuka.\nLayang manasuka kapertal mung manawa basané panjenengan duwé kabutuhan mirunggan kaya ta ora nganggo sepasi utawa ngalihaksara jeneng. $1", + "translate-page-description-hasoptional": "Golongan layang iki ngemu layang-layang manasuka.\nLayang manasuka kapertal mung manawa basamu duwé kabutuhan mirunggan kaya ta ora nganggo sepasi utawa ngalihaksara jeneng. $1", "translate-page-description-hasoptional-open": "Tuduhaké layang manasuka.", "translate-page-edit": "besut", "translate-optional": "(manasuka)", "translate-ignored": "(dilirwakaké)", "translate-edit-title": "Besut \"$1\"", - "translate-edit-definition": "Wedharané layang", + "translate-edit-definition": "Wedharaning layang", "translate-edit-translation": "Pertalan", "translate-edit-contribute": "nyumbang", - "translate-edit-no-information": "Layang iki ora ana dhokumèntasiné.\nManawa panjenengan ngerti ana ngendi lan kepiyé layang iki dianggo, panjenengan bisa ngéwangi pamertal liyané kanthi nambahaké dhokumèntasi nyang layang iki.", + "translate-edit-no-information": "Layang iki ora ana dhokumèntasiné.\nManawa kowé ngerti ana ing endi lan kapriyé layang iki kaanggo, kowé bisa ngéwangi kang mertal liyané kanthi nambahaké dhokumèntasi menyang layang iki.", "translate-edit-information": "Pratélan ngenani layang ($1)", "translate-edit-in-other-languages": "Layang ing basa liya", "translate-edit-warnings": "Pepéling bab pertalan kang durung rampung", "translate-edit-tmmatch-source": "Tulisan sumber pertalan: $1", "translate-edit-tmmatch": "$1% cocog", "translate-use-suggestion": "Ganti pertalan saiki nganggo saran iki.", - "translate-edit-nopermission": "Panjenengan butuh hak pamertal saperlu mertal layang.", + "translate-edit-nopermission": "Kowé kudu duwé hak mertal saperlu mertal layang.", "translate-edit-askpermission": "Nyuwun palilah", "exporttranslations": "Èspor pertalan", "translate-export-form-format": "Format", "translate-export-invalid-format": "Sumangga isi mawa format kang trep.", "translate-export-not-supported": "Èspor pertalan ora kasengkuyung.", "translate-export-format-notsupported": "Format èspor kang koisèkaké ora disengkuyung golongan layangé.", - "translate-magic-pagename": "Pertalan MediaWiki mirunggan", - "translate-magic-help": "Panjenengan bisa mertal aliyasé kaca mirunggan, tembung ajaib, lan jeneng mandala aran.\n\nAliasé kaca mirunggan lan tembung ajaib bisa ngemu manéka pertalan.\nPertalan kaletan komah (,).\nMandala aran mung ngemu sapertalan.\n\nMertal mandala aran parembugan proyèk parembugan $1 bokmanawa angèl. $1 kudu panjenengan ganti mawa jeneng situsé proyèk (contoné {{ns:project_talk}}).\nYèn basané panjenengan mokal ngripta pitembungan kang trep tanpa ngowahi jenengé situs, sumangga ngubungi [[Support]].\n\nPanjenengan kudu dadi juru pamertal saperlu nyimpen owah-owahan.\nOwah-owahané mokal panjenengan simpen nganti panjenengan klik tombol simpen ing ngisor.", - "translate-magic-module": "Modhul:", - "translate-magic-submit": "Jupuk", - "translate-magic-cm-export": "Èspor", - "translate-magic-nothing-to-export": "Ora ana kang kudu panjenegan èspor.", - "translate-magic-cm-to-be": "Kudu dadi", - "translate-magic-cm-current": "Saiki", - "translate-magic-cm-original": "Asli", - "translate-magic-cm-comment": "Tanggepan:", - "translate-magic-cm-save": "Simpen", - "translate-magic-cm-updatedusing": "Dianyari sarana [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Wurung kasimpen", - "translate-magic-special": "Aliyas kaca mirunggan", - "translate-magic-words": "Tembung ajaib", - "translate-magic-namespace": "Jeneng mandala aran", - "translate-magic-notsaved": "Besutanmu ora kasimpen!", - "translate-magic-errors": "Dandanana {{PLURAL:$1|masalah}} iki ing pertalan:", - "translate-magic-saved": "Owahané panjenengan wis kasimpen.", - "translate-checks-parameters": "{{PLURAL:$2|Paramèter}} iki ora dianggo:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Paramèter}} iki ora kaweruhan:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Paramèter}} iki ora dianggo:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Paramèter}} iki ora kaweruhan:\n$1", "translate-checks-balance": "Cacahing {{PLURAL:$2|pangapit|pangapit-pangapit}} ora seimbang:\n$1", "translate-checks-links": "{{PLURAL:$2|Pranala|Pranala-pranala}} iki nduwèni masalah:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Pranala|Pranala-pranala}} iki ilang:\n$1", - "translate-checks-xhtml": "Gantinen {{PLURAL:$2|tenger|tenger-tenger}} iki nganggo tenger kang mathuk:\n$1", "translate-checks-plural": "Wedharané nganggo {{PLURAL:}} nanging pertalané ora.", - "translate-checks-pagename": "Mandala aran diowah saka wedharané", + "translate-checks-pagename": "Mandhala aran owah saka wedharané", "translate-checks-format": "Pertalan iki ora manut wedharané utawa ora trep sintaksisé: $1", "translate-checks-parametersnotequal": "Itungan paramèter {{PLURAL:$1|$1}}; kuduné {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 salah format.", "translate-checks-fudforum-syntax": "Anggonen $1 tinimbang $2 ing proyèk iki.", - "translate-pref-nonewsletter": "Aja kirimi aku pawarta layang-èl", "translate-pref-editassistlang": "Basa panyengkuyung:", "prefs-translate": "Pilihan pertalan", - "translate-pref-editassistlang-help": "Pratélan kodhe basa kang dipisah komah.\nPertalan layang ing basa iki bakal katuduhaké nalika panjenengan pinuju mertal.\nPratélan basa baku gumantung ing basané panjenengan.", + "translate-pref-editassistlang-help": "Pratélan kodhe basa kang kapisah komah.\nPertalan layang ing basa iki bakal katuduhaké nalika kowé pinuju mertal.\nPratélan basa baku gumantung ing basamu.", "translate-pref-editassistlang-bad": "Kodhe basa ora trep ing pratélan:\n$1.", - "right-translate": "Mbesut sarana antarmuka jarwan", + "right-translate": "Mbesut sarana mukantara jarwan", "right-translate-manage": "Kemunah golongan layang", "action-translate-manage": "kemunah golongan layang", "right-translate-import": "Impor pertalan njaban jaringan", @@ -133,7 +114,7 @@ "translate-statsf-count": "Ukuran:", "translate-statsf-count-edits": "Cacahing besutan", "translate-statsf-count-users": "Pamertal aktif", - "translate-statsf-count-registrations": "Panganggo anyar", + "translate-statsf-count-registrations": "Naraguna anyar", "translate-statsf-count-reviews": "Pepriksan pertalan", "translate-statsf-count-reviewers": "Pamriksa", "translate-statsf-language": "Pratélan kodhe basa kang kapisah komah:", @@ -181,8 +162,8 @@ "translate-mgs-submit": "Tuduhaké statistik", "translate-mgs-column-language": "Basa", "translate-mgs-totals": "Kabèh $1 {{PLURAL:$1|basa|basa}}", - "translate-mgs-invalid-group": "Golongan $1 kang panjenengan karsakaké ora ana.", - "translate-mgs-nothing": "Ora ana kang bisa katuduhaké bab statistik kang panjenengan karsakaké.", + "translate-mgs-invalid-group": "Golongan $1 kang kokarsakaké ora ana.", + "translate-mgs-nothing": "Ora ana kang bisa katuduhaké bab statistik kang kokarsakaké.", "supportedlanguages": "Basa kang kasengkuyung", "supportedlanguages-colorlegend": "Legèndha tumrap werna: Pertalan pungkasan $1 dina kapungkur.", "supportedlanguages-portallink": "[$1] $2 - $3", @@ -190,12 +171,12 @@ "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Pamertal}}|Pamertal}}: $1", "supportedlanguages-recenttranslations": "pertalan mentas waé", "supportedlanguages-count": "$1 {{PLURAL:$1|basa}} kabèhé.", - "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|besutan}} - dibesut pungkasan $3 {{PLURAL:$3|dina}} kapungkur", + "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|besutan}} - besutan pungkasan $3 {{PLURAL:$3|dina}} kapungkur", "abusefilter-edit-builder-vars-translate-source-text": "Tèks sumberé unit pertalan", "translate-save": "Simpen ($1)", "translate-jssti-add": "Tambah ing pratélan", "managemessagegroups": "Tata kemunah golongan layang", - "translate-smg-notallowed": "Panjenengan ora dililakaké nglakokaé iki.", + "translate-smg-notallowed": "Kowé ora kawogan nglakokaé iki.", "translate-smg-nochanges": "Ora ana owah-owahan kang bisa kaprosès.", "translate-smg-submit": "Kirim owahan kanggo diprosès", "translate-smg-submitted": "Wedharan layang wis dianyari. Owah-owahan lagi digarap ing latar wuri.", @@ -212,7 +193,7 @@ "translate-manage-nochanges": "Ora ana owah-owahan ngenani wedharan layang kanggo golongan iki.", "translate-manage-nochanges-other": "Ora ana owah-owahan tumrap basa iki.\nAnggonen pranala ngisor iki kanggo bali nyang sesawangan rerincèn golongan.", "translate-manage-import-summary": "Ngimpor vèrsi anyar saka sumber njaba", - "translate-manage-conflict-summary": "Ngimpor vèrsi anyar saka sumber njaba.\nSumangga panjenengan priksani.", + "translate-manage-conflict-summary": "Ngimpor vèrsi anyar saka sumber njaba.\nMangga kopriksa.", "translate-manage-submit": "Ayahi", "translate-manage-import-ok": "Diimpor: $1", "translate-manage-import-done": "Rampung ngimpor!", @@ -225,15 +206,14 @@ "translate-import-err-no-such-file": "Barkas $1 ora ana utawa durung diunggah ing papan lokal.", "translate-import-err-stale-group": "Golongan layangé barkas iki ora ana.", "translate-import-err-no-headers": "Barkasé dudu barkas Gettext kang karipta kanthi becik nganggo format èstènsi Pertal:\nOra bisa nemtokaké golongan lan basané layang saka sesirahé barkas.", - "translate-import-err-warnings": "Barkas ora diyasa kanthi becik.\nPesthèkaké pambesuté panjenengan ora mbusak babagan msgctxt.\nRerincèn: $1", "translate-js-summary": "Ringkesan:", "translate-js-save": "Simpen", "translate-js-next": "Simpen lan bukak sabanjuré", - "translate-js-skip": "Langkahi menyang sabanjuré", + "translate-js-skip": "Lumpati menyang sabanjuré", "translate-js-history": "Sajarah pertalan", "translate-js-support": "Takon", "translate-js-support-title": "Njaluk pitulung yèn ora ana cukup informasi kanggo nerjemahaké layang iki kanthi bener.", - "translate-js-support-unsaved-warning": "Ana pertalané panjenengan kang durung kasimpen.", + "translate-js-support-unsaved-warning": "Ana pertalanmu kang durung kasimpen.", "translate-gs-pos": "Pos.", "translate-gs-code": "Kodhe", "translate-gs-continent": "Bawana", @@ -254,8 +234,8 @@ "logentry-translationreview-message": "$1 {{GENDER:$2|mriksa}} pertalan $3", "group-translate-sandboxed": "Juru pamertal kang durung katampa", "group-translate-sandboxed-member": "{{GENDER:$1|juru pamertal kang durung katampa}}", - "right-translate-sandboxmanage": "Kemunah panganggo ing bak wedhi", - "action-translate-sandboxmanage": "kemunah panganggo ing bak wedhi", + "right-translate-sandboxmanage": "Kemunah naraguna ing bak wedhi", + "action-translate-sandboxmanage": "kemunah naraguna ing bak wedhi", "translate-workflow-state-": "(durung disetel)", "translate-workflowstatus": "Status: $1", "translate-workflow-set-doing": "Nyetèl...", @@ -283,24 +263,24 @@ "tux-status-saving": "Nyimpen...", "tux-status-unsaved": "Durung kasimpen", "tux-save-unknown-error": "Ana masalah kang ora kaweruhan.", - "tux-editor-placeholder": "Pertalané panjenengan", + "tux-editor-placeholder": "Pertalanmu", "tux-editor-editsummary-placeholder": "Ringkesan manasuka", "tux-editor-paste-original-button-label": "Templèkaké tulisan sumber", "tux-editor-discard-changes-button-label": "Buwang owahan", "tux-editor-save-button-label": "Simpen pertalan", - "tux-editor-skip-button-label": "Langkahi menyang sabanjuré", + "tux-editor-skip-button-label": "Lumpati menyang sabanjuré", "tux-editor-cancel-button-label": "Wurung", "tux-editor-confirm-button-label": "Iyai pertalan", "tux-editor-proofread-button-label": "Tandhani manawa wis dipriksa", "tux-editor-edit-desc": "Besut dhokumèntasi", "tux-editor-add-desc": "Tambah dhokumèntasi", - "tux-editor-suggestions-title": "Saran", + "tux-editor-suggestions-title": "Pamrayogya", "tux-editor-in-other-languages": "Ing basa liyané", "tux-editor-need-more-help": "Butuh pitulung?", "tux-editor-ask-help": "Takona supaya olèh katerangan luwih akèh", "tux-editor-tm-match": "$1% cocog", - "tux-warnings-more": "{{PLURAL:$1|$1 liyané}}", - "tux-warnings-hide": "dhelikaké", + "tux-notices-more": "{{PLURAL:$1|$1 liyané}}", + "tux-notices-hide": "dhelikaké", "tux-editor-save-failed": "Wurung nyimpen pertalan: $1", "tux-editor-n-uses": "dianggo {{PLURAL:$1|ping}} $1", "tux-editor-message-desc-more": "Tuduhaké liyané", @@ -308,13 +288,13 @@ "tux-editor-clear-translated": "Dhelikaké kang wis kapertal", "tux-editor-proofreading-mode": "Priksa", "tux-editor-translate-mode": "Pratélan", - "tux-editor-proofreading-hide-own-translations": "Dhelikaké pertalané panjenengan", - "tux-editor-proofreading-show-own-translations": "Tuduhaké pertalané panjenengan", + "tux-editor-proofreading-hide-own-translations": "Dhelikaké pertalanmu", + "tux-editor-proofreading-show-own-translations": "Tuduhaké pertalanmu", "tux-proofread-action-tooltip": "Tandhani manawa wis dipriksa", "tux-proofread-edit-label": "Besut", "tux-editor-page-mode": "Kaca", - "tux-editor-outdated-warning": "Pertalan iki butuh dianyari.", - "tux-editor-outdated-warning-diff-link": "Tuduhaké béda", + "tux-editor-outdated-notice": "Pertalan iki butuh dianyari.", + "tux-editor-outdated-notice-diff-link": "Tuduhaké béda", "tux-editor-doc-editor-placeholder": "Dhokumèntasi layang", "tux-editor-doc-editor-save": "Simpen dhokumèntasi", "tux-editor-doc-editor-cancel": "Wurung", @@ -324,23 +304,23 @@ "tux-message-filter-result": "Tinemu $1 {{PLURAL:$1|kasil}} ngenani \"$2\"", "tux-message-filter-advanced-button": "Panggolèk linuwih", "tux-message-filter-optional-messages-label": "Layang manasuka", - "tux-proofread-translated-by-self": "Kapertal déning panjenengan", + "tux-proofread-translated-by-self": "Kapertal déning kowé", "tux-empty-list-all": "Golongan layang iki kosong", "tux-empty-list-all-guide": "Pilih golongan layang séjé saperlu kapertal", - "tux-translate-page-no-such-group": "Golongan kang panjenengan karsakaké ora ana. Pilih golongan layang liyané.", + "tux-translate-page-no-such-group": "Golongan kang kokarsakaké ora ana. Pilih golongan layang liyané.", "tux-empty-list-translated": "Ora ana layang kang kapertal", - "tux-empty-list-translated-guide": "Panjenengan bisa ngéwangi mertal", + "tux-empty-list-translated-guide": "Kowé bisa ngéwangi mertal", "tux-empty-list-translated-action": "Pertal", "tux-empty-no-messages-to-display": "Ora ana layang kanggo dituduhaké.", "tux-empty-there-are-optional": "Ana layang manasuka kang ora kapacak ing pratélan", "tux-empty-show-optional-messages": "Tuduhaké layang manasuka", "tux-empty-no-outdated-messages": "Ora ana layang lawas", "tux-empty-nothing-to-proofread": "Ora ana kang bisa kapriksa", - "tux-empty-you-can-help-providing": "Panjenengan kena ngéwangi gawé pertalan anyar", + "tux-empty-you-can-help-providing": "Kowé kena ngéwangi gawé pertalan anyar", "tux-empty-nothing-new-to-proofread": "Ora ana kang anyar kang bisa kapriksa", - "tux-empty-you-can-review-already-proofread": "Panjenengan bisa mriksa pertalan kang wis dipriksa wong liya.", + "tux-empty-you-can-review-already-proofread": "Kowé bisa mriksa pertalan kang wis dipriksa wong liya.", "tux-empty-list-other": "Ora ana kang kena kapertal", - "tux-empty-list-other-guide": "Panjenengan bisa ngéwangi mriksa pertalan kang ana", + "tux-empty-list-other-guide": "Kowé bisa ngéwangi mriksa pertalan kang ana", "tux-empty-list-other-action": "Priksa pertalan", "tux-empty-list-other-link": "Tuduhaké kabèh layang", "tux-editor-close-tooltip": "Tutup", @@ -355,8 +335,6 @@ "translate-statsbar-tooltip": "$1% wis kapertal, $2% wis kapriksa", "translate-statsbar-tooltip-with-fuzzy": "$1% wis kapertal, $2% wis kapriksa, $3% wis lawas", "translate-search-more-groups-info": "$1 {{PLURAL:$1|golongan}} liyané", - "translate-ulsdep-title": "Masalah konfigurasi", - "translate-ulsdep-body": "Èkstènsi pertalan gumantung [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector èkstènsi Sèlèktor Basa Global].", - "tux-session-expired": "Panjenengan wis ora mlebu log manèh. Mlebua log lumantar tab séjé. Utawa, turuna pertalan kang durung kasimpen, mlebua log, balia menyang kaca iki banjur isinen manèh pertalané panjenengan.", + "tux-session-expired": "Kowé wis ora mlebu log manèh. Mlebua log lumantar tab séjé. Utawa, turuna pertalan kang durung kasimpen, mlebua log, balia menyang kaca iki banjur isinen manèh pertalanmu.", "tux-nojs": "Kaca iki butuh JavaScript." } diff --git a/MLEB/Translate/i18n/core/ka.json b/MLEB/Translate/i18n/core/ka.json index 76827e15..63b9e882 100644 --- a/MLEB/Translate/i18n/core/ka.json +++ b/MLEB/Translate/i18n/core/ka.json @@ -3,12 +3,12 @@ "authors": [ "BRUTE", "David1010", + "MIKHEIL", "Malafaya", + "Otogi", "Sopho", "Temuri rajavi", - "გიორგიმელა", - "Otogi", - "MIKHEIL" + "გიორგიმელა" ] }, "translate": "თარგმნა", @@ -42,21 +42,7 @@ "translate-edit-no-information": "''ამ შეტყობინებას არ აქვს დოკუმენტაცია.''\n''თუ იცით სად და როგორ გამოიყენება ეს შეტყობინება, გთხოვთ დაეხმაროთ სხვა მთარგმნელებს და დაურთოთ დოკუმენტაცია ამ შეტყობინებას.''", "translate-edit-in-other-languages": "ეს შეტყობინება სხვა ენებზე", "translate-edit-tmmatch": "$1% შესაბამისობა", - "translate-magic-module": "მოდული:", - "translate-magic-submit": "აჩვენე", - "translate-magic-cm-export": "ექსპორტი", - "translate-magic-cm-to-be": "უნდა იყოს", - "translate-magic-cm-current": "მიმდინარე", - "translate-magic-cm-original": "ორიგინალი", - "translate-magic-cm-comment": "კომენტარი:", - "translate-magic-cm-save": "შენახვა", - "translate-magic-cm-savefailed": "შენახვა ვერ მოხერხდა", - "translate-magic-words": "მაგიური სიტყვები", - "translate-magic-namespace": "სახელთა სივრცე", - "translate-magic-notsaved": "თქვენი რედაქტირება არ შენახულა!", - "translate-magic-saved": "თქვენი ცვლილებები წარმატებით შეინახა.", "translate-checks-malformed": "$1 არაკორექტულია.", - "translate-pref-nonewsletter": "არ გამომიგზავნო სიახლეები ელ. ფოსტით", "translate-pref-editassistlang": "დამხმარე ენები:", "prefs-translate": "თარგმნის პარამეტრები", "translate-pref-editassistlang-help": "მძიმეებით გაყოფილი ენების კოდების სია. ამ ენებზე თარგმანები ნაჩვენები იქნება შეტყობინების ცვლილების დროს. სია, ნაგულისხმევად თქვენ ენაზეა დამოკიდებული.", @@ -198,8 +184,8 @@ "tux-editor-need-more-help": "დახმარება გჭირდებათ?", "tux-editor-ask-help": "მოითხოვეთ დამატებითი განმარტება", "tux-editor-tm-match": "შესაბამისობა $1%", - "tux-warnings-more": "{{PLURAL:$1|კიდევ $1}}", - "tux-warnings-hide": "დამალვა", + "tux-notices-more": "{{PLURAL:$1|კიდევ $1}}", + "tux-notices-hide": "დამალვა", "tux-editor-message-desc-more": "იხილეთ მეტი", "tux-editor-message-desc-less": "იხილეთ ნაკლები", "tux-editor-clear-translated": "თარგმნილი ტექსტის დამალვა", @@ -210,8 +196,8 @@ "tux-proofread-action-tooltip": "შემოწმებულად მონიშვნა", "tux-proofread-edit-label": "რედაქტირება", "tux-editor-page-mode": "გვერდი", - "tux-editor-outdated-warning": "შესაძლოა, ეს თარგმანი განახლებას საჭიროებს", - "tux-editor-outdated-warning-diff-link": "განსხვავებების ჩვენება", + "tux-editor-outdated-notice": "შესაძლოა, ეს თარგმანი განახლებას საჭიროებს", + "tux-editor-outdated-notice-diff-link": "განსხვავებების ჩვენება", "tux-editor-doc-editor-placeholder": "შეტყობინების დოკუმენტაცია", "tux-editor-doc-editor-save": "დოკუმენტაციის შენახვა", "tux-editor-doc-editor-cancel": "გაუქმება", @@ -244,6 +230,5 @@ "translate-search-more-languages-info": "კიდევ $1 {{PLURAL:$1|ენა|ენა}}", "translate-statsbar-tooltip": "ნათარგმნი $1%, შემოწმებული $2%", "translate-statsbar-tooltip-with-fuzzy": "ნათარგმნი $1%, შემოწმებული $2%, მოძველებული $3%", - "translate-search-more-groups-info": "კიდევ $1 {{PLURAL:$1|ჯგუფი|ჯგუფი}}", - "translate-ulsdep-title": "კონფიგურაციის შეცდომა" + "translate-search-more-groups-info": "კიდევ $1 {{PLURAL:$1|ჯგუფი|ჯგუფი}}" } diff --git a/MLEB/Translate/i18n/core/kaa.json b/MLEB/Translate/i18n/core/kaa.json index 4c247ee7..3fd1c406 100644 --- a/MLEB/Translate/i18n/core/kaa.json +++ b/MLEB/Translate/i18n/core/kaa.json @@ -29,24 +29,9 @@ "translate-edit-information": "Bul xabar haqqında mag'lıwmat ($1)", "translate-edit-in-other-languages": "Bul xabar basqa tillerde", "translate-edit-warnings": "Tolıq awdarılmag'an xabarlar haqqında esletpeler", - "translate-magic-pagename": "Ken'eytilgen MediaWiki awdarması", - "translate-magic-submit": "Ko'rset", - "translate-magic-cm-export": "Eksport qılıw", - "translate-magic-cm-to-be": "Bolıwı kerek", - "translate-magic-cm-current": "Ha'zirgisi", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Kommentariy:", - "translate-magic-cm-save": "Saqla", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] qollanıp saqlang'an", - "translate-magic-cm-savefailed": "Saqlaw sa'tsiz tamamlandı", - "translate-magic-special": "Arnawlı bet laqabı", - "translate-magic-words": "Sıyqırlı so'zler", - "translate-magic-namespace": "İsimler ko'pligi atları", "translate-checks-parameters": "To'mendegi parametrler qollanılmag'an: $1", "translate-checks-balance": "Qawıslardın' sanı jup emes: $1", "translate-checks-links": "To'mendegi siltewler jaramsız: $1", - "translate-checks-xhtml": "To'mendegi teglerdi durıslıları menen o'zgertin': $1", "translate-checks-plural": "Anıqlamada {{PLURAL:}} paydalanılg'an, biraq awdarmada bul joq.", - "translate-pref-nonewsletter": "Mag'an e-mail boyınsha jan'alıqlardı jibermen'", "right-translate": "Awdarma interfeysi ja'rdeminde o'zgertiw" } diff --git a/MLEB/Translate/i18n/core/kab.json b/MLEB/Translate/i18n/core/kab.json index 2c15f64d..5858c493 100644 --- a/MLEB/Translate/i18n/core/kab.json +++ b/MLEB/Translate/i18n/core/kab.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Mmistmurt", - "Belkacem77" + "Belkacem77", + "Mmistmurt" ] }, "translate": "Suqel", @@ -52,18 +52,6 @@ "translate-export-form-format": "Amasal", "translate-export-invalid-format": "Mudd amasal ameɣtu.", "translate-export-not-supported": "Asifeḍ n tsuqilin ur yettusefrak ara.", - "translate-magic-module": "Azegrir", - "translate-magic-submit": "Bder", - "translate-magic-cm-export": "Sifeḍ", - "translate-magic-nothing-to-export": "Ulac ayen ara sifḍeḍ.", - "translate-magic-cm-to-be": "Ad yuɣal", - "translate-magic-cm-current": "Amiran", - "translate-magic-cm-original": "Aneṣli", - "translate-magic-cm-comment": "Awennit:", - "translate-magic-cm-save": "Sekles", - "translate-magic-cm-updatedusing": "Aleqqem s [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Asekles yecceḍ", - "translate-magic-notsaved": "Taẓreg ur tettwaseklen ara!", "translate-checks-fudforum-syntax": "Seqdec $1 deg umḍiq n $2 deg usenfaṛ-agi.", "translate-pref-editassistlang": "Amarag n tutlayin:", "prefs-translate": "Iɣewwaṛen n tsuqilt", @@ -187,8 +175,8 @@ "tux-editor-need-more-help": "Tesriḍ tallelt?", "tux-editor-ask-help": "Suter ugar n telɣut", "tux-editor-tm-match": "$1 % n umenṭaḍ", - "tux-warnings-more": "{{PLURAL:$1|$1 nniḍen}}", - "tux-warnings-hide": "ffer", + "tux-notices-more": "{{PLURAL:$1|$1 nniḍen}}", + "tux-notices-hide": "ffer", "tux-editor-save-failed": "Asekles n tsuqilt ur yeddi ara:$1", "tux-editor-n-uses": "yettwaseqdec $1 {{PLURAL:$1|n tikelt|n tikal}}", "tux-editor-message-desc-more": "Sken ugar", @@ -201,8 +189,8 @@ "tux-proofread-action-tooltip": "Creḍ yettwaɣra", "tux-proofread-edit-label": "Ẓreg", "tux-editor-page-mode": "Asebter", - "tux-editor-outdated-warning": "Tasuqilt-agi tesra aleqqem.", - "tux-editor-outdated-warning-diff-link": "Sken amgired", + "tux-editor-outdated-notice": "Tasuqilt-agi tesra aleqqem.", + "tux-editor-outdated-notice-diff-link": "Sken amgired", "tux-editor-doc-editor-placeholder": "Tasemlit n yizen", "tux-editor-doc-editor-save": "Sekles tasemlit", "tux-editor-doc-editor-cancel": "Sefsex", @@ -238,6 +226,5 @@ "translate-statsbar-tooltip": "$1% tasuqilt, $2% taɣuri", "translate-statsbar-tooltip-with-fuzzy": "$1% asuqilt, $2% acegger, $3% ifat", "translate-search-more-groups-info": "$1 n {{PLURAL:$1|ugraw|igrawen}}-nniden", - "translate-ulsdep-title": "Tuccḍa n twila", "tux-nojs": "Asebter-agi yesra JavaScript." } diff --git a/MLEB/Translate/i18n/core/kea.json b/MLEB/Translate/i18n/core/kea.json new file mode 100644 index 00000000..687adf73 --- /dev/null +++ b/MLEB/Translate/i18n/core/kea.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Waldyrious" + ] + }, + "translate-sidebar-alltrans": "Na otus língua" +} diff --git a/MLEB/Translate/i18n/core/kiu.json b/MLEB/Translate/i18n/core/kiu.json index a2a74fef..336bea3c 100644 --- a/MLEB/Translate/i18n/core/kiu.json +++ b/MLEB/Translate/i18n/core/kiu.json @@ -1,10 +1,17 @@ { "@metadata": { "authors": [ + "1917 Ekim Devrimi", "Erdemaslancan", - "Kumkumuk" + "Kumkumuk", + "Mirzali" ] }, + "translate-page-settings-legend": "Eyari", "translate-tag-page-desc": "Açarnayışê pela da [[$2|$1]] wiki", - "translate-ls-submit": "İstatistikan bımocne" + "translate-ls-submit": "İstatistikan bımocne", + "translate-documentation-language": "Pelekerdışê mesacan", + "tux-editor-cancel-button-label": "Bıtexelne", + "tux-editor-page-mode": "Pele", + "tux-editor-doc-editor-cancel": "Bıtexelne" } diff --git a/MLEB/Translate/i18n/core/kjp.json b/MLEB/Translate/i18n/core/kjp.json index 7a2f3b0d..67dd56ea 100644 --- a/MLEB/Translate/i18n/core/kjp.json +++ b/MLEB/Translate/i18n/core/kjp.json @@ -9,6 +9,8 @@ "translate-taction-lstats": "ဆ်ုခၠါင်ဘာႋသာ့ စ်ုရင့်ကါင်ကါ", "translate-taction-mstats": "လိက်သုံ့ၜိင်းကုံရွာဲ စ်ုရင့်ကါင်ကါ", "translate-taction-export": "မ်ုသုံ့ထင်း", + "translate-page-settings-legend": "အင်းတါင်ဆ်ုက်ုယိုင့်လ်ုဖး", + "translate-page-group": "ကုံရွာဲ", "translate-page-language": "ဆ်ုခၠါင်ဘာႋသာ့", "translate-page-navigation-legend": "ပ်ုယုံ့", "translate-next": "လ်ုယာ့လိက်မေံၜၠါ်", @@ -20,7 +22,6 @@ "translate-edit-contribute": "ဆ်ုထ္ၜါ", "translate-edit-information": "ပ်ုယုံ့ဆ်ုခၠါင်အ်ုကျံင် ဆ်ုပြိုင့်အ်ုဖၠံင်အ်ုဖၠ ($1)", "translate-edit-in-other-languages": "အ်ုၰာႋၰံင်ဆ်ုခၠါင်ဘာႋသာ့ခဝ့် ပ်ုယုံ့ဆ်ုခၠါင်", - "translate-magic-cm-export": "မ်ုသုံ့ထင်း", "translate-rcfilters-translations": "ဆ်ုခၠယ်ထသယ်လ်ုဖး", "translate-rcfilters-translations-only-label": "ဆ်ုခၠယ့်ထသယ်လ်ုဖး", "translationstats": "ဆ်ုခၠယ့် စ်ုရင့်ကါင်ကါ", @@ -61,6 +62,7 @@ "supportedlanguages-colorlegend": "အ်ုယံင့်အ်ုၯင်ႋ လိက်မါဏါင်း $1 မူႋဏီယိက်ခါ့ လင်ခါင့်ထုက် ဆ်ုခၠယ့်ဝေ့", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|ခၠယ့်ဏင့်ဆာႋ}}|ခၠယ့်ဏင့်ဆာႋလ်ုဖး}}: $1", "supportedlanguages-recenttranslations": "လ်ုယိက်လ်ုမဝ်ႋ ဆ်ုခၠယ့်လ်ုဖး", + "supportedlanguages-count": "{{PLURAL:$1|ဆ်ုခၠါင်ဘာႋသာ့|ဆ်ုခၠါင်ဘာႋသာ့လ်ုဖး}} ကုံကံင်း $1", "translate-manage-action-import": "ဆူ့ဍုဂ်သုံ့လင်", "translate-js-support": "မ်ုအင်းကိင်ဆ်ုအင်းစာ", "translate-documentation-language": "လိက်ၜၠာ် လိက်မါၮါင်း", diff --git a/MLEB/Translate/i18n/core/kk-arab.json b/MLEB/Translate/i18n/core/kk-arab.json index abfeeeed..cdf9848e 100644 --- a/MLEB/Translate/i18n/core/kk-arab.json +++ b/MLEB/Translate/i18n/core/kk-arab.json @@ -28,22 +28,8 @@ "translate-edit-information": "بۇل حابار تۋرالى مالىمەت ($1)", "translate-edit-in-other-languages": "حابار باسقا تىلدەردە", "translate-edit-warnings": "تولىق اۋدارىلماعان حابارلار تۋرالى اڭعارتپالار", - "translate-magic-pagename": "كەڭەيتىلگەن MediaWiki اۋدارۋى", - "translate-magic-help": "ارنايى بەت بۇركەمەلەرىن, سىيقىرلى سوزدەرىن, بەزەندىرۋ مانەر اتاۋلارىن جانە ەسىم ايا اتاۋلارىن اۋدارا الاسىز.\n\nسىيقىرلى سوزدەردە اعىلشىنشا نۇسقاسىن كىرگىزۋىڭىز ٴجون, ايتپەسە قىزمەتى توقتالادى. تاعى دا ٴبىرىنشى بابىن (0 نە 1) ٴاردايىم قالدىرىڭىز.\n\nارنايى بەت بۇركەمەلەرىندە جانە سىيقىرلى سوزدەرىندە بىرنەشە اۋدارما بولۋى مۇمكىن. اۋدارمالار ۇتىرمەن (,) بولىكتەنەدى. بەزەندىرۋ مانەر جانە ەسىم ايا اتاۋلارىندا تەك ٴبىر اۋدارما بولۋى ٴتىيىس.\n\nەسىم ايا اۋدارمالارىندا $1_talk دەگەن ارنايى كەلتىرىلەدى. $1 دەگەن اينالمالى وزدىكتىك توراپ اتاۋىمەن الماستىرىلادى (مىسالى, {{SITENAME}} تالقىلاۋى). ەگەر ٴسىزدىڭ تىلىڭىزدە توراپ اتاۋىن وزگەرتپەي دۇرىس سويلەم قۇرىلماسا, دامىتۋشىلارعا حابارلاسىڭىز.", - "translate-magic-submit": "كەلتىر", - "translate-magic-cm-export": "سىرتقا بەر", - "translate-magic-cm-to-be": "بولۋعا ٴتىيىستىسى", - "translate-magic-cm-current": "اعىمداعىسى", - "translate-magic-cm-original": "تۇپنۇسقاسى", - "translate-magic-cm-save": "ساقتا!", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] دەگەندى قولدانىپ ساقتالعان", - "translate-magic-cm-savefailed": "ساقتاۋ ٴساتسىز بولدى", - "translate-magic-special": "ارنايى بەت بۇركەمەلەرى", - "translate-magic-words": "سىيقىر سوزدەر", - "translate-magic-namespace": "ەسىم ايا اتاۋلارى", "translate-checks-parameters": "كەلەسى باپتالىمدار پايدالانىلماعان: $1", "translate-checks-balance": "مىندا جاقشالاردىڭ بارلىق سانى جۇپ ەمەس: $1", "translate-checks-links": "كەلەسى سىلتەمەلەر جارامسىز: $1", - "translate-checks-xhtml": "كەلەسى بەلگىلەمەلەردى دۇرىستارىمەن الماستىرىڭىز: $1", "translate-checks-plural": "انىقتالىمدا {{PLURAL:}} پايدالانىلعان, بىراق اۋدارمادا بۇل جوق." } diff --git a/MLEB/Translate/i18n/core/kk-cyrl.json b/MLEB/Translate/i18n/core/kk-cyrl.json index 0cdbc59f..8c94b0bc 100644 --- a/MLEB/Translate/i18n/core/kk-cyrl.json +++ b/MLEB/Translate/i18n/core/kk-cyrl.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "AlefZet", - "GaiJin", "Arystanbek", + "GaiJin", "Marat" ] }, @@ -51,34 +51,13 @@ "translate-use-suggestion": "Бұл ұсыныспен қазіргі аударманы алмастыру", "translate-edit-nopermission": "Хабарламаларды аудару үшін сізге аудару құқығы қажет.", "translate-edit-askpermission": "Рұқсат алу", - "translate-magic-pagename": "Кеңейтілген MediaWiki аударуы", - "translate-magic-help": "Арнайы бет бүркеме аттарын, сиқырлы сөздерді, мәнер атауларын және есім ая атауларын аудара аласыз.\n\nСиқырлы сөздерде ағылшынша нұсқасын кіргізуіңіз жөн, әйтпесе қызметі тоқталады.\nТағы да бірінші бабын (0 не 1) әрдайым қалдырыңыз.\n\nАрнайы бет бүркеме аттарында және сиқырлы сөздерде бірнеше аударма болуы мүмкін.\nАудармалар үтірмен (,) бөлінеді.\nМәнер және есім ая атауларында тек бір аударма болуы мүмкін.\n\nЕсім ая аудармаларында $1_talk деген арнайы боп табылады. $1 айналмалысы торап атауымен алмастырылады (мысалы, {{SITENAME}} талқылауы).\nЕгер сіздің тіліңізде торап атауын өзгертпей дұрыс айтылым құрылмаса, дамытушыға хабарласыңыз.\n\nӨзгерістерді сақтау үшін аудармашылар тобына кіруіңіз жөн.\nСақтау батырмасын нұқығанша дейін өзгерістер сақталмайды.", - "translate-magic-module": "Модул:", - "translate-magic-submit": "Келтір", - "translate-magic-cm-export": "Экспорттау", - "translate-magic-nothing-to-export": "Мұнда ехпорттайтын ештеңе жоқ", - "translate-magic-cm-to-be": "Болуға тиістісі", - "translate-magic-cm-current": "Қазіргісі", - "translate-magic-cm-original": "Түпнұсқасы", - "translate-magic-cm-comment": "Пікір:", - "translate-magic-cm-save": "Сақтау", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] дегенді қолданып жаңартылған", - "translate-magic-cm-savefailed": "Сақтау сәтсіз болды", - "translate-magic-special": "Арнайы бет бүркеме аттары", - "translate-magic-words": "Сиқырлы сөздер", - "translate-magic-namespace": "Есім кеңістігі атаулары", - "translate-magic-notsaved": "Өңдемеңіз сақталмады!", - "translate-magic-errors": "Аудармалардан келесі {{PLURAL:$1|қатені|қателерді}} түзетініңіз:", - "translate-magic-saved": "Өзгертулеріңіз сақталды.", - "translate-checks-parameters": "Келесі {{PLURAL:$2|параметр|параметрлер}} пайдаланылмаған: \n$1", - "translate-checks-parameters-unknown": "Келесі {{PLURAL:$2|параметр|параметрлер}} белгісіз:\n$1", + "translate-checks-parameters": "Келесі {{PLURAL:$2|параметр|параметрлер}} пайдаланылмаған: \n$1", + "translate-checks-parameters-unknown": "Келесі {{PLURAL:$2|параметр|параметрлер}} белгісіз:\n$1", "translate-checks-balance": "Мында {{PLURAL:$2|жақшаның|жақшалардың}} бүкіл саны жұп емес: \n$1", "translate-checks-links": "Келесі {{PLURAL:$2|сілтеме|$2 сілтеме}} жарамсыз: \n$1", "translate-checks-links-missing": "Келесі {{PLURAL:$2|сілтемені|$2 сілтемені}} қажет етеді:\n$1", - "translate-checks-xhtml": "Келесі {{PLURAL:$2|белгіні|белгіні}} дұрыстарымен алмастырыңыз: \n$1", "translate-checks-plural": "Анықталымда {{PLURAL:}} пайдаланылған, бірақ аударма жоқ.", "translate-checks-pagename": "Анықтамадан есім кеңістігі өзгертілген", - "translate-pref-nonewsletter": "Жаңалық хаттарды маған жіберме", "translate-pref-editassistlang": "Көмекші тілдер:", "prefs-translate": "Аударма баптаулары", "translate-pref-editassistlang-bad": "Тізімдегі дұрыс емес тіл коды:\n$1.", @@ -241,8 +220,8 @@ "tux-editor-need-more-help": "Басқада көмек қажет пе?", "tux-editor-ask-help": "Көбірек мәлімет сұрау", "tux-editor-tm-match": "$1% сай келеді", - "tux-warnings-more": "{{PLURAL:$1|$1 көбірек}}", - "tux-warnings-hide": "жасыру", + "tux-notices-more": "{{PLURAL:$1|$1 көбірек}}", + "tux-notices-hide": "жасыру", "tux-editor-save-failed": "Аударманы сақтау сәтсіз болды: $1", "tux-editor-n-uses": " $1 {{PLURAL:$1|рет|рет}} қолданған", "tux-editor-message-desc-more": "Көбірек қарау", @@ -255,8 +234,8 @@ "tux-proofread-action-tooltip": "Тексерілген деп белгілеу", "tux-proofread-edit-label": "Өңдеу", "tux-editor-page-mode": "Бет", - "tux-editor-outdated-warning": "Бұл аударма жаңартуды қажет етеді.", - "tux-editor-outdated-warning-diff-link": "Айырмашылығын көрсету", + "tux-editor-outdated-notice": "Бұл аударма жаңартуды қажет етеді.", + "tux-editor-outdated-notice-diff-link": "Айырмашылығын көрсету", "tux-editor-doc-editor-placeholder": "Хабарлама құжаттамасы", "tux-editor-doc-editor-save": "Құжаттаманы сақтау", "tux-editor-doc-editor-cancel": "Болдырмау", @@ -297,6 +276,5 @@ "translate-statsbar-tooltip": "$1% аударылған, $2% тексерілген", "translate-statsbar-tooltip-with-fuzzy": "$1% аударылған, $2% тексерілген, $3% жаңартуды қажет етеді", "translate-search-more-groups-info": "Көбірек $1 {{PLURAL:$1|топ|топ}}:", - "translate-ulsdep-title": "Ішқұрылым қатесі", "tux-nojs": "Бұл бет JavaScript керек етеді." } diff --git a/MLEB/Translate/i18n/core/kk-latn.json b/MLEB/Translate/i18n/core/kk-latn.json index a3bd457d..00f62619 100644 --- a/MLEB/Translate/i18n/core/kk-latn.json +++ b/MLEB/Translate/i18n/core/kk-latn.json @@ -30,22 +30,8 @@ "translate-edit-information": "Bul xabar twralı mälimet ($1)", "translate-edit-in-other-languages": "Xabar basqa tilderde", "translate-edit-warnings": "Tolıq awdarılmağan xabarlar twralı añğartpalar", - "translate-magic-pagename": "Keñeýtilgen MediaWiki awdarwı", - "translate-magic-help": "Arnaýı bet bürkemelerin, sïqırlı sözderin, bezendirw mäner atawların jäne esim aya atawların awdara alasız.\n\nSïqırlı sözderde ağılşınşa nusqasın kirgizwiñiz jön, äýtpese qızmeti toqtaladı. Tağı da birinşi babın (0 ne 1) ärdaýım qaldırıñız.\n\nArnaýı bet bürkemelerinde jäne sïqırlı sözderinde birneşe awdarma bolwı mümkin. Awdarmalar ütirmen (,) böliktenedi. Bezendirw mäner jäne esim aya atawlarında tek bir awdarma bolwı tïis.\n\nEsim aya awdarmalarında $1_talk degen arnaýı keltiriledi. $1 degen aýnalmalı özdiktik torap atawımen almastırıladı (mısalı, {{SITENAME}} talqılawı). Eger sizdiñ tiliñizde torap atawın özgertpeý durıs söýlem qurılmasa, damıtwşılarğa xabarlasıñız.", - "translate-magic-submit": "Keltir", - "translate-magic-cm-export": "Sırtqa ber", - "translate-magic-cm-to-be": "Bolwğa tïistisi", - "translate-magic-cm-current": "Ağımdağısı", - "translate-magic-cm-original": "Tüpnusqası", - "translate-magic-cm-save": "Saqta!", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] degendi qoldanıp saqtalğan", - "translate-magic-cm-savefailed": "Saqtaw sätsiz boldı", - "translate-magic-special": "Arnaýı bet bürkemeleri", - "translate-magic-words": "Sïqır sözder", - "translate-magic-namespace": "Esim aya atawları", "translate-checks-parameters": "Kelesi baptalımdar paýdalanılmağan: $1", "translate-checks-balance": "Mında jaqşalardıñ barlıq sanı jup emes:\n$1", "translate-checks-links": "Kelesi siltemeler jaramsız:\n$1", - "translate-checks-xhtml": "Kelesi belgilemelerdi durıstarımen almastırıñız:\n$1", "translate-checks-plural": "Anıqtalımda {{PLURAL:}} paýdalanılğan, biraq awdarmada bul joq." } diff --git a/MLEB/Translate/i18n/core/km.json b/MLEB/Translate/i18n/core/km.json index cd8eb540..aaf8499c 100644 --- a/MLEB/Translate/i18n/core/km.json +++ b/MLEB/Translate/i18n/core/km.json @@ -1,13 +1,13 @@ { "@metadata": { "authors": [ + "Aefgh39622", "Chhorran", "Lovekhmer", + "Sovichet", "Thearith", "គីមស៊្រុន", - "វ័ណថារិទ្ធ", - "Sovichet", - "Aefgh39622" + "វ័ណថារិទ្ធ" ] }, "translate": "បកប្រែ", @@ -58,36 +58,15 @@ "exporttranslations": "នាំចេញការបកប្រែ", "translate-export-form-format": "ទម្រង់", "translate-export-invalid-format": "សូមផ្ដល់ទម្រង់ត្រឹមត្រូវមួយ។", - "translate-magic-pagename": "ការបកប្រែ​មេឌាវិគី​បន្ថែម", - "translate-magic-help": "អ្នកអាចធ្វើការបកប្រែឈ្មោះក្លាយរបស់ទំព័រពិសេសៗ សិល្ប៍ស័ព្ទ និងឈ្មោះនៃលំហឈ្មោះ។\n\n\nឈ្មោះក្លាយរបស់ទំព័រពិសេសៗ​និង​សិល្ប៍ស័ព្ទ​អាចមានបទប្រែសំរួលច្រើន។\nបទប្រែសំរួលទាំងនោះច្រូវខណ្ឌចែកពីគ្នាដោយសញ្ញាក្បៀស (,)។\nលំហឈ្មោះអាចមានបទប្រែសំរួលតែមួយប៉ុណ្ណោះ ។\n\n\nក្នុងការបកប្រែលំហឈ្មោះ ការពិភាក្សាអំពី $1 ជាករណីពិសេស។ $1 ត្រូវបានជំនួសដោយឈ្មោះវិបសាយ (ឧទាហរណ៍៖ {{ns:project_talk}})។\nប្រសិនបើ​ភាសារបស់អ្នក​មិនបានបង្ហាញត្រឹមត្រូវដោយមិនប្តូរឈ្មោះវិបសាយទេ សូមទាក់ទងអ្នកអភិវឌ្ឍ (អ្នករចនាវិបសាយ)។\n\n\nអ្នកចាំបាច់ត្រូវតែស្ថិតក្នុងក្រុមអ្នកប្រែសម្រួល ទើបអាចរក្សាទុកបំលាស់ប្តូរបាន។\nបំលាស់ប្តូរនឹងមិនត្រូវបានរក្សាទុកទេ​លើកលែងតែអ្នកបានចុចប៊ូតុង​រក្សាទំព័រទុក​នៅខាងក្រោម ។", - "translate-magic-module": "ម៉ូឌុល៖", - "translate-magic-submit": "នាំមក​បង្ហាញ", - "translate-magic-cm-export": "នាំចេញ", - "translate-magic-nothing-to-export": "គ្មានអ្វីសម្រាប់នាំចេញទេ។", - "translate-magic-cm-to-be": "ទៅជា", - "translate-magic-cm-current": "បច្ចុប្បន្ន", - "translate-magic-cm-original": "ដើម", - "translate-magic-cm-comment": "យោបល់៖", - "translate-magic-cm-save": "រក្សាទុក", - "translate-magic-cm-updatedusing": "បានបន្ទាន់សម័យ​ដោយប្រើប្រាស់ [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "រក្សាទុកមិនបានសម្រេច", - "translate-magic-special": "ឈ្មោះផ្សេងទៀតនៃទំព័រពិសេស", - "translate-magic-words": "ពាក្យទិព្វ", - "translate-magic-namespace": "ឈ្មោះនៃលំហឈ្មោះ", - "translate-magic-notsaved": "កំណែប្រែរបស់អ្នកមិនត្រូវបានរក្សាទុកទេ!", - "translate-magic-errors": "សូមកែប្រែ{{PLURAL:$1|កំហុសឆ្គង|កំហុសឆ្គង}}ទាំងនេះ ដែលមានក្នុងការកែប្រែ៖", - "translate-magic-saved": "បន្លាស់ប្ដូររបស់អ្នក​ត្រូវបានរក្សាទុក។", - "translate-checks-parameters": "{{PLURAL:$2|ប៉ារ៉ាម៉ែត្រ|ប៉ារ៉ាម៉ែត្រ}}ខាងក្រោមនេះមិនត្រូវបានគេប្រើទេ៖\n\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|parameter is|ប៉ារ៉ាម៉ែត្រ}}ខាងក្រោមនេះមិនត្រូវបានស្គាល់ទេ៖\n$1", + "translate-checks-parameters": "{{PLURAL:$2|ប៉ារ៉ាម៉ែត្រ|ប៉ារ៉ាម៉ែត្រ}}ខាងក្រោមនេះមិនត្រូវបានគេប្រើទេ៖\n\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|parameter is|ប៉ារ៉ាម៉ែត្រ}}ខាងក្រោមនេះមិនត្រូវបានស្គាល់ទេ៖\n$1", "translate-checks-balance": "មាន{{PLURAL:$2|វង់ក្រចក|វង់ក្រចក}}​ដែលមិន​មាន​គូ៖\n\n$1", "translate-checks-links": "{{PLURAL:$2|តំណភ្ជាប់|តំណភ្ជាប់}}ខាងក្រោមនេះ​មានបញ្ហា៖ $1", "translate-checks-links-missing": "Following {{PLURAL:$2|តំណភ្ជាប់|តំណភ្ជាប់ចំនួន $2}} ខាងក្រោមនេះបាត់៖\n$1", - "translate-checks-xhtml": "សូម​ជំនួស​{{PLURAL:$2|tag|ស្លាក}}​ខាងក្រោមដោយស្លាកដែលត្រឹមត្រូវ៖\n\n$1", "translate-checks-plural": "និយមន័យ​ប្រើប្រាស់ {{PLURAL:}} ប៉ុន្តែ​បទប្រែសម្រួល​មិនមាន ។", "translate-checks-pagename": "លំហឈ្មោះ​ត្រូវ​បាន​ផ្លាស់ប្ដូរ​ពី​និយមន័យ", "translate-checks-format": "ការបកប្រែនេះមិនគោរពតាមនិយមន័យឬមានវេយ្យាករណ៍មិនត្រឹមត្រូវ៖ $1", "translate-checks-fudforum-syntax": "ប្រើ $1 ជំនួសអោយ $2 នៅក្នុងគំរោងនេះ។", - "translate-pref-nonewsletter": "កុំផ្ញើអ៊ីមែលព្រឹត្តិប័ត្រសារព័ត៌មានមកខ្ញុំអី", "translate-pref-editassistlang": "ភាសាជំនួយ៖", "prefs-translate": "ជម្រើសទាក់ទិននឹងការបកប្រែ", "translate-pref-editassistlang-help": "បញ្ជីកូដភាសាខណ្ឌចែកដោយសញ្ញាក្បៀស។\nការបកប្រែសារមួយនៅក្នុងភាសាទាំងនេះ ត្រូវបានបង្ហាញពេលដែលអ្នកកំពុងបកប្រែ។\nបញ្ចីភាសាតាមលំនាំដើម អាស្រ័យលើភាសារបស់អ្នក។", @@ -247,8 +226,8 @@ "tux-editor-need-more-help": "ត្រូវការជំនួយបន្ថែមទៀតទេ?", "tux-editor-ask-help": "សួររកព័ត៌មានបន្ថែម", "tux-editor-tm-match": "ត្រូវគ្នា $1%", - "tux-warnings-more": "{{PLURAL:$1|$1 បន្ថែម}}", - "tux-warnings-hide": "លាក់", + "tux-notices-more": "{{PLURAL:$1|$1 បន្ថែម}}", + "tux-notices-hide": "លាក់", "tux-editor-save-failed": "រក្សាទុកការបកប្រែមិនបានសម្រេច៖ $1", "tux-editor-n-uses": "ត្រូវបានប្រើប្រាស់ $1 {{PLURAL:$1|ដង|ដង}}", "tux-editor-message-desc-more": "មើលច្រើន", @@ -261,8 +240,8 @@ "tux-proofread-action-tooltip": "កត់ចំណាំថាបានផ្ទៀងផ្ទាត់រួច", "tux-proofread-edit-label": "កែប្រែ", "tux-editor-page-mode": "ទំព័រ", - "tux-editor-outdated-warning": "ការបកប្រែប្រហែលជាត្រូវការអោយបន្ទាន់សម័យ។", - "tux-editor-outdated-warning-diff-link": "បង្ហាញភាពខុសគ្នា", + "tux-editor-outdated-notice": "ការបកប្រែប្រហែលជាត្រូវការអោយបន្ទាន់សម័យ។", + "tux-editor-outdated-notice-diff-link": "បង្ហាញភាពខុសគ្នា", "tux-editor-doc-editor-placeholder": "សេចក្ដីពន្យល់អំពីសារ", "tux-editor-doc-editor-save": "រក្សាទុកសេចក្ដីពន្យល់", "tux-editor-doc-editor-cancel": "បោះបង់", diff --git a/MLEB/Translate/i18n/core/kn.json b/MLEB/Translate/i18n/core/kn.json index c482ccc6..a0905b8f 100644 --- a/MLEB/Translate/i18n/core/kn.json +++ b/MLEB/Translate/i18n/core/kn.json @@ -5,8 +5,8 @@ "Dipin", "Munirathnam", "Nayvik", - "VASANTH S.N.", "Omshivaprakash", + "VASANTH S.N.", "Yogesh" ] }, @@ -47,28 +47,12 @@ "translate-use-suggestion": "ಈಗಿನ ಭಾಷಾಂತರವನ್ನು ಈ ಸಲಹೆಯೊಂದಿಗೆ ಬದಲಾಯಿಸಿ", "translate-edit-nopermission": "ಭಾಷಾಂತರಿಸಲು ನಿಮಗೆ ಅನುಮತಿ ಬೇಕು", "translate-edit-askpermission": "ಅನುಮತಿಗಾಗಿ ಕೋರಿಕೆ", - "translate-magic-pagename": "ವಿಸ್ತರಿಸಲ್ಪಟ್ಟ ಮಿಡಿಯಾವಿಕಿ ಭಾಷಾಂತರ", - "translate-magic-module": "ಘಟಕ", - "translate-magic-submit": "ಕರೆತರು", - "translate-magic-cm-export": "ರಫ್ತು ಮಾಡು", - "translate-magic-nothing-to-export": "ರಫ್ತು ಮಾಡಲು ಏನೂ ಇಲ್ಲ", - "translate-magic-cm-current": "ಪ್ರಸಕ್ತ", - "translate-magic-cm-original": "ಅಸಲು", - "translate-magic-cm-comment": "ಟಿಪ್ಪಣಿ :", - "translate-magic-cm-save": "ಉಳಿಸಿ", - "translate-magic-cm-savefailed": "ಉಳಿಸುವಿಕೆ ವಿಫಲ", - "translate-magic-special": "ವಿಷೇಶ ಪುಟ ಉಪನಾಮಗಳು", - "translate-magic-words": "ಜಾದೂ ಶಬ್ದಗಳು", - "translate-magic-notsaved": "ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಉಳಿಸಲಾಗಿಲ್ಲ!", - "translate-magic-errors": "ಭಾಷಾಂತರಗಳಲ್ಲಿ ಕೆಳಗಿನ ತಪ್ಪುಗಳನ್ನು ದಯವಿಟ್ಟು ಗುರುತಿಸಿ{{PLURAL:$1|ತಪ್ಪು|ತಪ್ಪುಗಳು}}", - "translate-magic-saved": "ನಿಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಲಾಗಿದೆ.", - "translate-checks-parameters-unknown": "ಕೆಳಗಿನ {{PLURAL:$2|ಮಾನದಂಡವು|ಮಾನದಂಡಗಳು}} ಅಪರಿಚಿತ\n$1", + "translate-checks-parameters-unknown": "ಕೆಳಗಿನ {{PLURAL:$2|ಮಾನದಂಡವು|ಮಾನದಂಡಗಳು}} ಅಪರಿಚಿತ\n$1", "translate-checks-links-missing": "ಈ ಕೆಳಗಿನ {{PLURAL:$2|ಕೊಂಡಿಯು|$2 ಕೊಂಡಿಗಳು}}ಕಾಣೆಯಾಗಿವೆ:\n$1", "translate-checks-plural": "ವ್ಯಾಖ್ಯೆಗೆ ಉಪಯೋಗ {{PLURAL:}} ಆದರೆ ಭಾಷಾಂತರಕ್ಕೆ ಅಲ್ಲ.", "translate-checks-format": "ಈ ಭಾಷಾಂತರವು ವ್ಯಾಖ್ಯೆಗ ಸರಿಹೊಂದುತ್ತಿಲ್ಲ ಅಥವಾ ತಪ್ಪು ಪದವಿನ್ಯಾಸವನ್ನು ಹೊಂದಿದೆ: $1", "translate-checks-escape": "ಈ ಕೆಳಗಿನ ಗಮನಕ್ಕೆ ಬಾರದಿರುವ ವಿಷಯ ಆಕಸ್ಮಿಕವಿರಬಹುದು: $1", "translate-checks-fudforum-syntax": " $2 ರ ಬದಲು $1 ನ್ನು ಈ ಯೋಜನೆಯಲ್ಲಿ ಬಳಸಿ in this project.", - "translate-pref-nonewsletter": "ನನಗೆ ಮಿಂಚಂಚೆ ವಾರ್ತಾಪತ್ರಿಕೆಗಳನ್ನು ಕಳುಹಿಸುವುದು ಬೇಡ", "translate-pref-editassistlang": "ಸಹಾಯಕ ಭಾಷೆ:", "prefs-translate": "ಭಾಷಾಂತರ ಆಯ್ಕೆಗಳು", "translate-pref-editassistlang-bad": "ಈ ಪಟ್ಟಿಯಲ್ಲಿರುವ ಭಾಷಾ ಸಂಕೇತ ಅಸಿಂಧು: $1", diff --git a/MLEB/Translate/i18n/core/ko.json b/MLEB/Translate/i18n/core/ko.json index 11d9a975..09faceb6 100644 --- a/MLEB/Translate/i18n/core/ko.json +++ b/MLEB/Translate/i18n/core/ko.json @@ -1,25 +1,27 @@ { "@metadata": { "authors": [ + "Bluemersen", "Ficell", "Freebiekr", + "HDNua", + "Hwangjy9", "Hym411", + "Infinity", "Klutzy", "Kwj2772", - "ToePeu", - "관인생략", - "아라", + "MemphisA5", "Priviet", "Revi", - "Bluemersen", - "Infinity", - "Hwangjy9", - "HDNua", - "Ykhwong" + "ToePeu", + "Ykhwong", + "관인생략", + "아라" ] }, "translate": "번역하기", "translate-desc": "미디어위키와 다른 것들을 번역하기 위한 [[Special:Translate|특수 문서]]", + "translate-fuzzybot-desc": "이 계정은 미디어위키 [https://www.mediawiki.org/wiki/Extension:Translate 번역 확장 기능]이 번역 문서를 관리하기 위해 사용되는 시스템 계정입니다.\n이 계정은 미디어위키 소프트웨어의 일부이며 특정 사용자에 의해 통제되지 않습니다.", "translate-taskui-export-to-file": "네이티브 형식으로 내보내기", "translate-taskui-export-as-po": "오프라인 번역용으로 내보내기", "translate-taction-translate": "번역하기", @@ -60,7 +62,7 @@ "translate-edit-warnings": "불완전한 번역에 대한 경고", "translate-edit-tmmatch-source": "번역 원본 텍스트: $1", "translate-edit-tmmatch": "$1% 일치", - "translate-use-suggestion": "이 제안에 현재 번역을 바꿉니다.", + "translate-use-suggestion": "현재 번역을 이 제안으로 변경합니다.", "translate-edit-nopermission": "메시지를 번역할 수 있는 번역 권한이 필요합니다.", "translate-edit-askpermission": "권한 얻기", "exporttranslations": "번역 내보내기", @@ -68,52 +70,39 @@ "translate-export-invalid-format": "유효한 형식을 지정해 주십시오.", "translate-export-not-supported": "번역 내보내기는 지원하지 않습니다.", "translate-export-format-notsupported": "지정된 내보내기 형식은 메시지 그룹에 의해 지원되지 않습니다.", - "translate-magic-pagename": "확장된 미디어위키 번역", - "translate-magic-help": "여기서 특수 문서 이름, 특수 명령, 이름공간 이름을 번역할 수 있습니다.\n\n특수 문서와 특수 명령은 여러 개의 번역이 가능합니다.\n여러 개의 번역을 할 경우에는 쉼표(,)로 번역을 구별합니다.\n단, 이름공간은 오직 하나의 번역만 가능합니다.\n\n번역할 때 프로젝트 토론 이름공간인 $1 talk은 복잡할 수 있습니다.\n$1은(는) 프로젝트 사이트 이름(예를 들어 {{ns:project_talk}})으로 바뀝니다.\n사이트 이름을 바꾸지 않고서 적절한 표현 방법을 구성할 수 없다면 [[Support]]에서 문의하세요.\n\n이 편집을 저장하려면 번역자 권한이 필요합니다.\n아래의 저장 버튼을 누르기 전까지는 바뀐 내용이 저장되지 않습니다.", - "translate-magic-module": "모듈:", - "translate-magic-submit": "불러오기", - "translate-magic-cm-export": "내보내기", - "translate-magic-nothing-to-export": "내보낼 것이 없습니다.", - "translate-magic-cm-to-be": "번역 후", - "translate-magic-cm-current": "현재", - "translate-magic-cm-original": "원래 내용", - "translate-magic-cm-comment": "요약:", - "translate-magic-cm-save": "저장", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]을 통해 업데이트함", - "translate-magic-cm-savefailed": "저장 실패", - "translate-magic-special": "특수 문서 이름", - "translate-magic-words": "특수 명령", - "translate-magic-namespace": "이름공간 이름", - "translate-magic-notsaved": "편집이 저장되지 않았습니다!", - "translate-magic-errors": "번역문에서 다음 {{PLURAL:$1|오류}}를 수정하세요:", - "translate-magic-saved": "바뀐 내용이 저장되었습니다.", - "translate-checks-parameters": "다음 {{PLURAL:$2|변수가}} 사용되지 않았습니다:\n$1", - "translate-checks-parameters-unknown": "다음 {{PLURAL:$2|변수를}} 알 수 없습니다:\n$1", + "translate-checks-parameters": "다음 {{PLURAL:$2|변수가}} 사용되지 않았습니다:\n$1", + "translate-checks-parameters-unknown": "다음 {{PLURAL:$2|변수를}} 알 수 없습니다:\n$1", "translate-checks-balance": "열고 닫는 {{PLURAL:$2|괄호}}의 수가 일치하지 않습니다:\n$1", "translate-checks-links": "다음 {{PLURAL:$2|링크|링크 $2개}}에 문제가 있습니다:\n$1", "translate-checks-links-missing": "다음 {{PLURAL:$2|링크|링크 $2개}}가 없습니다:\n$1", - "translate-checks-xhtml": "올바른 것과 함께 다음과 같은 {{PLURAL:$2|태그}}를 바꾸세요:\n$1", "translate-checks-plural": "메시지 원문에는 {{PLURAL:}}을 사용하지만 번역문에서는 그렇지 않습니다.", "translate-checks-plural-forms": "{{PLURAL:}}은 {{PLURAL:$1|양식 하나|양식 $1개}}에 주었지만 {{PLURAL:$2|양식 하나만|양식 $2개를}} 지원합니다. (0= 과 1= 양식 제외)", "translate-checks-plural-dupe": "{{PLURAL:}}은 끝에서 양식이 중복했습니다. {{PLURAL:$1|양|양}}{{PLURAL:$1|양}}으로 적어야 합니다.", + "translate-checks-gettext-plural-missing": "이 번역에는 {{PLURAL:GETTEXT|}}가 필수입니다.", + "translate-checks-gettext-plural-unsupported": "이 메시지는 {{PLURAL:GETTEXT|}}를 지원하지 않습니다.", + "translate-checks-smartformat-plural-missing": "이 번역은 $1 변수에 대해 복수형이어야 합니다.", + "translate-checks-smartformat-plural-unsupported": "이 메시지는 $1 변수에 대해 복수형을 지원하지 않습니다.", "translate-checks-pagename": "이름공간이 정의로부터 바뀌었습니다", "translate-checks-format": "이 번역은 정의를 따르지 않거나 잘못된 구문입니다: $1", "translate-checks-escape": "다음의 탈출은 실수였을 수 있습니다: $1", "translate-checks-parametersnotequal": "변수 개수는 {{PLURAL:$1|$1}}개이며 {{PLURAL:$2|$2}}개여야 합니다.", "translate-checks-malformed": "$1은(는) 잘못된 형식입니다.", "translate-checks-fudforum-syntax": "이 프로젝트에는 $2 대신에 $1을(를) 사용하세요.", - "translate-pref-nonewsletter": "이메일 뉴스레터를 보내지 않음", + "translate-checks-replacement": "$1 대신 $2 을(를) 사용하십시오.", "translate-pref-editassistlang": "보조 언어:", "prefs-translate": "번역 옵션", "translate-pref-editassistlang-help": "쉼표로 언어 코드 목록을 구분하세요.\n번역할 때는 해당 언어로 메시지 번역이 보입니다.\n언어의 기본 목록은 내 언어에 따라 달라집니다.", "translate-pref-editassistlang-bad": "목록에서 잘못된 언어 코드가 있습니다:\n$1.", - "right-translate": "시스템 메시지를 번역", + "right-translate": "번역 인터페이스를 사용하여 편집", + "action-translate": "번역 인터페이스를 사용하여 편집할", "right-translate-manage": "메시지 그룹 관리", "action-translate-manage": "메시지 그룹을 관리할", "right-translate-import": "오프라인 번역 가져오기", "action-translate-import": "오프라인 번역을 가져올", "right-translate-messagereview": "번역 검토하기", + "action-translate-messagereview": "번역을 검토할", "right-translate-groupreview": "메시지 그룹의 작업 상태를 바꾸기", + "action-translate-groupreview": "메시지 그룹의 작업 상태를 바꿀", "translate-rcfilters-translations": "번역", "translate-rcfilters-translations-only-label": "번역", "translate-rcfilters-translations-only-desc": "번역된 문서의 변경사항입니다.", @@ -205,16 +194,25 @@ "supportedlanguages-recenttranslations": "최근 번역", "supportedlanguages-count": "총 {{PLURAL:$1|언어 수}}는 $1개입니다.", "supportedlanguages-activity": "$1: {{PLURAL:$2|편집}} $2회 - 마지막 편집 $3{{PLURAL:$3|일}} 전", - "translate-save": "저장 ($1)", + "abusefilter-edit-builder-vars-translate-source-text": "번역 단위의 소스 본문", + "abusefilter-edit-builder-vars-translate-target-language": "번역 대상 언어", + "translate-save": "게시 ($1)", "translate-jssti-add": "목록에 추가", "managemessagegroups": "메시지 그룹 관리", "translate-smg-notallowed": "이 작업을 실행하는 것을 허용하지 않습니다.", "translate-smg-nochanges": "과정에 대한 바뀜이 없습니다.", "translate-smg-submit": "과정에 대한 바뀜 전송", - "translate-smg-submitted": "메시지 정의가 업데이트되었습니다. 바뀜은 백그라운드로 처리하고 있습니다.", + "translate-smg-submitted": "메시지 정의가 업데이트되었습니다. 변경 사항은 백그라운드에서 처리됩니다.", "translate-smg-more": "이 편집을 처리하기 위해 더 많은 변화가 있을 수 있습니다.", "translate-smg-left": "위키에서 메시지 내용", "translate-smg-right": "들어오는 바뀜", + "translate-smg-rename-select": "선택", + "translate-smg-rename-cancel": "취소", + "translate-smg-rename-search": "일치하는 메시지를 검색하는 중...", + "translate-smg-rename-select-err": "이름을 변경할 메시지를 선택해 주십시오", + "translate-smg-rename-no-msg": "메시지가 없습니다.", + "translate-smg-rename-new": "새 이름으로 추가...", + "translate-smg-rename-rename": "다른 이름으로 추가...", "translate-manage-import-diff": "메시지 $1 | 동작: $2", "translate-manage-import-new": "새 메시지 $1", "translate-manage-import-deleted": "메시지 $1을 삭제했습니다.", @@ -222,11 +220,15 @@ "translate-manage-action-conflict": "퍼지 처리하여 가져오기", "translate-manage-action-ignore": "무시", "translate-manage-action-fuzzy": "번역을 가져와서 퍼지 처리", + "translate-manage-action-rename-fuzzy": "번역의 이름을 바꾸고 퍼지 처리", + "translate-manage-action-rename": "이름 바꾸기", + "translate-manage-action-ignore-change": "번역 변경사항 무시하기", "translate-manage-nochanges": "이 그룹에 대한 메시지 정의 바뀜이 없습니다.", "translate-manage-nochanges-other": "이 언어에 대한 바뀜이 없습니다.\n그룹 자세한 정보 보기로 돌아가려면 다음 링크를 사용하세요.", "translate-manage-inconsistent": "요청에서 일치하지 않음을 발견했습니다.\n바뀜을 확인하고 다시 시도하세요.\n자세한 정보: $1.", "translate-manage-toolong": "최대 처리 시간이 $1{{PLURAL:$1|초}} 초과했습니다.\n처리를 계속하려면 양식을 다시 전송하세요.", "translate-manage-import-summary": "외부 원본에서 새 판을 가져옴", + "translate-manage-import-rename-summary": "외부 소스에서 이름 변경됨", "translate-manage-conflict-summary": "외부 소스로부터 새 버전을 가져옵니다.\n확인해 주십시오.", "translate-manage-submit": "실행", "translate-manage-intro-other": "다음은 $1로 된 번역 바뀜 목록입니다.\n바뀜을 검토하고 각 업데이트에 대해 수행할 작업을 선택하세요.\n바뀜을 무시하기로 선택했다면 이 작업만 일시적입니다.", @@ -241,15 +243,14 @@ "translate-import-err-no-such-file": "$1 파일이 없거나 이 위키에 올려지지 않았습니다.", "translate-import-err-stale-group": "이 파일에 들어있는 메시지 그룹이 존재하지 않습니다.", "translate-import-err-no-headers": "파일이 번역 확장 기능에 쓰이는 올바른 형식의 Gettext 파일이 아닙니다:\n파일 헤더에서 메시지 그룹과 언어를 판독할 수 없습니다.", - "translate-import-err-warnings": "이 파일을 형식이 올바르지 않습니다.\n에디터가 msgctxt 칸을 지우지 않았는지 확인해주세요.\n자세한 내용: $1", "translate-js-summary": "요약:", - "translate-js-save": "저장", - "translate-js-next": "저장하고 다음으로 넘어가기", + "translate-js-save": "게시", + "translate-js-next": "게시하고 다음으로 넘어가기", "translate-js-skip": "다음으로 넘어가기", "translate-js-history": "번역 역사", "translate-js-support": "질문하기", "translate-js-support-title": "이 메시지를 정확히 번역할 만한 정보가 부족하다면 도움을 요청하세요.", - "translate-js-support-unsaved-warning": "번역을 저장하지 않았습니다.", + "translate-js-support-unsaved-warning": "번역을 게시하지 않았습니다.", "translate-gs-pos": "순위", "translate-gs-code": "코드", "translate-gs-continent": "대륙", @@ -302,14 +303,14 @@ "tux-status-fuzzy": "오래됨", "tux-status-proofread": "검토됨", "tux-status-translated": "번역됨", - "tux-status-saving": "저장 중...", - "tux-status-unsaved": "저장하지 않음", + "tux-status-saving": "게시 중...", + "tux-status-unsaved": "게시하지 않음", "tux-save-unknown-error": "알 수 없는 오류가 발생했습니다.", "tux-editor-placeholder": "내 번역", "tux-editor-editsummary-placeholder": "요약 (선택 사항)", "tux-editor-paste-original-button-label": "원본 텍스트 붙여넣기", "tux-editor-discard-changes-button-label": "바뀜 버리기", - "tux-editor-save-button-label": "번역 저장", + "tux-editor-save-button-label": "번역 게시", "tux-editor-skip-button-label": "다음으로 넘어가기", "tux-editor-cancel-button-label": "취소", "tux-editor-confirm-button-label": "번역 확인", @@ -322,9 +323,9 @@ "tux-editor-need-more-help": "도움이 더 필요하십니까?", "tux-editor-ask-help": "자세한 정보에 대한 질문", "tux-editor-tm-match": "$1% 일치", - "tux-warnings-more": "{{PLURAL:$1|$1개 더 보기}}", - "tux-warnings-hide": "숨기기", - "tux-editor-save-failed": "번역을 저장하는 데 실패했습니다: $1", + "tux-notices-more": "{{PLURAL:$1|$1개 더 보기}}", + "tux-notices-hide": "숨기기", + "tux-editor-save-failed": "번역을 게시하는 데 실패했습니다: $1", "tux-editor-n-uses": "$1{{PLURAL:$1|번}} 쓰임", "tux-editor-message-desc-more": "더 보기", "tux-editor-message-desc-less": "덜 보기", @@ -336,10 +337,10 @@ "tux-proofread-action-tooltip": "검토한 것으로 표시", "tux-proofread-edit-label": "편집", "tux-editor-page-mode": "문서", - "tux-editor-outdated-warning": "이 번역은 업데이트해야 합니다.", - "tux-editor-outdated-warning-diff-link": "차이 보기", + "tux-editor-outdated-notice": "이 번역은 업데이트해야 합니다.", + "tux-editor-outdated-notice-diff-link": "차이 보기", "tux-editor-doc-editor-placeholder": "메시지 설명문", - "tux-editor-doc-editor-save": "설명문 저장", + "tux-editor-doc-editor-save": "설명문 게시", "tux-editor-doc-editor-cancel": "취소", "tux-messagetable-more-messages": "다른 {{PLURAL:$1|메시지}} $1개", "tux-messagetable-loading-messages": "{{PLURAL:$1|메시지}}를 불러오는 중...", @@ -375,12 +376,13 @@ "tux-editor-message-tools-translations": "모든 번역", "tux-editor-message-tools-linktothis": "이 메시지로 가는 링크", "tux-editor-loading": "불러오는 중...", + "tux-editor-loading-failed": "번역 도우미를 불러오지 못했습니다: $1", "translate-search-more-languages-info": "{{PLURAL:$1|언어}} $1개 더 보기", "translate-statsbar-tooltip": "$1% 번역됨, $2% 검토됨", "translate-statsbar-tooltip-with-fuzzy": "$1% 번역됨, $2% 검토됨, $3% 오래됨", "translate-search-more-groups-info": "{{PLURAL:$1|그룹}} $1개 더 보기", - "translate-ulsdep-title": "구성 오류", - "translate-ulsdep-body": "번역 확장 기능은 [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector 일반 언어 선택기 확장 기능]을 필요로 합니다.", + "translate-syntax-error": "번역에 문법 오류가 있습니다", "tux-session-expired": "로그인하고 있지 않습니다. 별도의 탭에서 로그인하세요. 대안으로, 저장하지 않은 번역을 복사하고, 로그인한 다음, 이 문서로 돌아와 다시 번역을 입력하세요.", - "tux-nojs": "이 도구는 자바스크립트 없이 동작하지 않습니다. 자바스크립트를 사용하지 않아 동작하지 않거나 이 브라우저가 지원되지 않습니다." + "tux-nojs": "이 도구는 자바스크립트 없이 동작하지 않습니다. 자바스크립트가 비활성화되어 있거나, 작동하지 않았거나, 이 브라우저는 지원하지 않습니다.", + "specialpages-group-translation": "번역" } diff --git a/MLEB/Translate/i18n/core/krc.json b/MLEB/Translate/i18n/core/krc.json index d45860bc..5f7c99d7 100644 --- a/MLEB/Translate/i18n/core/krc.json +++ b/MLEB/Translate/i18n/core/krc.json @@ -1,11 +1,10 @@ { "@metadata": { "authors": [ - "Iltever", - "Ernác" + "Ernác", + "Iltever" ] }, - "translate-magic-notsaved": "Тюрлендириуюгюз сакъланмады!", "translate-total": "Джазылгъанла", "translate-mgs-column-language": "Тил", "translate-documentation-language": "Билдириуню документациясы" diff --git a/MLEB/Translate/i18n/core/ksh.json b/MLEB/Translate/i18n/core/ksh.json index 1a39b58b..4e11569b 100644 --- a/MLEB/Translate/i18n/core/ksh.json +++ b/MLEB/Translate/i18n/core/ksh.json @@ -51,31 +51,11 @@ "translate-use-suggestion": "Donn heh dä Vörschlaach en et Övversäzongsfeld endraare. Wat alt dren es, verschwindt.", "translate-edit-nopermission": "Do bruchs dat Rääsch, Täxte un Nohreeschte övversäze ze dörve.", "translate-edit-askpermission": "Donn öm dat Rääsch froore", - "translate-magic-pagename": "Dem MehdijaWikki sing Extras övversäze", - "translate-magic-help": "Heh kanns_De Zweijtnahme fö {{int:specialpage}}e, de su jenannte Zauberwööter, un de Nahme vun de Appachtemangs översäze.\n\n{{int:specialpage}}e ier Zweijtnahme, un de Zauberwööter könne mieh wi eijn Övversäzong han.\nDozwesche schteijt jehweijls_e \",\" (Komma).\nDe Nahme fö_de Appachtemangs könne nur eijn Övversätzong han.\n\nBeij de Övversäzonge för de Appachtemangs ier Nahme hät „$1 talk“ ene schpezjälle Senn.\nDat „$1“ schteijt doh als enne Plazhallder för dä Projäknahme (zem Beijshpöll dat „{{SITENAME}}“ en: „Övver {{GRAMMAR:Akkusative|{{SITENAME}}}} klaafe“).\nWann Ding Schprohch ed nit heerjitt, dat_De en jrammatesch reschtejje Forrem henkreßß, ohne an dämm Projek singem Name ändere zo mößße, dann lohs_ed ons weße. De kanns et op de Sigg för [[Support|{{int:bw-mainpage-support-title}}]] schrihve.\n\nDo moß en de Jrop „Övversäzer“ sen, för heh Änderonge maache ze künne.\nÄnderonge wehde ehts bem Klicke op onge dä Knopp förr_et Seschere faßjehallde.", - "translate-magic-module": "Dat Modul:", - "translate-magic-submit": "Lohß jonn!", - "translate-magic-cm-export": "Äxpocht aanfange", - "translate-magic-nothing-to-export": "Et jit nix ze expoteeere.", - "translate-magic-cm-to-be": "Soll wääde", - "translate-magic-cm-current": "Eß jäz", - "translate-magic-cm-original": "Ojinahl", - "translate-magic-cm-comment": "Koot zesamme jefaß, Quell", - "translate-magic-cm-save": "Seschere", - "translate-magic-cm-updatedusing": "Övver [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] jeänndert.", - "translate-magic-cm-savefailed": "Et Seschere eß donäve jejange", - "translate-magic-special": "Zweijtname för {{int:specialpages}}", - "translate-magic-words": "Zauberwööter", - "translate-magic-namespace": "Appachtemang_Name", - "translate-magic-notsaved": "Ding Änderonge sin nit faßjehallde!", - "translate-magic-errors": "Donn {{PLURAL:$1|dää Fähler|di Fähler|kein Fähler}} en Övversäzonge verbäßere:", - "translate-magic-saved": "Ding Änderonge sin faßjehallde.", "translate-checks-parameters": "{{PLURAL:$2|Dä Parrammeeter heh eß|Di Parrammeetere heh sen|dat Jedrißße heh iß}} nit jebruch woode: $1", - "translate-checks-parameters-unknown": "Hee {{PLURAL:$2|dä Parrammeeter|di Parrammeetere|dat Jedrißße}} kënne mer nit:\n$1", + "translate-checks-parameters-unknown": "Hee {{PLURAL:$2|dä Parrammeeter|di Parrammeetere|dat Jedrißße}} kënne mer nit:\n$1", "translate-checks-balance": "Do {{PLURAL:$2|jëijd_en Klammer nit op odder|jonn ongerscheedlish fill Klammere op un|eß Dreß}} zoh: $1", "translate-checks-links": "Hee {{PLURAL:$2|dä Lengk eß|di Lengks senn|dat Jedrißße}} problemattesch: $1", "translate-checks-links-missing": "Hee {{PLURAL:$2|dä Lengk fäält:|di $2 Lenks fäähle:|fäähle kei Lengks.}} $1", - "translate-checks-xhtml": "Donn hee {{PLURAL:$2|dat Kommando|di Kommandose|dat Jedrißße}} ußtuusche, un schriif de reschtije do för hen: $1", "translate-checks-plural": "De Ojjinaal-Nohreesch bruch {{PLURAL:}}, ävver de Övversäzong deijt dat nit?", "translate-checks-plural-forms": "{{PLURAL:}} es med {{PLURAL:$1|eine Form|$1 Forme|keine Form}} enjesaz, ävver {{PLURAL:$2|bloß ein Form weed|bloß $2 Forme wääde|kein Form weed heh}} ongerschtöz, ävver zohsäzlesch noch 0= un 1=", "translate-checks-plural-dupe": "{{PLURAL:}} hät {{PLURAL:$1|en dubbelte Form|dubbelte Forme|kein dubbelte Forme}} aam Ängk, ävver {{PLURAL:$1|Metmaacher|Metmaacher|Metmaacher}} sullt als {{PLURAL:$1|Metmaacher}} jeschrevve wääde.", @@ -85,7 +65,6 @@ "translate-checks-parametersnotequal": "De Aanzahl Parrammeeter es {{PLURAL:$1|$1}}, sulld ävver {{PLURAL:$2|$2}} sin.", "translate-checks-malformed": "$1 es esu nit jöltesch.", "translate-checks-fudforum-syntax": "Nemm $1 aanshtatt vun $2 en heh dämm Projäk.", - "translate-pref-nonewsletter": "Donn mer keijn Rondschriive övver de eläktronesche Poß scheke", "translate-pref-editassistlang": "Schprohche för ze Hällfe:", "prefs-translate": "Enshtällunge för et Övversäze", "translate-pref-editassistlang-help": "En Leß met Köözelle för Schprohche.\nDe Övversäzonge en di Schprohche wääde Der jezeich, wann De aam Övversäze bes.\nWat De jezeisch kreß, wann De nix enndrähß, deiht vun dä Schprohch afhange, en di De övversaz.", @@ -217,7 +196,6 @@ "translate-import-err-no-such-file": "Di Datei „$1“ jidd_et nit, udder se es nit heh en et Wiki huhjelaade.", "translate-import-err-stale-group": "De Jropp met Täxte un Nohreeschte, woh heh di Dattei bei jehüüre sull, di jidd_et jaanit.", "translate-import-err-no-headers": "Di Dattei es nit em Jettäx Fommaht vum Zohsazprojramm Translate: Kunnt de Jropp un Schprohch nit uß de Koppdahte eruß krijje.", - "translate-import-err-warnings": "Di Dattei es nit em reschteje Fommaat. Beß sescher, dat kein vun Dinge Projramme de msgctxt Felder fott määt. De Einzelheite: $1", "translate-js-summary": "Koot Zosammejefaß:", "translate-js-save": "Faßhalde", "translate-js-next": "Faßhalde un op de nähkßte jonn", @@ -296,8 +274,8 @@ "tux-editor-need-more-help": "Mih Enfommazjuhne jevällesch?", "tux-editor-ask-help": "Frooch noh!", "tux-editor-tm-match": "$1% zopaß", - "tux-warnings-more": "{{PLURAL:$1|noch ein|noch $1|nix mih}}.", - "tux-warnings-hide": "verschteische", + "tux-notices-more": "{{PLURAL:$1|noch ein|noch $1|nix mih}}.", + "tux-notices-hide": "verschteische", "tux-editor-save-failed": "Di Övversäzong afzeschpeischere hät nit jeflup. Der Jrond es: $1", "tux-editor-n-uses": "{{PLURAL:$1|0=nit|1=eimohl|$1 Mohl}} jebruch", "tux-editor-message-desc-more": "Mih aanzeije", @@ -310,8 +288,8 @@ "tux-proofread-action-tooltip": "Donn di Övversäzong esu behallde, wi se es", "tux-proofread-edit-label": "Ändere", "tux-editor-page-mode": "Kumplät", - "tux-editor-outdated-warning": "Heh di Övversäzong künnt Verbäßeronge nüüdesch han.", - "tux-editor-outdated-warning-diff-link": "De Ongescheide aanzeije", + "tux-editor-outdated-notice": "Heh di Övversäzong künnt Verbäßeronge nüüdesch han.", + "tux-editor-outdated-notice-diff-link": "De Ongescheide aanzeije", "tux-editor-doc-editor-placeholder": "Aanjahbe övver dä Täx udder di Nohreesch", "tux-editor-doc-editor-save": "Faßhallde", "tux-editor-doc-editor-cancel": "Ophühre", @@ -351,8 +329,6 @@ "translate-statsbar-tooltip": "$1% övversaz, $2% jähjejelässe", "translate-statsbar-tooltip-with-fuzzy": "$1% fähdesch övversaz, $3% övverhollt, $2% jähjejelässe", "translate-search-more-groups-info": "{{PLURAL:$1|Ein Jropp|$1 Jroppe|Kein Jropp}} mih", - "translate-ulsdep-title": "Fähler bei de Enschtällonge", - "translate-ulsdep-body": "Dat Zohsazprojramm Translate bruch dat Zohsazprojramm [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector e-mailUniversal Language Selector].", "tux-session-expired": "Do bes nit mih ennjelogg.\nBes esu johd un donn en enem extra Brauserfinster widder enlogge.\nUdder donn Ding Övversäzonge woh anders faßhallde, di noch nit em Wiki jeseschert woodte, donn neu enlogge, un jangk dann retuur op heh di Sigg, un donn Ding Övversäzonge widder erövver koppeere!", "tux-nojs": "Heh di Sigg bruch JahvaSkrepp." } diff --git a/MLEB/Translate/i18n/core/ksw.json b/MLEB/Translate/i18n/core/ksw.json new file mode 100644 index 00000000..16c407e3 --- /dev/null +++ b/MLEB/Translate/i18n/core/ksw.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "SawJaemin" + ] + }, + "translate-documentation-language": "မဲဆ့ၣ် လံာ်တၢ်ကွဲးနီၣ်ကွဲးဃါ" +} diff --git a/MLEB/Translate/i18n/core/ku-latn.json b/MLEB/Translate/i18n/core/ku-latn.json index a9c77e9d..e188db96 100644 --- a/MLEB/Translate/i18n/core/ku-latn.json +++ b/MLEB/Translate/i18n/core/ku-latn.json @@ -1,10 +1,11 @@ { "@metadata": { "authors": [ + "Bikarhêner", "George Animal", "Ghybu", "Gomada", - "Bikarhêner" + "Guherto" ] }, "translate": "Wergerîne", @@ -35,16 +36,6 @@ "translate-edit-nopermission": "Bona tu karibî peyaman wergerînî mafên wergerandinê pêwist e.", "translate-edit-askpermission": "Destûrê bistîne", "translate-export-form-format": "Format", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Here", - "translate-magic-cm-export": "Bişîne", - "translate-magic-cm-current": "Niha", - "translate-magic-cm-original": "Orjînal", - "translate-magic-cm-comment": "Şîrove:", - "translate-magic-cm-save": "Tomar bike", - "translate-magic-cm-savefailed": "Tomarkirin têkçû", - "translate-magic-notsaved": "Guherandina te nehate tomarkirin!", - "translate-magic-saved": "Guherandinên te hatin tomarkirin.", "translate-pref-editassistlang": "Zimanên alîkar:", "prefs-translate": "Vebijarkên wergerê", "right-translate-manage": "Komên peyaman bi rêve bibe.", @@ -107,7 +98,7 @@ "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Wergêr}}|Wergêr}}: $1", "supportedlanguages-recenttranslations": "wergerên niha", "supportedlanguages-count": "Bi tevahî $1 {{PLURAL:$1|ziman}}", - "translate-save": "($1) tomar bike", + "translate-save": "($1) biweşîne", "translate-jssti-add": "Têxe lîsteyê", "managemessagegroups": "Birêvebirina komên peyaman", "translate-manage-import-diff": "Peyam $1 |Çalakî: $2", @@ -117,7 +108,8 @@ "translate-manage-action-ignore": "Paşguh bike", "translate-import-load": "Dosyeyê bar bike", "translate-js-summary": "Kurte:", - "translate-js-save": "Tomar bike", + "translate-js-save": "Biweşîne", + "translate-js-next": "Biweşîne û yê din veke", "translate-js-skip": "Derbasî ya din bibe", "translate-js-history": "Dîroka wergerê", "translate-js-support": "Bipirse", @@ -150,10 +142,10 @@ "tux-status-fuzzy": "Kevnbûyî", "tux-status-proofread": "Nirxandî", "tux-status-translated": "wergerand", - "tux-status-saving": "Tê tomarkirin...", - "tux-status-unsaved": "Nehate tomarkirin", + "tux-status-saving": "Tê weşandin...", + "tux-status-unsaved": "Neweşandî", "tux-editor-placeholder": "Wergera te", - "tux-editor-save-button-label": "Wergerê tomar bike", + "tux-editor-save-button-label": "Wergerê biweşîne", "tux-editor-skip-button-label": "Derbasî ya din bibe", "tux-editor-cancel-button-label": "Betal bike", "tux-editor-confirm-button-label": "Wergerê bipesinîne", @@ -164,8 +156,8 @@ "tux-editor-need-more-help": "Zêdetir alîkarî hewce ye?", "tux-editor-ask-help": "Ji bo agahiyên berfirehtir bipirse", "tux-editor-tm-match": "$1% lê tê", - "tux-warnings-more": "{{PLURAL:$1|zêdetir $1}}", - "tux-warnings-hide": "veşêre", + "tux-notices-more": "{{PLURAL:$1|zêdetir $1}}", + "tux-notices-hide": "veşêre", "tux-editor-save-failed": "Tomarkirina wergerê biser neket:$1", "tux-editor-message-desc-more": "Zêdetir bibîne", "tux-editor-message-desc-less": "Kêmtir bibîne", @@ -177,8 +169,8 @@ "tux-proofread-action-tooltip": "Wek nirxandî nîşan bide", "tux-proofread-edit-label": "Biguherîne", "tux-editor-page-mode": "Rûpel", - "tux-editor-outdated-warning": "Ev werger divê bê rojanekirin.", - "tux-editor-outdated-warning-diff-link": "Cudahiyan nîşan bide", + "tux-editor-outdated-notice": "Ev werger divê bê rojanekirin.", + "tux-editor-outdated-notice-diff-link": "Cudahiyan nîşan bide", "tux-editor-doc-editor-save": "Belgekirinê tomar bike", "tux-editor-doc-editor-cancel": "Betal bike", "tux-messagetable-more-messages": "$1 {{PLURAL:$1|peyamên}} din", diff --git a/MLEB/Translate/i18n/core/la.json b/MLEB/Translate/i18n/core/la.json index 00a2c328..8ece934a 100644 --- a/MLEB/Translate/i18n/core/la.json +++ b/MLEB/Translate/i18n/core/la.json @@ -1,15 +1,14 @@ { "@metadata": { "authors": [ + "Andrew Dalby", "SPQRobin", - "UV", - "Andrew Dalby" + "UV" ] }, "translate": "Traducere", "translate-next": "Pagina proxima", "translate-prev": "Pagina superior", - "translate-magic-cm-save": "Servare", "translate-sidebar-alltrans": "Linguis aliis", "translate-documentation-language": "Ut facilius convertatur" } diff --git a/MLEB/Translate/i18n/core/lb.json b/MLEB/Translate/i18n/core/lb.json index ae6b025d..9b5395b1 100644 --- a/MLEB/Translate/i18n/core/lb.json +++ b/MLEB/Translate/i18n/core/lb.json @@ -54,43 +54,23 @@ "translate-edit-askpermission": "Autorisatioun kréien", "exporttranslations": "Iwwersetzungen exportéieren", "translate-export-form-format": "Format", - "translate-export-invalid-format": "Gitt w.e.g. e valabele Format an.", + "translate-export-invalid-format": "Gitt wgl. e valabele Format an.", "translate-export-not-supported": "Den Export vun Iwwersetzunge gëtt net ënnerstëtzt.", - "translate-magic-pagename": "Erweidert MediaWiki Iwwersetzung", - "translate-magic-help": "Dir kënnt d'Aliase vu Spezialsäiten, magesch Wierder an Nummraum Nimm iwwersetzen.\n\nSpezial Säit ''Aliasen'' a ''magesch Wierder'' kënne méi Iwwersetzungen hunn.\nIwwersetzunge gi mat engem Komma (,) getrennt.\nNummraim kënnen nëmmen eng Iwwersetzung hunn.\n\nD'Iwwersetzung vum Diskussiouns-Nummraum vum Projet $1 Diskussioun ka komplizéiert sinn.\n$1 gëtt duerch den Numm vum Projet ersat ersat (zum Beispill {{ns:project_talk}}).\nWann et an Ärer Sprooch net méiglech ass fir e gëltegen Ausdrock ze maachen ouni den NUmm vum Site z'änneren, da kontaktéiert eis w.e.g op [[Support]].\n\nDir musst am Grupp vun den Iwwersetzer si fir Ännerungen ofspäicheren ze kënnen.\nÄnnerunge ginn net gespäichert bis Dir de Knäppchen hei ënnendrënner geklickt hutt.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Weisen", - "translate-magic-cm-export": "Export", - "translate-magic-nothing-to-export": "Et gëtt näischt z'exportéieren.", - "translate-magic-cm-to-be": "Gëtt", - "translate-magic-cm-current": "Aktuell", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Bemierkung:", - "translate-magic-cm-save": "Späicheren", - "translate-magic-cm-updatedusing": "Geännert mat Hëllef vu [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Späicheren huet net funktionéiert", - "translate-magic-special": "Spezialsäit vun den 'Aliasnimm'", - "translate-magic-words": "Magesch Wierder", - "translate-magic-namespace": "Nummraum Nimm", - "translate-magic-notsaved": "Är Ännerung gouf net gespäichert!", - "translate-magic-errors": "Verbessert w.e.g. {{PLURAL:$1|dëse|dës}} Feeler an den Iwwersetzungen:", - "translate-magic-saved": "Är Ännerunge goufe gespäichert.", - "translate-checks-parameters": "{{PLURAL:$2|Dëse Parameter gëtt|Dës Parameter ginn}} net benotzt:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Dëse Parameter ass|Dës Parameter sinn }} onbekannt:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Dëse Parameter gëtt|Dës Parameter ginn}} net benotzt:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Dëse Parameter ass|Dës Parameter sinn }} onbekannt:\n$1", "translate-checks-balance": "Et gëtt eng ongerued Zuel vu {{PLURAL:$2|Klammere|Klammere}} benotzt:\n$1", "translate-checks-links": "{{PLURAL:$2|Dëse Link ass|Dës Linke si}} problematesch:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Dëse Link feelt|Dës $2 Linke feelen}}:\n$1", - "translate-checks-xhtml": "Ersetzt {{PLURAL:$2|dësen Tag|dës Tagen}} w.e.g. duerch déi korrekt:\n$1", "translate-checks-plural": "D'Definitioun benotzt {{PLURAL:}} awer d'Iwwersetzung mécht dat net.", "translate-checks-plural-forms": "Fir {{PLURAL:}}{{PLURAL:$1|gouf eng Form|goufen $1 Formen}} uginn. Et {{PLURAL:$2|gëtt awer nëmmen eng Form|ginn awer nëmme(n) $2 Formen}} ënnerstëtzt (ausser de Formen 0= an 1= ).", "translate-checks-plural-dupe": "{{PLURAL:}} huet zweemol déiselwecht Zeechen um Schluss. {{PLURAL:$1|Schof|Schof}} soll sou geschriwwe ginn: {{PLURAL:$1|Schof}}.", + "translate-checks-smartformat-plural-missing": "Dës Iwwersetzung muss eng Méizuel fir d'Variabel $1 hunn.", "translate-checks-pagename": "Nummraum geännert duerch d'Definitioun", "translate-checks-format": "Dës Iwwersetzung translation entsprecht net der Definitioun oder huet eng Syntax déi net gëlteg ass: $1", - "translate-checks-escape": "Dës Escape-Sequenzen kënnen ongewollt sinn: $1", + "translate-checks-escape": "{{PLURAL:$2|Dëst Escape-Zeeche kann|Dës Escape-Zeeche kënnen}} ongewollt sinn: $1\n{{PLURAL:$4|E valabelt Escape-Zeechen ass |Vvalabelt Escape-Zeechen sinn (ënneraneren):}} $3.", "translate-checks-parametersnotequal": "D'Zuel vun de Parameteren ass {{PLURAL:$1|$1}} et {{PLURAL:$2|dierft awer nëmmen ee sinn|missten der awer $2 sinn}}.", "translate-checks-malformed": "$1 ass formal net valabel.", "translate-checks-fudforum-syntax": "$1 aplaz vu(n) $2 an dësem Projet benotzen.", - "translate-pref-nonewsletter": "Schéckt mir keng E-Mail-Newsletter.", "translate-pref-editassistlang": "Sproochen déi ënnerstëtzen:", "prefs-translate": "Optioune vun der Iwwersetzung", "translate-pref-editassistlang-help": "Mat Komma getrennte Lëscht vun de Sproochcoden.\nIwwersetzung vun engem Message an dës Sprooche gëtt gewisen wann Dir iwwersetzt.\nD'Standard-Lëscht vu Sproochen hànkt vun Ärer Sprooch of.", @@ -143,14 +123,14 @@ "translate-tag-page-desc": "Iwwersetzung vun der Wiki-Säit [[$2|$1]] vu(n) $3 ($4).", "translate-sidebar-alltrans": "An anere Sproochen", "translations": "All Iwwersetzungen", - "translations-summary": "Gitt w.e.g. en Numm vun engem Message hei ënnendrënner an fir all disponibel Iwwersetzungen ze weisen.", + "translations-summary": "Gitt wgl. en Numm vun engem Message hei ënnendrënner an fir all disponibel Iwwersetzungen ze weisen.", "translate-translations-no-message": "\"$1\" ass kee Message den iwwersat ka ginn", "translate-translations-none": "Et gëtt keng Iwwersetzunge fir \"$1\"", "translate-translations-count": "{{PLURAL:$1|Eng Iwwersetzung|$1 Iwwersetzunge}} fonnt.", "translate-translations-fieldset-title": "Message", "translate-translations-messagename": "Numm:", "translate-translations-project": "Projet:", - "translate-translations-including-no-param": "Gitt w.e.g. e gëltege Code vum Message beim Parameter vun der Ënnersäit unn", + "translate-translations-including-no-param": "Gitt wgl. e gëltege Code vum Message beim Parameter vun der Ënnersäit unn", "translate-translations-history-short": "V", "languagestats": "Sproochstatistiken", "languagestats-summary": "Dës Säit weist d'Statistike vun der Iwwersetzung fir all Gruppe vu Message fir eng Sprooch.", @@ -193,8 +173,10 @@ "supportedlanguages-recenttranslations": "rezent Iwwersetzungen", "supportedlanguages-count": "{{PLURAL:$1|Eng Sprooch|$1 Sproochen}} am Ganzen.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|Ännerung|Ännerungen}} - lescht Ännerung viru(n) $3 {{PLURAL:$3|Dag|Deeg}}", + "translate-supportedlanguages-cached": "Dës Informatioune goufe virun $1 tëschegespäichert.", "abusefilter-edit-builder-vars-translate-source-text": "Quelltext vun der Iwwersetzungseenheet", - "translate-save": "Späicher ($1)", + "abusefilter-edit-builder-vars-translate-target-language": "Zilsprooch fir d'Iwwersetzung", + "translate-save": "Publizéieren ($1)", "translate-jssti-add": "Op d'Lëscht dobäisetzen", "managemessagegroups": "Gestioun vun de Gruppe vu Messagen", "translate-smg-notallowed": "Dir däerft dës Aktioun net maachen.", @@ -204,6 +186,9 @@ "translate-smg-more": "Nom Späichere vun dësen Ännerungen mussen nach méi Ännerunge verschafft ginn.", "translate-smg-left": "Inhalt vum Message op der Wiki", "translate-smg-right": "Ännerungen déi erakommen", + "translate-smg-rename-select": "Eraussichen", + "translate-smg-rename-cancel": "Ofbriechen", + "translate-smg-rename-no-msg": "Keng Messagë fonnt.", "translate-manage-import-diff": "Message $1 | Aktiounen: $2", "translate-manage-import-new": "Neie Message $1", "translate-manage-import-deleted": "Geläschte Message $1", @@ -211,14 +196,17 @@ "translate-manage-action-conflict": "Importéieren a mat 'FUZZY' markéieren", "translate-manage-action-ignore": "Ignoréieren", "translate-manage-action-fuzzy": "Iwwersetzungen importéieren a mat 'FUZZY' markéieren", + "translate-manage-action-rename": "Ëmbenennen", + "translate-manage-action-ignore-change": "Ännerung vun der Iwwersetzung ignoréieren", "translate-manage-nochanges": "Et gi keng Ännerungen an den Definitioune vun de Message vun dësem Grupp.", "translate-manage-nochanges-other": "Et gouf keng Ännerunge fir dës Sprooch.\nBenotzt de Link ënnendrënner fir zréck op d'Säit mat den Detailer vum Grupp ze goen.", - "translate-manage-inconsistent": "Inkonsistenz an der Ufro fonnt.\nKuckt w.e.g. no fir Ännerungen a probéiert nach eng Kéier. Detailer: $1", - "translate-manage-toolong": "Déi maximal Zäit vun der Beaarbechtung vun $1 {{PLURAL:$1|Sekonn|Sekonne}} gouf iwwerschratt.\nSchéckt de Formulaire w.e.g. nach emol fir mat der Beaarbechtung weiderzefueren.", + "translate-manage-inconsistent": "Inkonsistenz an der Ufro fonnt.\nKuckt wgl. no fir Ännerungen a probéiert nach eng Kéier. Detailer: $1", + "translate-manage-toolong": "Déi maximal Zäit vun der Beaarbechtung vun $1 {{PLURAL:$1|Sekonn|Sekonne}} gouf iwwerschratt.\nSchéckt de Formulaire wgl. nach emol fir mat der Beaarbechtung weiderzefueren.", "translate-manage-import-summary": "Eng nei Versioun vun enger externer Quell gëtt importéiert", - "translate-manage-conflict-summary": "En nei Versioun gëtt vun enger externer Quell imortéiert. W.e.g. nokucken.", + "translate-manage-import-rename-summary": "An externer Quell ëmbenannt", + "translate-manage-conflict-summary": "En nei Versioun gëtt vun enger externer Quell imortéiert. Wgl. nokucken.", "translate-manage-submit": "Maachen", - "translate-manage-intro-other": "Ënnendrënner ass eng Lëscht vun den Ännerungen vun den Iwwersetzungen an der Sprooch $1.\nKuckt d'Ännerunge w.e.g. no a wielt déi Aktioun déi Dir fir déi jeeweileg Iwwersetzung wëllt.\nWann Dir decidéiert fir Ännerungen z'ignoréieren, ass dës Aktioun just temporär.", + "translate-manage-intro-other": "Ënnendrënner ass eng Lëscht vun den Ännerungen vun den Iwwersetzungen an der Sprooch $1.\nKuckt d'Ännerunge wgl. no a wielt déi Aktioun déi Dir fir déi jeeweileg Iwwersetzung wëllt.\nWann Dir decidéiert fir Ännerungen z'ignoréieren, ass dës Aktioun just temporär.", "translate-manage-import-ok": "Importéiert: $1", "translate-manage-import-done": "Import fäerdeg!", "importtranslations": "Iwwersetzungen importéieren", @@ -230,15 +218,14 @@ "translate-import-err-no-such-file": "De Fichier $1 gëtt et net oder gouf lokal net eropgelueden.", "translate-import-err-stale-group": "De Grupp vu Messagen zu deem dëse Fichier gehéiert gëtt et net.", "translate-import-err-no-headers": "De Fichier ass net am Format \"Gettext\" deen d'Erweiderung \"Translate\" brauch:\nDe Grupp an d'Sprooch konnte vun der Entête vum Fichier net bestëmmt ginn.", - "translate-import-err-warnings": "De Fichier ass net richteg forméiert.\nVergewëssert Iech datt Ären Editeursprogramm keng msgctxt Felder ewechhëllt.\nDetailler: $1", "translate-js-summary": "Resumé:", - "translate-js-save": "Späicheren", - "translate-js-next": "Späicheren an den Nächsten opmaachen", + "translate-js-save": "Publizéieren", + "translate-js-next": "Verëffentlechen an den Nächsten opmaachen", "translate-js-skip": "Op den Nächste goen", "translate-js-history": "Versioune vun der Iwwersetzung", "translate-js-support": "Fro stellen", "translate-js-support-title": "Frot no Hëllef wann net genuch Informatiounen do si fir de Message korrekt z'iwwersetzen", - "translate-js-support-unsaved-warning": "Dir hutt net gespäichert Iwwersetzungen.", + "translate-js-support-unsaved-warning": "Dir hutt net publizéiert Iwwersetzungen.", "translate-gs-pos": "Pos.", "translate-gs-code": "Code", "translate-gs-continent": "Kontinent", @@ -251,6 +238,7 @@ "translate-documentation-language": "Dokumentatioun vum Message", "translate-searchprofile": "Iwwersetzungen", "translate-searchprofile-tooltip": "An allen Iwwersetzunge sichen", + "translate-searchprofile-note": "Méi Optioune fir ze siche si mat der [$1 Iwwersetzungssich] disponibel.", "translate-search-languagefilter": "Filter no der Sprooch:", "translate-search-nofilter": "Kee Filter", "log-name-translationreview": "Logbuch vun den nogekuckten Iwwersetzungen", @@ -289,19 +277,19 @@ "tux-status-fuzzy": "Vereelst", "tux-status-proofread": "Nogekuckt", "tux-status-translated": "Iwwersat", - "tux-status-saving": "Späicheren...", - "tux-status-unsaved": "Net gespäichert", + "tux-status-saving": "Verëffentlechen...", + "tux-status-unsaved": "Net publizéiert", "tux-save-unknown-error": "En onbekannte Feeler ass geschitt.", "tux-editor-placeholder": "Är Iwwersetzung", "tux-editor-editsummary-placeholder": "Resumé (fakultativ)", "tux-editor-paste-original-button-label": "Quelltext drasetzen", "tux-editor-discard-changes-button-label": "Ännerungen annuléieren", - "tux-editor-save-button-label": "Iwwersetzung späicheren", + "tux-editor-save-button-label": "Iwwersetzung publizéieren", "tux-editor-skip-button-label": "Op den Nächste goen", "tux-editor-cancel-button-label": "Ofbriechen", "tux-editor-confirm-button-label": "Iwwersetzung confirméieren", "tux-editor-proofread-button-label": "Als nogekuckt markéieren", - "tux-editor-shortcut-info": "Dréckt \"$1\" fir ze späicheren oder \"$2\" fir op den nächste Message ze goen oder \"$4\" fir e Resumé unzeginn oder \"$3\" fir aner Tasturkierzel.", + "tux-editor-shortcut-info": "Dréckt \"$1\" fir ze confirméieren an op den nächsten Te3xt-Message ze goen, \"$2\" fir op den nächste Message ze goen, \"$4\" fir e Resumé unzeginn, oder dréckt op \"$3\" fir aner Tasturkierzel ze gesinn.", "tux-editor-edit-desc": "Dokumentatioun änneren", "tux-editor-add-desc": "Dokumentatioun dobäisetzen", "tux-editor-suggestions-title": "Virschléi", @@ -309,13 +297,13 @@ "tux-editor-need-more-help": "Braucht Dir méi Hëllef?", "tux-editor-ask-help": "No méi Informatioune froen", "tux-editor-tm-match": "$1% Iwwereneestëmmung", - "tux-warnings-more": "{{PLURAL:$1|$1 méi}}", - "tux-warnings-hide": "verstoppen", - "tux-editor-save-failed": "D'Späichere vun der Iwwersetzung huet net funktionéiert: $1", + "tux-notices-more": "{{PLURAL:$1|$1 méi}}", + "tux-notices-hide": "verstoppen", + "tux-editor-save-failed": "D'Publizéiere vun der Iwwersetzung huet net funktionéiert: $1", "tux-editor-n-uses": "gouf {{PLURAL:$1|ee mol|$1 mol}} gebraucht", "tux-editor-message-desc-more": "Méi weisen", "tux-editor-message-desc-less": "Manner weisen", - "tux-editor-clear-translated": "Déi Iwwersate verstoppen", + "tux-editor-clear-translated": "Déi Iwwersat verstoppen", "tux-editor-proofreading-mode": "Nokucken", "tux-editor-translate-mode": "Lëscht", "tux-editor-proofreading-hide-own-translations": "Är Iwwersetzunge verstoppen", @@ -323,10 +311,10 @@ "tux-proofread-action-tooltip": "Als nogekuckt markéieren", "tux-proofread-edit-label": "Änneren", "tux-editor-page-mode": "Säit", - "tux-editor-outdated-warning": "Dës Iwwersetzung muss eventuell aktualiséiert ginn.", - "tux-editor-outdated-warning-diff-link": "Ënnerscheeder weisen", + "tux-editor-outdated-notice": "Dës Iwwersetzung muss eventuell aktualiséiert ginn.", + "tux-editor-outdated-notice-diff-link": "Ënnerscheeder weisen", "tux-editor-doc-editor-placeholder": "Dokumentatioun vum Message", - "tux-editor-doc-editor-save": "Dokumentatioun späicheren", + "tux-editor-doc-editor-save": "Dokumentatioun pubéizéieren", "tux-editor-doc-editor-cancel": "Ofbriechen", "tux-messagetable-more-messages": "$1 {{PLURAL:$1|Message|Messagen}} méi", "tux-messagetable-loading-messages": "$1 {{PLURAL:$1|Message gëtt|Message gi}} gelueden ...", @@ -362,12 +350,13 @@ "tux-editor-message-tools-translations": "All Iwwersetzungen", "tux-editor-message-tools-linktothis": "Link op dëse Message", "tux-editor-loading": "Lueden...", + "tux-editor-loading-failed": "d'Hëllef fir d'Iwwersetzunge konnt net geluede ginn: $1", "translate-search-more-languages-info": "{{PLURAL:$1|Eng Sprooch|$1 Sprooche}} méi", "translate-statsbar-tooltip": "$1% iwwersat, $2% nogekuckt", "translate-statsbar-tooltip-with-fuzzy": "$1% iwwersat, $2% nogekuckt, $3% vereelst", "translate-search-more-groups-info": "$1 weider {{PLURAL:$1|Grupp|Gruppen}}", - "translate-ulsdep-title": "Astellungsfeeler", - "translate-ulsdep-body": "D'Iwwersetzungerweiderung hänkt vun der [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector Universeller Sproochauswiel-Erweiderung] of.", - "tux-session-expired": "Dir sidd net méi ageloggt. Loggt Iech w.e.g. an engem separaten Tab an. Alternativ kënnt Dir och eng Kopie vun den net-gespäicherten Iwwersetzunge maachen, Iech aloggen op dës Säit zréckkommen an Är Iwwersetzungen nees aginn.", - "tux-nojs": "Dësen Tool funktionéiert net ouni JavaScript. JavaScript ass ausgeschalt, funktionéiert net oder dëse Browser gëtt net ënnerstëtzt." + "translate-syntax-error": "Iwwersetzung huet Syntax-Feeler", + "tux-session-expired": "Dir sidd net méi ageloggt. Loggt Iech wgl. an engem separaten Tab an. Alternativ kënnt Dir och eng Kopie vun den net-gespäicherten Iwwersetzunge maachen, Iech aloggen op dës Säit zréckkommen an Är Iwwersetzungen nees aginn.", + "tux-nojs": "Dësen Tool funktionéiert net ouni JavaScript. JavaScript ass ausgeschalt, funktionéiert net oder dëse Browser gëtt net ënnerstëtzt.", + "specialpages-group-translation": "Iwwersetzung" } diff --git a/MLEB/Translate/i18n/core/lfn.json b/MLEB/Translate/i18n/core/lfn.json index 88f6ce2c..440822c4 100644 --- a/MLEB/Translate/i18n/core/lfn.json +++ b/MLEB/Translate/i18n/core/lfn.json @@ -3,8 +3,8 @@ "authors": [ "Cgboeree", "Katxis", - "Robin van der Vliet", - "Mafcadio" + "Mafcadio", + "Robin van der Vliet" ] }, "translate-page-language": "Lingua", diff --git a/MLEB/Translate/i18n/core/lg.json b/MLEB/Translate/i18n/core/lg.json index 5cffc350..d6917400 100644 --- a/MLEB/Translate/i18n/core/lg.json +++ b/MLEB/Translate/i18n/core/lg.json @@ -18,7 +18,6 @@ "translate-prev": "Dda ku lukulembera luno", "translate-page-description-legend": "Ebifa ku kiti kino", "translate-page-edit": "kyusa", - "translate-magic-submit": "Nona", "translate-statsf-scale-days": "Nnaku", "translate-statsf-scale-hours": "Ssaawa", "translate-statsf-submit": "Kulagako", diff --git a/MLEB/Translate/i18n/core/li.json b/MLEB/Translate/i18n/core/li.json index bd816d92..d4bab391 100644 --- a/MLEB/Translate/i18n/core/li.json +++ b/MLEB/Translate/i18n/core/li.json @@ -50,7 +50,6 @@ "translate-edit-askpermission": "Krieg toustumming", "exporttranslations": "Veur euverzèttinge oet", "translate-export-form-format": "Indeiling", - "translate-magic-cm-save": "Slaon op", "translate-rcfilters-translations": "Euverzèttinge", "translate-rcfilters-translations-only-label": "Euverzèttinge", "translate-rcfilters-translations-only-desc": "Verangeringe aan euvergezatje pagina's.", diff --git a/MLEB/Translate/i18n/core/lij.json b/MLEB/Translate/i18n/core/lij.json index 945a12b2..1fe062b2 100644 --- a/MLEB/Translate/i18n/core/lij.json +++ b/MLEB/Translate/i18n/core/lij.json @@ -4,6 +4,64 @@ "Giromin Cangiaxo" ] }, + "translate": "Tradue", + "translate-extensionname": "Tradue", + "translate-desc": "[[Special:Translate|Paggina speciale]] pe tradue MediaWiki e non solo", + "translate-fuzzybot-desc": "Sta chì a l'è 'n'utensa speciale de scistema doeuviâ da l'[https://www.mediawiki.org/wiki/Extension:Translate estenscion de Traduçion] de MediaWiki pi-a manutençion de traduçioin.\nSt'utensa chie a fa parte do software de MediaWiki e a no l'aparten a nisciun utente.", + "translate-taskui-export-to-file": "Esporta into formato nativo", + "translate-taskui-export-as-po": "Esporta pe-a tradussion off-line", + "translate-taction-translate": "Traduxi", + "translate-taction-proofread": "Revixon-a", + "translate-taction-lstats": "Statisteghe da lengoa", + "translate-taction-mstats": "Statisteghe do groppo di messaggi", + "translate-taction-export": "Esporta", + "translate-taction-disabled": "Questa assion a l'è dizabilitâ insce questo wiki.", + "translate-page-no-such-language": "A lengua specificâ a no l'è vallida.", + "translate-page-no-such-group": "O groppo specificou o no l'è vallido.", + "translate-page-disabled": "E tradussioin in questa lengua pe questo groppo son stæte dizabilitæ. Raxon:\n\n$1", + "translate-language-disabled": "E tradussioin inte sta lengua son dezabilitæ.", + "translate-page-settings-legend": "Impostassioin", + "translate-page-group": "Groppo", + "translate-page-language": "Lengua", + "translate-page-limit": "Limmite", + "translate-page-limit-option": "$1 {{PLURAL:$1|messaggio|messaggi}} pe paggina", + "translate-submit": "Otegni", + "translate-page-navigation-legend": "Navegaçión", + "translate-page-showing": "Vixoalizassion di messaggi da $1 a $2 de $3.", + "translate-page-showing-all": "Vixoalizassion $1 {{PLURAL:$1|messaggio|messaggi}}.", + "translate-page-showing-none": "Nisciun messaggio da mostrâ.", + "translate-page-paging-links": "[ $1 ] [ $2 ]", + "translate-next": "Paggina succesciva", + "translate-prev": "Paggina precedente", + "translate-page-description-legend": "Informassioin in sciô groppo", + "translate-page-edit": "modìfica", + "translate-optional": "(opçionâ)", + "translate-ignored": "(ignorou)", + "translate-edit-title": "Modiffica \"$1\"", + "translate-edit-definition": "Definission do messaggio", + "translate-edit-translation": "Traduçion", + "translate-edit-contribute": "contribuisci", + "translate-edit-no-information": "Sto messaggio chie o no g'ha de documentassion.\nSe ti sæ dovve ò comme sto messaggio o l'è doeuviou, ti poeu agiutâ i atri tradutoî azonzendo a documentassion a sto messaggio.", + "translate-edit-information": "Informassioin in sciô messaggio ($1)", + "translate-edit-in-other-languages": "Messaggio in atre lengue", + "translate-edit-warnings": "Avvixi in scê tradussioin incomplete", + "translate-edit-tmmatch-source": "Testo d'origgine pe-a tradussion: $1", + "translate-edit-tmmatch": "$1 % de corispondensa", + "translate-use-suggestion": "Sostituisci a tradussion corente con sto suggerimento.", + "translate-edit-nopermission": "Pe tradue di messaggi te ghe voeu i driti de tradussion.", + "translate-edit-askpermission": "Otegni aotorizzassion", + "exporttranslations": "Esporta tradussioin", + "translate-export-form-format": "Formato", + "translate-export-invalid-format": "Speciffica un formato vallido.", + "translate-export-not-supported": "L'esportassion de tradussioin a no l'è amissa.", + "translate-export-format-notsupported": "O formato d'esportassion specificou o no l'è amisso da-o groppo messaggi.", + "translate-checks-parameters": "{{PLURAL:$2|O seguente parammetro o no l'è stæto doeuviou|I seguenti parammetri no son stæti doeuviæ}}: $1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|O seguente parammetro o l'è sconosciuo|I seguenti parammetri son sconosciui}}:\n$1", + "translate-checks-balance": "Gh'è 'n nummero despa de {{PLURAL:$2|parentexi}}: $1", + "translate-checks-links": "{{PLURAL:$2|O seguente ingancio o l'è problemattico|I seguenti $2 inganci son problemattichi}}: $1", + "translate-checks-links-missing": "Gh'amanca {{PLURAL:$2|o seguente ingancio|i $2 seguenti inganci}}:\n$1", + "translate-checks-plural": "La definission a l'adoeuvia {{PLURAL:}} ma a tradussion no.", + "languagestats": "Statisteghe da lengoa", "translate-js-support": "Fanni 'na domanda", "translate-documentation-language": "Documentassion do messaggio" } diff --git a/MLEB/Translate/i18n/core/lki.json b/MLEB/Translate/i18n/core/lki.json index ca0f6f67..ebaf50fe 100644 --- a/MLEB/Translate/i18n/core/lki.json +++ b/MLEB/Translate/i18n/core/lki.json @@ -42,22 +42,6 @@ "translate-edit-no-information": "این پیغام دارای توضیحات نیست.\n''اگر می‌دانید که این پیغام چگونه یا در کجا استفاده می‌شود، می‌توانید با اضافه کردن توضیحات به دیگر ترجمه‌کنندگان کمک کنید.", "translate-edit-in-other-languages": "پەیام وە زوونەلێ ترآ", "translate-edit-tmmatch-source": "متن منبع ترجمه: $1", - "translate-magic-module": "پودمان:", - "translate-magic-submit": "بیاور", - "translate-magic-cm-export": "در بِردن", - "translate-magic-nothing-to-export": "چیزی برای برون‌بری وجود ندارد.", - "translate-magic-cm-to-be": "آینده", - "translate-magic-cm-current": "ایسگە(ایسە)", - "translate-magic-cm-original": "اصلی", - "translate-magic-cm-comment": "گةپ/قِسة:", - "translate-magic-cm-save": "هیشتن(ذخیره)", - "translate-magic-cm-updatedusing": "به روز شده توسط [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "هیشتن انجۆم نەگِرت(ذخیره نشد)", - "translate-magic-special": "نام مستعار صفحه‌های ویژه", - "translate-magic-words": "واژه‌های جادویی/سینگةری", - "translate-magic-namespace": "اسم فضاهای نام", - "translate-magic-notsaved": "ویرایش‌تان ذخیره نشد!", - "translate-magic-errors": "لطفاً {{PLURAL:$1|خطای|خطاهای}} زیر را در ترجمهٔ خود اصلاح کنید:", "translate-pref-editassistlang": "زوونةل ياري گةر:", "prefs-translate": "گزینه‌های ترجمه", "translate-pref-editassistlang-help": "فهرست کدهای زبان جدا شده با کاما.\nترجمه‌های پیغام‌های این زبان‌ها در زمانی که شما ترجمه می‌کنید نمایش داده می‌شوند.\nفهرست پیش‌فرض زبان‌ها بستگی به این دارد که زبان شما چیست.", @@ -136,7 +120,7 @@ "tux-editor-confirm-button-label": "تأیید ترجمه", "tux-editor-in-other-languages": "وۀ زوونۀلئ تر", "tux-editor-need-more-help": "راهنمایی بیشتر نیاز دارید؟", - "tux-warnings-hide": "ئآشاردن-پنهان کردن", + "tux-notices-hide": "ئآشاردن-پنهان کردن", "tux-editor-save-failed": "ذخیره‌سازی ترجمه نافرجام ماند:$1", "tux-editor-n-uses": "{{PLURAL:$1|زمان|زمان ها}} بار استفاده شده$1", "tux-editor-message-desc-more": "مشاهدهٔ بیشتر", @@ -149,8 +133,8 @@ "tux-proofread-action-tooltip": "نشانه‌گذاری به عنوان ترجمه‌شده", "tux-proofread-edit-label": "دەسکاری", "tux-editor-page-mode": ":وةڵگە(پەڕە)", - "tux-editor-outdated-warning": "این ترجمه ممکن است نیازمند به‌روزرسانی باشد.", - "tux-editor-outdated-warning-diff-link": "نمایش تفاوت‌ها", + "tux-editor-outdated-notice": "این ترجمه ممکن است نیازمند به‌روزرسانی باشد.", + "tux-editor-outdated-notice-diff-link": "نمایش تفاوت‌ها", "tux-editor-doc-editor-placeholder": "مستندات پیام", "tux-editor-doc-editor-cancel": "ئآهووسانن/لغو", "tux-messagetable-more-messages": "$1 {{PLURAL:$1|پیام}} بیشتر", diff --git a/MLEB/Translate/i18n/core/lmo.json b/MLEB/Translate/i18n/core/lmo.json index ce251cc7..1c337988 100644 --- a/MLEB/Translate/i18n/core/lmo.json +++ b/MLEB/Translate/i18n/core/lmo.json @@ -11,9 +11,6 @@ "translate-page-limit-option": "$1 {{PLURAL:$1|messagg|messagg}} per pagina", "translate-submit": "Fàm vedè", "translate-prev": "Pagina precedent", - "translate-magic-pagename": "Tradüzión estendüda de MediaWiki", - "translate-magic-submit": "Fàm vedè", - "translate-magic-cm-updatedusing": "Agiurnaa druvand: [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", "translate-pref-editassistlang": "Assistent di lenguv:", "prefs-translate": "Opzión di tradüzión", "translate-rc-translation-filter": "Filtra i tradüzión", diff --git a/MLEB/Translate/i18n/core/lo.json b/MLEB/Translate/i18n/core/lo.json index d4264c07..2685a1b5 100644 --- a/MLEB/Translate/i18n/core/lo.json +++ b/MLEB/Translate/i18n/core/lo.json @@ -1,9 +1,11 @@ { "@metadata": { "authors": [ + "BaRaN6161 TURK", "Passawuth" ] }, "translate": "ແປ", - "translate-desc": "[[Special:Translate|ໜ້າພິເສດ]]ສຳຫຼັບແປມີເດຍວິກິແລະອື່ນ າ" + "translate-desc": "[[Special:Translate|ໜ້າພິເສດ]]ສຳຫຼັບແປມີເດຍວິກິແລະອື່ນ າ", + "translate-taction-translate": "ແປ" } diff --git a/MLEB/Translate/i18n/core/lrc.json b/MLEB/Translate/i18n/core/lrc.json index 7dce923a..44d804e8 100644 --- a/MLEB/Translate/i18n/core/lrc.json +++ b/MLEB/Translate/i18n/core/lrc.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Beyronvan", "Mogoeilor" ] }, @@ -22,12 +23,6 @@ "translate-edit-translation": "لرسن", "translate-edit-contribute": "هومياری كردن", "translate-edit-askpermission": "قول بیئتو", - "translate-magic-cm-to-be": "تا بوئه", - "translate-magic-cm-current": "تازه باو", - "translate-magic-cm-original": "اصل", - "translate-magic-cm-comment": "نظر", - "translate-magic-cm-save": "ذخيره كردن", - "translate-magic-words": "كلميا جادويی", "translate-pref-editassistlang": "زونيا ياريگر", "translate-rc-translation-filter-no": "هيچی نكيد", "translate-stats-edits": "ڤیرایئشتیا", @@ -72,7 +67,7 @@ "translate-gs-speakers": "گپ زننه", "translate-gs-score": "امتياز", "translate-gs-total": "همه", - "translate-documentation-language": "سندسازی سی پیغوم", + "translate-documentation-language": "سٱنٱدسازی سی پاٛغوم", "tux-edit": "ڤیرایئشت", "tux-proofread-edit-label": "ڤیرایئشت", "tux-editor-message-tools-history": "ڤیرگار" diff --git a/MLEB/Translate/i18n/core/lt.json b/MLEB/Translate/i18n/core/lt.json index e1509299..2dffddca 100644 --- a/MLEB/Translate/i18n/core/lt.json +++ b/MLEB/Translate/i18n/core/lt.json @@ -4,12 +4,13 @@ "Eitvys200", "Garas", "Homo", + "Hugo.arg", "Mantak111", + "Manvydasz", "Perkunas", + "Tomasdd", "Vpovilaitis", - "Hugo.arg", - "Zygimantus", - "Manvydasz" + "Zygimantus" ] }, "translate": "Vertimas", @@ -63,32 +64,11 @@ "translate-export-invalid-format": "Prašome nurodyti galiojantį formatą.", "translate-export-not-supported": "Vertimų eksportavimas nepalaikomas.", "translate-export-format-notsupported": "Nurodytas eksportavimo formatas yra nepalaikomas pranešimų grupės.", - "translate-magic-pagename": "MediaWiki išplėtimų vertimas", - "translate-magic-help": "Jūs galite versti specialių puslapių pseudonimus, magiškus žodžius ir vardų sričių pavadinimus.\n\nSpecialiojo puslapio pavadinimo ir magiško žodžio vertimai gali būti keli.\nVertimai yra atskiriami kableliu (,).\nVardų srities pavadinimas gali turėti tik vieną vertimą.\n\nVardų sričių vertimuose $1 aptarimas yra specialus. $1 yra pakeičiamas svetainės pavadinimu (pavyzdžiui {{ns:project_talk}}).\nJei nėra įmanoma jūsų kalboje formuoti teisingą raiškumą be keisdami svetainės vardą, praneškite mums [[Support|palaikyme]].\n\nJūs turite priklausyti vertėjų grupei, kad galėtumėte įrašyti pakeitimus.\nPakeitimai nebus įrašyti iki Jūs nuspausite išsaugojimo mygtuką apačioje.", - "translate-magic-module": "Modulis:", - "translate-magic-submit": "Išrinkti", - "translate-magic-cm-export": "Eksportuoti", - "translate-magic-nothing-to-export": "Nėra nieko eksportuoti.", - "translate-magic-cm-to-be": "Turi būti", - "translate-magic-cm-current": "Einamasis", - "translate-magic-cm-original": "Originalas", - "translate-magic-cm-comment": "Komentaras:", - "translate-magic-cm-save": "Išsaugoti", - "translate-magic-cm-updatedusing": "Atnaujintas, naudojant [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Nepavyko išsaugoti", - "translate-magic-special": "Specialių puslapių pavadinimai", - "translate-magic-words": "Magiški žodžiai", - "translate-magic-namespace": "Vardų srities pavadinimai", - "translate-magic-notsaved": "Jūsų redagavimas yra neišsaugotas!", - "translate-magic-errors": "Praįome ištaisyti {{PLURAL:$1|klaidą|klaidas}} vertimuose:", - "translate-magic-saved": "Jūsų pakeitimai buvo išsaugoti.", - "translate-checks-parameters": "{{PLURAL:$2|Šis $2 parametras nepanaudotas|Šie $2 parametrai nepanaudoti|Šie $2 parametrų nepanaudoti}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Šis parametras yra nežinomas|Šie parametrai yra nežinomi}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Šis $2 parametras nepanaudotas|Šie $2 parametrai nepanaudoti|Šie $2 parametrų nepanaudoti}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Šis parametras yra nežinomas|Šie parametrai yra nežinomi}}:\n$1", "translate-checks-links": "{{PLURAL:$2|Ši nuoroda yra problematiška|$2 nuorodos yra problematiškos}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Šios nuorodos|šių $2 nuorodų}} trūksta:\n$1", - "translate-checks-xhtml": "Prašome pakeisti {{PLURAL:$2|šią žymę teisinga žyme|šias žymes teisingomis žymėmis}}:\n$1", "translate-checks-plural": "Aprašymas naudoja {{PLURAL:}}, bet vertimas ne.", - "translate-pref-nonewsletter": "Nesiųskite man el. pašto naujienlaiškus", "translate-pref-editassistlang": "Asistentinės kalbos:", "prefs-translate": "Vertimo nustatymai", "right-translate": "Redaguoti naudojant vertėjo sąsają", @@ -164,6 +144,7 @@ "translate-untranslated": "Neišversti", "translate-percentage-complete": "Baigta", "translate-percentage-fuzzy": "Pasenę", + "translate-percentage-proofread": "Apžvelgta", "translate-languagestats-overall": "Visos pranešimų grupės kartu", "translate-ls-submit": "Rodyti statistiką", "translate-ls-column-group": "Pranešimo grupė", @@ -183,7 +164,7 @@ "supportedlanguages-recenttranslations": "Nauji vertimai", "supportedlanguages-count": "Iš viso $1 {{PLURAL:$1|kalba|kalbos|kalbų}}.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|keitimas|keitimai|keitimų}} - paskutinis keitimas yra prieš $3 {{PLURAL:$3|dieną|dienas|dienų}}", - "translate-save": "Išsaugoti ($1)", + "translate-save": "Paskelbti ($1)", "translate-jssti-add": "Pridėti į sąrašą", "managemessagegroups": "Pranešimų grupės valdymas", "translate-smg-notallowed": "Jums neleidžiama atlikti šio veiksmo.", @@ -211,13 +192,13 @@ "translate-import-err-invalid-title": "Pateiktas failo pavadinimas $1 buvo negalimas.", "translate-import-err-stale-group": "Pranešimų grupė, kuriai priklauso šis failas, neegzistuoja.", "translate-js-summary": "Santrauka:", - "translate-js-save": "Išsaugoti", - "translate-js-next": "Išsaugoti ir atidaryti kitą", + "translate-js-save": "Publikuoti", + "translate-js-next": "Paskelbti ir atidaryti kitą", "translate-js-skip": "Praleisti", "translate-js-history": "Vertimo istorija", "translate-js-support": "Užduoti klausimą", "translate-js-support-title": "Paprašyk pagalbos, jei nėra pakankamai informacijos, kad verstų šį pranešimą teisingai.", - "translate-js-support-unsaved-warning": "Jūs turite neišsaugotų pranešimų.", + "translate-js-support-unsaved-warning": "Jūs turite nepaskelbtų vertimų.", "translate-gs-pos": "Praneš.", "translate-gs-code": "Kodas", "translate-gs-continent": "Turinys", @@ -262,14 +243,14 @@ "tux-status-fuzzy": "Pasenę", "tux-status-proofread": "Apžvelgta", "tux-status-translated": "Išversta", - "tux-status-saving": "Išsaugoma....", - "tux-status-unsaved": "Neišsaugota", + "tux-status-saving": "Publikuojama....", + "tux-status-unsaved": "Nepublikuota", "tux-save-unknown-error": "Įvyko nežinoma klaida.", "tux-editor-placeholder": "Jūsų vertimas", "tux-editor-editsummary-placeholder": "Neprivaloma santrauka", "tux-editor-paste-original-button-label": "Įklijuoti kodo tekstą", "tux-editor-discard-changes-button-label": "Atsisakyti pakeitimų", - "tux-editor-save-button-label": "Išsaugoti vertimą", + "tux-editor-save-button-label": "Paskelbti vertimą", "tux-editor-skip-button-label": "Pereiti prie kito", "tux-editor-cancel-button-label": "Atšaukti", "tux-editor-confirm-button-label": "Patvirtinti vertimą", @@ -281,9 +262,9 @@ "tux-editor-need-more-help": "Reikia daugiau pagalbos?", "tux-editor-ask-help": "Prašykite daugiau informacijos", "tux-editor-tm-match": "$1% atitinka", - "tux-warnings-more": "{{PLURAL:$1|$1 daugiau}}", - "tux-warnings-hide": "slėpti", - "tux-editor-save-failed": "Vertimo išsaugojimas nepavyko: $1", + "tux-notices-more": "{{PLURAL:$1|$1 daugiau}}", + "tux-notices-hide": "slėpti", + "tux-editor-save-failed": "Vertimo paskelbti nepavyko: $1", "tux-editor-n-uses": "panaudota $1 {{PLURAL:$1|kartą|kartus}}", "tux-editor-message-desc-more": "Rodyti daugiau", "tux-editor-message-desc-less": "Rodyti mažiau", @@ -295,10 +276,10 @@ "tux-proofread-action-tooltip": "Pažymėti kaip apžvelgta", "tux-proofread-edit-label": "Redaguoti", "tux-editor-page-mode": "Puslapis", - "tux-editor-outdated-warning": "Šį vertimą gali tekti atnaujinti.", - "tux-editor-outdated-warning-diff-link": "Rodyti skirtumus", + "tux-editor-outdated-notice": "Šį vertimą gali tekti atnaujinti.", + "tux-editor-outdated-notice-diff-link": "Rodyti skirtumus", "tux-editor-doc-editor-placeholder": "Pranešimo dokumentacija", - "tux-editor-doc-editor-save": "Išsaugoti dokumentaciją", + "tux-editor-doc-editor-save": "Paskelbti dokumentaciją", "tux-editor-doc-editor-cancel": "Atšaukti", "tux-messagetable-more-messages": "dar $1 {{PLURAL:$1|pranešimas|pranešimai}}", "tux-messagetable-loading-messages": "Įkraunami {{PLURAL:$1|pranešimas|pranešimai}}...", @@ -336,6 +317,6 @@ "translate-statsbar-tooltip": "$1% išversti, $2% apžvelgti", "translate-statsbar-tooltip-with-fuzzy": "$1% išversti, $2% apžvelgti, $3% pasenę", "translate-search-more-groups-info": "dar $1 {{PLURAL:$1|grupė|grupės}}", - "translate-ulsdep-title": "Konfigūravimo klaida", - "tux-nojs": "Šiam puslapiui reikia JavaScript." + "tux-nojs": "Šiam puslapiui reikia JavaScript.", + "specialpages-group-translation": "Vertimas" } diff --git a/MLEB/Translate/i18n/core/ltg.json b/MLEB/Translate/i18n/core/ltg.json index a67da2f4..d637aa54 100644 --- a/MLEB/Translate/i18n/core/ltg.json +++ b/MLEB/Translate/i18n/core/ltg.json @@ -14,8 +14,6 @@ "translate-page-description-legend": "Informaceja ap grupu", "translate-page-edit": "pataiseit", "translate-edit-title": "Pataiseit \"$1\"", - "translate-magic-submit": "Paruodeit", - "translate-magic-cm-save": "Izglobuot", "translate-stats-users": "Puorvārsuoji", "translate-statsf-scale-months": "Mieneši", "translate-statsf-scale-weeks": "Nedeļis", diff --git a/MLEB/Translate/i18n/core/lus.json b/MLEB/Translate/i18n/core/lus.json index 32997dff..cebe410a 100644 --- a/MLEB/Translate/i18n/core/lus.json +++ b/MLEB/Translate/i18n/core/lus.json @@ -45,29 +45,11 @@ "translate-use-suggestion": "Tuna lehlinna awm hi he rawtna hian thlâk rawh", "translate-edit-nopermission": "Thuthawn letling tùrin phalna i neih a ngai.", "translate-edit-askpermission": "Phalna dilna", - "translate-magic-pagename": "MediaWiki lehlinna zauh", - "translate-magic-submit": "Pholang rawh le", - "translate-magic-cm-export": "Thawnchhuahna", - "translate-magic-nothing-to-export": "Thawnchhuah tùr a awm lo.", - "translate-magic-cm-to-be": "Nih-tùr", - "translate-magic-cm-current": "Nih-mék", - "translate-magic-cm-original": "A thu hnar", - "translate-magic-cm-comment": "Tuihnihna:", - "translate-magic-cm-save": "Tlangzarhna", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] hmangin bithuam a ni ta", - "translate-magic-cm-savefailed": "Tlangzarh a tlawlh", - "translate-magic-special": "Phek vohbik ze-dang", - "translate-magic-words": "Dawi-chhamphual", - "translate-magic-namespace": "Hminghmun hmingte", - "translate-magic-notsaved": "I thuziak dahţhat a ni lo a nia!", - "translate-magic-errors": "{{PLURAL:$1|Hë|Hêng}} lehlinna dikhlel{{PLURAL:$1||te}} hi khawngaihin tidik rawh le.", - "translate-magic-saved": "I tihdanglamna hlawtling taka dahţhat a ni.", - "translate-checks-parameters": "{{PLURAL:$2|He thil hman ngei ngei ngai|Heng thil hman ngei ngei ngaite}} hi hman a la ni lo:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|He i thil ziak|Heng i thil ziakte}} hi hriat a ni lo (a dikhlel tihna):\n$1", + "translate-checks-parameters": "{{PLURAL:$2|He thil hman ngei ngei ngai|Heng thil hman ngei ngei ngaite}} hi hman a la ni lo:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|He i thil ziak|Heng i thil ziakte}} hi hriat a ni lo (a dikhlel tihna):\n$1", "translate-checks-balance": "Kualkhungna hman khingbai nei lo a la awm{{PLURAL:$2||}}:\n$1", "translate-checks-links": "A hnuaia zawmna{{PLURAL:$2||te}} khu a dikhlel:\n$1", "translate-checks-links-missing": "A hnuaia zawmna{{PLURAL:$2||te}} khu i la hmaih:\n$1", - "translate-checks-xhtml": "A hnuaia hmingrelh{{PLURAL:$2||te}} khu a dikin thlâk rawh:\n$1", "translate-checks-plural": "A thu hnarin {{PLURAL:}} a hmang a, lehlinnain a hmang lo.", "translate-checks-plural-forms": "{{PLURAL:}} kha lehkha {{PLURAL:$1|pakhat|$1}} pêk a ni a, mahsé lehkha {{PLURAL:$2|pakhat|$2}} chauh tih theih a ni (0= leh 1= lehkhate tiam lohvin).", "translate-checks-pagename": "Hrilhfiahna aţang hminghmun thlâk a ni", @@ -76,7 +58,6 @@ "translate-checks-parametersnotequal": "Hmanraw zât {{PLURAL:$1|$1}}; {{PLURAL:$2|$2}} tùr.", "translate-checks-malformed": "$1 hi a dik lo.", "translate-checks-fudforum-syntax": "He hna-hmachhawpah hian $2 aiah $1 hmang zawk rawh", - "translate-pref-nonewsletter": "E-chanchinbu min thawn suh", "translate-pref-editassistlang": "Puitu ţawngte:", "prefs-translate": "Lehlin duhdàn", "translate-pref-editassistlang-bad": "Tlar zingah ţawng thurûk dik lo a awm:\n$1.", @@ -161,7 +142,6 @@ "translate-manage-nochanges-other": "He ţawnga tihdanglam thar a awm lo.\nHläwm chanchin inziahna phêka lêt tùrin a hnuaia zawmnaah khuan kal rawh.", "translate-manage-submit": "Déng raw pip!", "translate-manage-import-done": "A zo ta vek mai!", - "translate-import-err-warnings": "Taksa dik lo.\nI khawih danglamin ththn ziahna i nuaibo lo tih tichiang ang che.\nChanchim kim: $1", "translate-js-summary": "Laktawi:", "translate-js-save": "Dahţhatna", "translate-js-next": "Dahţha la a dawt hawng nghâl rawh", diff --git a/MLEB/Translate/i18n/core/lv.json b/MLEB/Translate/i18n/core/lv.json index b1a5643a..8a20ec07 100644 --- a/MLEB/Translate/i18n/core/lv.json +++ b/MLEB/Translate/i18n/core/lv.json @@ -2,13 +2,14 @@ "@metadata": { "authors": [ "GreenZeb", + "Kikos", "Marozols", "Papuass", - "Yyy", - "Kikos" + "Yyy" ] }, "translate": "Tulkošana", + "translate-extensionname": "Tulkošana", "translate-desc": "[[Special:Translate|Īpašā lapa]] MediaWiki un citu projektu tulkošanai", "translate-taction-translate": "Tulkot", "translate-taction-proofread": "Pārskatīt", @@ -18,6 +19,7 @@ "translate-taction-disabled": "Šī darbība ir atspējota šajā wiki.", "translate-page-no-such-language": "Norādītā valoda bija nederīga.", "translate-page-no-such-group": "Norādītā grupa bija nederīga.", + "translate-language-disabled": "Tulkošana uz šo valodu ir atspējota.", "translate-page-settings-legend": "Iestatījumi", "translate-page-group": "Grupa", "translate-page-language": "Valoda", @@ -27,6 +29,7 @@ "translate-page-navigation-legend": "Navigācija", "translate-page-showing": "Rāda ziņojumus no $1 līdz $2 no $3.", "translate-page-showing-all": "Rāda $1 {{PLURAL:$1|ziņojumus|ziņojumu|ziņojumus}}.", + "translate-page-paging-links": "[ $1 ] [ $2 ]", "translate-next": "Nākamā lapa", "translate-prev": "Iepriekšējā lapa", "translate-page-description-legend": "Informācija par grupu", @@ -45,19 +48,6 @@ "exporttranslations": "Eksportēt tulkojumus", "translate-export-form-format": "Formāts", "translate-export-invalid-format": "Lūdzu norādi derīgu formātu.", - "translate-magic-pagename": "Paplašinātā MediaWiki tulkošana", - "translate-magic-module": "Modulis:", - "translate-magic-submit": "Atlasīt", - "translate-magic-cm-export": "Eksportēt", - "translate-magic-nothing-to-export": "Nav nekā, ko eksportēt.", - "translate-magic-cm-original": "Oriģināls", - "translate-magic-cm-comment": "Komentārs:", - "translate-magic-cm-save": "Saglabāt", - "translate-magic-cm-savefailed": "Neizdevās saglabāt", - "translate-magic-words": "Burvju vārdi", - "translate-magic-namespace": "Vārdtelpu nosaukumi", - "translate-magic-notsaved": "Jūsu labojums netika saglabāts!", - "translate-pref-nonewsletter": "Nevēlos pa e-pastu saņemt lapas jaunumus", "translate-pref-editassistlang": "Palīgvalodas:", "prefs-translate": "Tulkošanas uzstādījumi", "translate-pref-editassistlang-help": "Saraksts ar valodu kodiem, kas atdalīti ar komatiem.\nNorādītajās valodās pieejamie tulkojumi būs redzami tulkošanas lapā.\nNoklusētā saraksta vērtība ir atkarīga no tavas valodas.", @@ -81,6 +71,7 @@ "translate-stats-edits": "Labojumi", "translate-stats-users": "Tulkotāji", "translate-stats-registrations": "Reģistrācijas", + "translate-stats-reviewers": "Pārskatītāji", "translate-statsf-width": "Platums pikseļos:", "translate-statsf-height": "Augstums pikseļos:", "translate-statsf-days": "Laika periods dienās:", @@ -90,9 +81,11 @@ "translate-statsf-scale-weeks": "Nedēļas", "translate-statsf-scale-days": "Dienas", "translate-statsf-scale-hours": "Stundas", + "translate-statsf-count": "Metrika:", "translate-statsf-count-edits": "Izmaiņu skaits", "translate-statsf-count-users": "Aktīvie tulkotāji", "translate-statsf-count-registrations": "Jauni lietotāji", + "translate-statsf-count-reviewers": "Pārskatītāji", "translate-sidebar-alltrans": "Citās valodās", "translations": "Visi tulkojumi", "translate-translations-fieldset-title": "Ziņojums", @@ -116,6 +109,7 @@ "translate-untranslated": "Neiztulkoti", "translate-percentage-complete": "Pabeigtība", "translate-percentage-fuzzy": "Novecojis", + "translate-percentage-proofread": "Pārskatīts", "translate-languagestats-overall": "Visas ziņojumu grupas kopā", "translate-ls-submit": "Rādīt statistiku", "translate-ls-column-group": "Ziņojumu grupa", @@ -125,14 +119,22 @@ "translate-mgs-column-language": "Valoda", "translate-mgs-totals": "Visas $1 {{PLURAL:$1|valodas|valoda|valodas}} kopā", "supportedlanguages": "Atbalstītās valodas", + "supportedlanguages-portallink-nocldr": "[$1] $2", "supportedlanguages-sqlite-error": "SQLite nav atbaltīts", "supportedlanguages-translators": "{{PLURAL:$2|Tulkotāji|{{GENDER:$3|Tulkotājs|Tulkotāja}}|Tulkotāji}}: $1", "supportedlanguages-recenttranslations": "pēdējie tulkojumi", "translate-save": "Saglabāt ($1)", "translate-jssti-add": "Pievienot sarakstam", "translate-smg-right": "Ienākošās izmaiņas", + "translate-smg-rename-select": "Izvēlēties", + "translate-smg-rename-cancel": "Atcelt", + "translate-smg-rename-new": "Pievienot kā jaunu...", + "translate-manage-import-diff": "Ziņojums $1 | Darbības: $2", + "translate-manage-import-new": "Jauns ziņojums $1", "translate-manage-action-import": "Importēt", "translate-manage-action-ignore": "Ignorēt", + "translate-manage-action-rename": "Pārsaukt", + "translate-manage-action-ignore-change": "Ignorēt tulkojuma izmaiņu", "translate-manage-submit": "Izpildīt", "translate-manage-import-done": "Imports pabeigts!", "importtranslations": "Importēt tulkojumus", @@ -158,6 +160,7 @@ "group-translate-sandboxed": "Neapstiprinātie tulkotāji", "group-translate-sandboxed-member": "{{GENDER:$1|neapstiprināts tulkotājs|neapstiprināta tulkotāja}}", "translate-workflow-state-": "(nav uzstādīts)", + "translate-workflowstatus": "Stāvoklis: $1", "translate-stats-workflow": "Statuss", "translate-dynagroup-recent-label": "Neseni tulkojumi", "translate-dynagroup-recent-desc": "Šī ziņojumu grupa parāda visus nesenos tulkojumus šajā valodā.\nTā ir visnoderīgākā pārskatīšanas uzdevumiem.", @@ -190,6 +193,7 @@ "tux-editor-cancel-button-label": "Atcelt", "tux-editor-confirm-button-label": "Apstiprināt tulkojumu", "tux-editor-proofread-button-label": "Atzīmēt kā pārskatītu", + "tux-editor-shortcut-info": "Spied \"$1\", lai apstiprinātu un pārietu uz nākamo ziņojumu, \"$2\", lai izlaistu, \"$4\", lai sniegtu kopsavilkumu vai pieturi \"$3\", lai redzētu pārējās saīsnes.", "tux-editor-edit-desc": "Labot dokumentāciju", "tux-editor-add-desc": "Pievienot dokumentāciju", "tux-editor-suggestions-title": "Ieteikumi", @@ -197,8 +201,8 @@ "tux-editor-need-more-help": "Nepieciešama papildu palīdzība?", "tux-editor-ask-help": "Pieprasiet vairāk informācijas", "tux-editor-tm-match": "$1% atbilstība", - "tux-warnings-more": "{{PLURAL:$1|vēl $1}}", - "tux-warnings-hide": "paslēpt", + "tux-notices-more": "{{PLURAL:$1|vēl $1}}", + "tux-notices-hide": "paslēpt", "tux-editor-n-uses": "izmantots $1 {{PLURAL:$1|reizes|reizi|reizes}}", "tux-editor-message-desc-more": "Skatīt vairāk", "tux-editor-message-desc-less": "Skatīt mazāk", @@ -210,8 +214,8 @@ "tux-proofread-action-tooltip": "Atzīmēt kā pārskatītu", "tux-proofread-edit-label": "Labot", "tux-editor-page-mode": "Lapa", - "tux-editor-outdated-warning": "Šis tulkojums, iespējams, ir jāatjaunina.", - "tux-editor-outdated-warning-diff-link": "Parādīt atšķirības", + "tux-editor-outdated-notice": "Šis tulkojums, iespējams, ir jāatjaunina.", + "tux-editor-outdated-notice-diff-link": "Parādīt atšķirības", "tux-editor-doc-editor-placeholder": "Paziņojuma dokumentācija", "tux-editor-doc-editor-save": "Saglabāt dokumentāciju", "tux-editor-doc-editor-cancel": "Atcelt", @@ -219,9 +223,12 @@ "tux-message-filter-placeholder": "Filtrēt sarakstu", "tux-message-filter-advanced-button": "Izvērstā meklēšana", "tux-message-filter-optional-messages-label": "Papildu ziņas", + "tux-empty-list-translated-guide": "Tu vari palīdzēt pārtulkot", "tux-empty-list-translated-action": "Tulkot", "tux-empty-no-messages-to-display": "Nav ziņu, ko parādīt.", "tux-empty-list-other": "Nav nekā tulkojama", + "tux-empty-list-other-guide": "Tu vari palīdzēt pārskatīt esošos tulkojumus", + "tux-empty-list-other-action": "Pārskatīt tulkojumus", "tux-empty-list-other-link": "Rādīt visus ziņojumus", "tux-editor-close-tooltip": "Aizvērt", "tux-editor-expand-tooltip": "Izvērst", @@ -229,6 +236,10 @@ "tux-editor-message-tools-history": "Vēsture", "tux-editor-message-tools-delete": "Dzēst", "tux-editor-message-tools-translations": "Visi tulkojumi", + "tux-editor-message-tools-linktothis": "Saite uz šo ziņojumu", "tux-editor-loading": "Ielādē...", - "translate-ulsdep-title": "Konfigurācijas kļūda" + "translate-search-more-languages-info": "vēl $1 {{PLURAL:$1|valodas|valoda|valodas}}", + "translate-search-more-groups-info": "vēl $1 {{PLURAL:$1|grupas|grupa|grupas}}", + "translate-syntax-error": "Tulkojums satur sintakses kļūdas", + "specialpages-group-translation": "Tulkojums" } diff --git a/MLEB/Translate/i18n/core/lzh.json b/MLEB/Translate/i18n/core/lzh.json index 7f0728fc..815fc9c4 100644 --- a/MLEB/Translate/i18n/core/lzh.json +++ b/MLEB/Translate/i18n/core/lzh.json @@ -1,10 +1,11 @@ { "@metadata": { "authors": [ - "Yanteng3", - "Jason924tw", "Davidzdh", - "Itsmine" + "Itsmine", + "Jason924tw", + "Yanteng3", + "列维劳德" ] }, "translate": "譯", @@ -42,16 +43,6 @@ "translate-edit-tmmatch": "$1%符", "translate-edit-nopermission": "汝須獲權方可譯訊。", "translate-edit-askpermission": "獲權", - "translate-magic-submit": "擷取", - "translate-magic-cm-export": "出匯", - "translate-magic-nothing-to-export": "無出匯之內容。", - "translate-magic-cm-to-be": "譯", - "translate-magic-cm-current": "今", - "translate-magic-cm-original": "原訊息", - "translate-magic-cm-comment": "註:", - "translate-magic-cm-save": "儲", - "translate-magic-notsaved": "汝之纂未成!", - "translate-magic-saved": "汝之易已成!", "right-translate-messagereview": "校譯", "translate-rc-translation-filter": "濾清:", "translate-rc-translation-filter-no": "無濾", @@ -96,11 +87,11 @@ "translate-mgs-column-language": "語言", "translate-mgs-nothing": "無彙統以示", "supportedlanguages-recenttranslations": "近譯", - "translate-save": "存 ($1)", + "translate-save": "修($1)", "translate-manage-import-deleted": "已刪訊 $1", "translate-manage-action-import": "入匯", "translate-import-load": "載檔", - "translate-js-save": "存", + "translate-js-save": "修", "translate-js-skip": "次譯", "translate-js-support": "問", "translate-documentation-language": "訊之檔", @@ -121,10 +112,10 @@ "tux-status-fuzzy": "過時", "tux-status-proofread": "已校", "tux-status-translated": "已譯", - "tux-status-saving": "存之...", + "tux-status-saving": "修之...", "tux-editor-placeholder": "子之譯", "tux-editor-paste-original-button-label": "貼源文", - "tux-editor-save-button-label": "儲譯", + "tux-editor-save-button-label": "修譯", "tux-editor-skip-button-label": "次譯", "tux-editor-shortcut-info": "押「$1」存,或押「$2」譯次訊", "tux-editor-edit-desc": "檔纂", @@ -139,10 +130,10 @@ "tux-proofread-action-tooltip": "記為已校", "tux-proofread-edit-label": "纂", "tux-editor-page-mode": "頁", - "tux-editor-outdated-warning": "此譯須新。", - "tux-editor-outdated-warning-diff-link": "示辨", + "tux-editor-outdated-notice": "此譯須新。", + "tux-editor-outdated-notice-diff-link": "示辨", "tux-editor-doc-editor-placeholder": "訊之檔", - "tux-editor-doc-editor-save": "存檔", + "tux-editor-doc-editor-save": "修檔", "tux-messagetable-more-messages": "$1訊", "tux-messagetable-loading-messages": "載{{PLURAL:$1|訊|訊}}之……", "tux-message-filter-placeholder": "濾之表", diff --git a/MLEB/Translate/i18n/core/mai.json b/MLEB/Translate/i18n/core/mai.json index 53d7b3d3..6a5bdca1 100644 --- a/MLEB/Translate/i18n/core/mai.json +++ b/MLEB/Translate/i18n/core/mai.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "बिप्लब आनन्द", - "Tulsi Bhagat" + "Tulsi Bhagat", + "बिप्लब आनन्द" ] }, "languagestats-recenttranslations": "सन्निकट अनुवाद", diff --git a/MLEB/Translate/i18n/core/map-bms.json b/MLEB/Translate/i18n/core/map-bms.json index 39f0a4e6..f3c9dd74 100644 --- a/MLEB/Translate/i18n/core/map-bms.json +++ b/MLEB/Translate/i18n/core/map-bms.json @@ -41,22 +41,10 @@ "translate-edit-tmmatch": "$1% cocog", "translate-use-suggestion": "Ganti terjemahan sekiye nganggo saran kiye.", "translate-edit-nopermission": "Rika perlu idin kanggo nerjemahna pesen.", - "translate-magic-submit": "Jikot", - "translate-magic-cm-export": "Ekspor", - "translate-magic-cm-current": "Sekiye", - "translate-magic-cm-comment": "Tanggepan:", - "translate-magic-cm-updatedusing": "Dianyari nganggo [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Gole nyimpen gagal", - "translate-magic-special": "Sesinglon kaca astamiwa", - "translate-magic-namespace": "Jeneng bilikjeneng", - "translate-magic-notsaved": "Suntingane Rika ora disimpen!", - "translate-magic-errors": "Monggo didandani {{PLURAL:$1|kasalahan|}} nang terjemahan kiye:", - "translate-magic-saved": "Owah-owahane Rika wis sukses disimpen.", - "translate-checks-parameters": "{{PLURAL:$2|parameter|}} kiye ora dienggo:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Parameter|Parameter-parameter}} kiye ora dikenal:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|parameter|}} kiye ora dienggo:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Parameter|Parameter-parameter}} kiye ora dikenal:\n$1", "translate-checks-balance": "Ana jumlah sing ora rata sekang {{PLURAL:$2|''parenthesis''|}}:\n$1", "translate-checks-links": "{{PLURAL:$2|pranala|$2 pranala-pranala}} kiye nduwe masalah:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Pranala|Pranala-pranala}} kiye ilang:\n$1", - "translate-checks-xhtml": "Monggo ganti {{PLURAL:$2|tag|tag-tag}} kiye nganggo tag sing cocog:\n$1", "translate-checks-plural-forms": "{{PLURAL:}} wis aweh {{PLURAL:$1|siji formulir|$1 formulir-formulir}} ningen mung {{PLURAL:$2|siji formulir|$2 formulir-formulir}} sing didukung (excluding 0= lan 1= formulir)." } diff --git a/MLEB/Translate/i18n/core/mhr.json b/MLEB/Translate/i18n/core/mhr.json index 1de25cc3..3051f66f 100644 --- a/MLEB/Translate/i18n/core/mhr.json +++ b/MLEB/Translate/i18n/core/mhr.json @@ -5,7 +5,5 @@ ] }, "translate-next": "Вес лаштык", - "translate-prev": "Ончычсо лаштык", - "translate-magic-cm-save": "Аралаш", - "translate-pref-nonewsletter": "Увер бюллетеньым электрон почто дене мылам колташ огыл" + "translate-prev": "Ончычсо лаштык" } diff --git a/MLEB/Translate/i18n/core/min.json b/MLEB/Translate/i18n/core/min.json index 6c5c0d0c..3589177d 100644 --- a/MLEB/Translate/i18n/core/min.json +++ b/MLEB/Translate/i18n/core/min.json @@ -1,9 +1,10 @@ { "@metadata": { "authors": [ + "Ardzun", "Iwan Novirion", - "Naval Scene", - "Muhraz" + "Muhraz", + "Naval Scene" ] }, "translate-statsf-start": "Tanggal mulai:", @@ -18,6 +19,8 @@ "translate-statsf-count-registrations": "Pangguno baru", "translate-sidebar-alltrans": "Dalam bahaso lain", "translate-js-support": "Batanyo", - "translate-documentation-language": "Pambakehan pasan", - "translate-searchprofile-tooltip": "Cari dari sado tajamahan" + "translate-documentation-language": "Dokumentasi pasan", + "translate-searchprofile": "Tajamahan", + "translate-searchprofile-tooltip": "Cari dari sado tajamahan", + "tux-editor-message-tools-history": "Versi" } diff --git a/MLEB/Translate/i18n/core/mk.json b/MLEB/Translate/i18n/core/mk.json index adbbdd26..8694110d 100644 --- a/MLEB/Translate/i18n/core/mk.json +++ b/MLEB/Translate/i18n/core/mk.json @@ -5,14 +5,14 @@ "Brest", "Brest2008", "Dario", - "Милан Јелисавчић", - "Vlad5250" + "Vlad5250", + "Милан Јелисавчић" ] }, "translate": "Преведување", "translate-extensionname": "Преведување", "translate-desc": "[[Special:Translate|Службена страница]] за преведување на МедијаВики и други пораки", - "translate-fuzzybot-desc": "Ова е службена системска сметка што се користи од додатокот [https://www.mediawiki.org/wiki/Extension:Translate Преведување] на МедијаВики намете за одржување на преводи.\nОваа сметка е дел од основниот програм и не е во сопственост на ниеден корисник.", + "translate-fuzzybot-desc": "Ова е службена системска сметка што се користи од додатокот [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate Преведување] на МедијаВики намете за одржување на преводи.\nОваа сметка е дел од основниот програм и не е во сопственост на ниеден корисник.", "translate-taskui-export-to-file": "Извези во матичен формат", "translate-taskui-export-as-po": "Извези за вонмрежно преведување", "translate-taction-translate": "Преведи", @@ -62,46 +62,42 @@ "translate-export-invalid-format": "Укажете важечки формат.", "translate-export-not-supported": "Извезување на преводи не е поддржано.", "translate-export-format-notsupported": "Укажаниот извозен формат не е поддржана од групата пораки.", - "translate-magic-pagename": "Превод на додатоци за МедијаВики", - "translate-magic-help": "Можете да ги преведете истозначниците на службените страници, волшебните зборови и називите на именските простори.\n\nИстозначниците на службените страници и волшебните зборови може да имаат повеќе преводи.\nПреводите се одделуваат со запирка (,).\nИменските простори може да имаат само по еден превод.\n\nПреведувањето на именскиот простор за разговор за проект Разговор за $1 може да биде посложено.\n$1 се заменува со проектот (на пр. {{ns:project_talk}}).\nАко на вашиот не може да се обликува правилен израз без промена на името на страницата, тогаш известете нè на страницата „[[Support|Поддршка]]“.\n\nЗа да ги зачувате промените, треба да сте преведувач.\nПромените нема да се зачуваат без да стиснете на долуприкажаното копче „Зачувај“.", - "translate-magic-module": "Модул:", - "translate-magic-submit": "Филтрирај", - "translate-magic-cm-export": "Извоз", - "translate-magic-nothing-to-export": "Нема што да се увезе.", - "translate-magic-cm-to-be": "Нека биде", - "translate-magic-cm-current": "Тековен", - "translate-magic-cm-original": "Изворно", - "translate-magic-cm-comment": "Коментар:", - "translate-magic-cm-save": "Зачувај", - "translate-magic-cm-updatedusing": "Подновено со помош на [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Неуспешно зачувување", - "translate-magic-special": "Истозначници на службени страници", - "translate-magic-words": "Волшебни зборови", - "translate-magic-namespace": "Називи на именски простори", - "translate-magic-notsaved": "Вашето уредување не беше зачувано!", - "translate-magic-errors": "Поправете {{PLURAL:$1|ја следнава грешка|ги следниве грешки}} во преводот:", - "translate-magic-saved": "Промените се зачувани.", - "translate-checks-parameters": "{{PLURAL:$2|Следниов параметар не се користи|Следниве параметри се користат}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Следниов параметар е непознат|Следниве параметри се непознати}}:\n$1", + "translate-export-group-too-large": "Избраната група пораки е преголема. Изберете некоја со помалку од $1 {{PLURAL:$1|порака|пораки}} или посоветувајте се со преводен администратор.", + "translate-checks-parameters": "{{PLURAL:$2|Не се користи следниов параметар|Не се користат следниве параметри}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Следниов параметар е непознат|Следниве параметри се непознати}}:\n$1", "translate-checks-balance": "Непарен број на загради, {{PLURAL:$2|заграда|загради}}:\n$1", "translate-checks-links": "{{PLURAL:$2|Следнава врска предизвикува проблеми|Следниве $2 врски предизвикуваат проблеми}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Недостасува следнава врска|$2 Недостасуваат следниве врски}}:\n$1", - "translate-checks-xhtml": "Заменете {{PLURAL:$2|ја следнава ознака со исправна|ги следниве ознаки со исправни}}:\n$1", "translate-checks-plural": "Определбата користи {{PLURAL:}} но преводот не.", "translate-checks-plural-forms": "На {{PLURAL:}} {{PLURAL:$1|му е зададен еден облик|му се зададени $1 облици}}, но {{PLURAL:$2|поддржан е само еден|поддржани се само $2}} (освен облиците 0= и 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} има дуплирани облици на крајот. {{PLURAL:$1|деца|деца}} треба да се запише само како {{PLURAL:$1|деца}}.", + "translate-checks-gettext-plural-missing": "Овој превод мора да има {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "Оваа порака не го поддржува {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} прифаќа точно $1 {{PLURAL:$1|множински облик|множински облици}}. Тековно {{PLURAL:$2|е зададен|се зададени}} $2.", + "translate-checks-smartformat-plural-missing": "Овој превод мора да има множина во променливата $1.", + "translate-checks-smartformat-plural-unsupported": "Оваа порака не поддржува множина во променливата $1.", + "translate-checks-smartformat-plural-count": "Неисправен број на множински облици во $3. Мора да има $1 {{PLURAL:$1|облик|облици}}, а тековно {{PLURAL:$2|е зададен|се зададени}} $2.", + "translate-checks-unicode-plural-missing": "Овој превод мора да има {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "Оваа порака не го поддржува {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "Множинските облици треба да се задаваат како $1. Овој превод содржи $2.", "translate-checks-pagename": "Изменета е определбата на именскиот простор", "translate-checks-format": "Овој превод не ја следи определбата или има неправилна синтакса: $1", - "translate-checks-escape": "Следниве испуштања може да се ненамерни: $1", + "translate-checks-escape": "{{PLURAL:$2|Следниов изменителен знак може да е ненамерен|Следниве изменителни знаци може да се ненамерни}}: $1. {{PLURAL:$4|Важечки е|Важечки се:}} $3.", "translate-checks-parametersnotequal": "Бројот на параметри изнесува {{PLURAL:$1|$1}}, а треба да биде {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 е погрешно внесено.", "translate-checks-fudforum-syntax": "Користете $1 наместо $2 во овој проект.", - "translate-pref-nonewsletter": "Не ми испраќај новости по е-пошта", + "translate-checks-newline-missing-start": "{{PLURAL:$1|Недостасува|Недостасуваат}} $1 {{PLURAL:$1|знак|знаци}} за нов ред на почетокот од преводот.", + "translate-checks-newline-missing-end": "{{PLURAL:$1|Недостасува|Недостасуваат}} $1 {{PLURAL:$1|знак|знаци}} за нов ред на крајот од преводот.", + "translate-checks-newline-extra-start": "Има $1 {{PLURAL:$1|излишен знак|излишни знаци}} за нов ред на почетокот од преводот.", + "translate-checks-newline-extra-end": "Има $1 {{PLURAL:$1|излишен знак|излишни знаци}} за нов ред на крајот од преводот.", + "translate-checks-value-not-present": "Преводот мора да е еднаков на {{PLURAL:$1|1=|една од следниве вредности:}} $1.", + "translate-checks-replacement": "Користи $2 наместо $1.", "translate-pref-editassistlang": "Помошни јазици:", "prefs-translate": "Нагодувања за преведување", "translate-pref-editassistlang-help": "Список на јазични кодови одделени со запирка.\nПреводите на пораките на овие јазици се прикажуваат кога преведувате.\nСписокот на јазици зададен по основно зависи од вашиот јазик.", "translate-pref-editassistlang-bad": "Погрешен јазичен код на списокот:\n$1.", "right-translate": "Уредување со користење на посредникот за преведување", + "action-translate": "уредување со посредникот за преведување", "right-translate-manage": "Раководење со групи пораки", "action-translate-manage": "раководење со групи пораки", "right-translate-import": "Увезување на вонмрежни преводи (од сметач)", @@ -125,7 +121,7 @@ "translationstats": "Статистики за преводите", "translate-stats-edits": "Уредувања", "translate-stats-users": "Преведувачи", - "translate-stats-registrations": "Регистрации", + "translate-stats-registrations": "Зачленувања", "translate-stats-reviews": "Оценки", "translate-stats-reviewers": "Оценувачи", "translate-statsf-intro": "Со овој образец можете да создадете едноставен статистички преглед. Сите вредности имаат горни и долни граници.", @@ -203,17 +199,30 @@ "supportedlanguages-recenttranslations": "скорешни преводи", "supportedlanguages-count": "Вкупно $1 {{PLURAL:$1|јазик|јазици}}.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|уредување|уредувања}} - последното пред $3 {{PLURAL:$3|ден|дена}}", + "translate-supportedlanguages-cached": "Оваа информација е меѓускладирана пред $1.", "abusefilter-edit-builder-vars-translate-source-text": "Изворен текст на преводната единица", - "translate-save": "Зачувај ($1)", + "abusefilter-edit-builder-vars-translate-target-language": "Целен јазик за преводот", + "translate-save": "Објави ($1)", "translate-jssti-add": "Додај во список", "managemessagegroups": "Раководење со групи на пораки", "translate-smg-notallowed": "Не ви е дозволено да ја извршите оваа постапка.", "translate-smg-nochanges": "Нема измени за обработка.", "translate-smg-submit": "Поднеси измени за обработка", "translate-smg-submitted": "Формулациите на пораките се подновени. Измените се обработуваат во позадина.", + "translate-smg-submitted-with-failure": "Подновата на {{PLURAL:$1|одредба на порака|одредбите на пораки}} не успеа за {{PLURAL:$1|следнава група|следниве групи}} — $2. $3", + "translate-smg-submitted-others-processing": "Одредбите на пораки за други групи се обработуваат во позадина.", "translate-smg-more": "Ќе има уште промени за обработка откако ќе ги поднесете овие.", "translate-smg-left": "Содржина на пораката во викито", "translate-smg-right": "Претстојни промени", + "translate-smg-rename-select": "Избери", + "translate-smg-rename-cancel": "Откажи", + "translate-smg-rename-search": "Пребарај совпадната порака...", + "translate-smg-rename-select-err": "Изберете порака за преименување", + "translate-smg-rename-no-msg": "Не пронајдов ниедна порака.", + "translate-smg-rename-new": "Додај како нова...", + "translate-smg-rename-rename": "Додај како преименување на...", + "translate-smg-rename-dialog-title": "Избери совпаднато преименување за $1", + "translate-smg-changeset-modified": "Промените се изменети од друг корисник или постапка. Вашите промени не можат да се објават бидејќи ќе ги заменат нив. Превчитајте ја страницата за да ги видите најновите промени.", "translate-manage-import-diff": "Порака $1 | Дејства: $2", "translate-manage-import-new": "Нова порака $1", "translate-manage-import-deleted": "Избришана порака $1", @@ -221,11 +230,15 @@ "translate-manage-action-conflict": "Увези и обележи како неисправно", "translate-manage-action-ignore": "Занемари", "translate-manage-action-fuzzy": "Увези и обележи ги преводите како неисправни", + "translate-manage-action-rename-fuzzy": "Преименување и обележано како неисправно", + "translate-manage-action-rename": "Преименување", + "translate-manage-action-ignore-change": "Занемари променет превод", "translate-manage-nochanges": "Нема промени во дефинициите на пораките за оваа група.", "translate-manage-nochanges-other": "Нема за овој јазик.\nУпотребете ја врската подолу за да се вратите на прегледот на подробности за групата.", "translate-manage-inconsistent": "Откриена е недоследност во барањето.\nПроверете дали има промени и обидете се повторно.\nПодробности : $1.", "translate-manage-toolong": "Пречекорен е временскиот рок за обработка од {{PLURAL:$1|една секунда|$1 секунди}}.\nПоднесете го образецот одново за да продолжите со обработката.", "translate-manage-import-summary": "Увезување на нова верзија од надворешен извор", + "translate-manage-import-rename-summary": "Преименуван во надворешен извор", "translate-manage-conflict-summary": "Увезување на нова верзија од надворешен извор.\nПроверете.", "translate-manage-submit": "Изврши", "translate-manage-intro-other": "Еве список на промени во преводите на јазикот $1.\nПрегледајте ги пораките и изберете го дејството што сакате да го направите за секоја поднова.\nАко изберете да ги занемарите промените, ова дејство ќе биде само привремено.", @@ -240,15 +253,14 @@ "translate-import-err-no-such-file": "Податотеката $1 не постои или не е подигната месно.", "translate-import-err-stale-group": "Податотекава припаѓа на непостоечка група пораки.", "translate-import-err-no-headers": "Податотеката не е добро обликувана Gettext податотека во форматот за преведување на додатоци:\nНе можам да одредам група и јазик од насловите на податотеката.", - "translate-import-err-warnings": "Податотеката не е добро формулирана.\nОсигурајте се дека вашиот обработувач не ги отстранува msgctxt полињата.\nПодробности : $1", "translate-js-summary": "Опис:", - "translate-js-save": "Зачувај", - "translate-js-next": "Зачувај и отвори следна", + "translate-js-save": "Објави", + "translate-js-next": "Објави и отвори следна", "translate-js-skip": "Прејди на следно", "translate-js-history": "Минати преводи", "translate-js-support": "Постави прашање", "translate-js-support-title": "Побарајте помош ако немате доволно информации за да направите точен превод на пораката.", - "translate-js-support-unsaved-warning": "Имате незачувани преводи.", + "translate-js-support-unsaved-warning": "Имате необјавени преводи.", "translate-gs-pos": "Место", "translate-gs-code": "Код", "translate-gs-continent": "Континент", @@ -301,14 +313,14 @@ "tux-status-fuzzy": "Застарено", "tux-status-proofread": "Проверено", "tux-status-translated": "Преведено", - "tux-status-saving": "Зачувувам...", - "tux-status-unsaved": "Незачувано", + "tux-status-saving": "Објавувам...", + "tux-status-unsaved": "Необјавено", "tux-save-unknown-error": "Се појави непозната грешка.", "tux-editor-placeholder": "Ваш превод", "tux-editor-editsummary-placeholder": "Опис (по желба)", "tux-editor-paste-original-button-label": "Вметни изворен текст", "tux-editor-discard-changes-button-label": "Отфрли промени", - "tux-editor-save-button-label": "Зачувај превод", + "tux-editor-save-button-label": "Објави превод", "tux-editor-skip-button-label": "Прејди на следно", "tux-editor-cancel-button-label": "Откажи", "tux-editor-confirm-button-label": "Потврди превод", @@ -321,9 +333,9 @@ "tux-editor-need-more-help": "Ви треба повеќе помош?", "tux-editor-ask-help": "Побарајте уште информации", "tux-editor-tm-match": "$1% совпаѓање", - "tux-warnings-more": "{{PLURAL:$1|уште $1}}", - "tux-warnings-hide": "скриј", - "tux-editor-save-failed": "Не успеав да го зачувам преводот: $1", + "tux-notices-more": "{{PLURAL:$1|уште $1}}", + "tux-notices-hide": "скриј", + "tux-editor-save-failed": "Не успеав да го објавам преводот: $1", "tux-editor-n-uses": "употребено {{PLURAL:$1|еднаш|$1 пати}}", "tux-editor-message-desc-more": "Погл. уште", "tux-editor-message-desc-less": "Погл. помалку", @@ -335,10 +347,10 @@ "tux-proofread-action-tooltip": "Означи како проверено", "tux-proofread-edit-label": "Уреди", "tux-editor-page-mode": "Страница", - "tux-editor-outdated-warning": "На преводов може да му треба поднова.", - "tux-editor-outdated-warning-diff-link": "Прик. разлики", + "tux-editor-outdated-notice": "На преводов може да му треба поднова.", + "tux-editor-outdated-notice-diff-link": "Прик. разлики", "tux-editor-doc-editor-placeholder": "Документација на пораката", - "tux-editor-doc-editor-save": "Зачувај", + "tux-editor-doc-editor-save": "Објави документација", "tux-editor-doc-editor-cancel": "Откажи", "tux-messagetable-more-messages": "уште {{PLURAL:$1|една порака|$1 пораки}}", "tux-messagetable-loading-messages": "{{PLURAL:$1|Ја вчитувам пораката|Ги вчитувам пораките}}...", @@ -374,12 +386,13 @@ "tux-editor-message-tools-translations": "Сите преводи", "tux-editor-message-tools-linktothis": "Врска до поракава", "tux-editor-loading": "Вчитувам...", + "tux-editor-loading-failed": "Не успеав да ги вчитам преводните помагала: $1", "translate-search-more-languages-info": "уште {{PLURAL:$1|еден јазик|$1 јазици}}", "translate-statsbar-tooltip": "$1% преведени, $2% проверени", "translate-statsbar-tooltip-with-fuzzy": "$1% преведени, $2% проверени, $3% застарени", "translate-search-more-groups-info": "Уште {{PLURAL:$1|една група|$1 групи}}", - "translate-ulsdep-title": "Грешка во поставеноста", - "translate-ulsdep-body": "Додатокот за превод е зависен од додатокот „[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector Универзален јазичен избирач]“.", + "translate-syntax-error": "Преводот содржи синтаксни грешки", "tux-session-expired": "Повеќе не сте најавени. Најавете се во друго јазиче. Можете и некаде да ги прекопирате незачуваните преводи, па да се најавите и да се навратите на страницава, и потоа внесете ги преводите повторно.", - "tux-nojs": "Оваа алатка не работи без JavaScript. JavaScript е исклучен, не работи или прелистувачот не е поддржан." + "tux-nojs": "Оваа алатка не работи без JavaScript. JavaScript е исклучен, не работи или прелистувачот не е поддржан.", + "specialpages-group-translation": "Преведување" } diff --git a/MLEB/Translate/i18n/core/ml.json b/MLEB/Translate/i18n/core/ml.json index d0d7d340..349eb221 100644 --- a/MLEB/Translate/i18n/core/ml.json +++ b/MLEB/Translate/i18n/core/ml.json @@ -54,34 +54,15 @@ "translate-use-suggestion": "ഇപ്പോഴുള്ള പരിഭാഷയ്ക്ക് പകരം ഈ നിർദ്ദേശം ഉപയോഗിയ്ക്കുക.", "translate-edit-nopermission": "ഈ സന്ദേശങ്ങൾ പരിഭാഷപ്പെടുത്താൻ താങ്കൾ അനുമതി നേടേണ്ടതുണ്ട്.", "translate-edit-askpermission": "അനുമതി അഭ്യർത്ഥിക്കുക", - "translate-magic-pagename": "മീഡിയവിക്കി വിപുലീകൃത തർജ്ജമ", - "translate-magic-module": "ഘടകം:", - "translate-magic-submit": "എടുക്കുക", - "translate-magic-cm-export": "കയറ്റുമതി ചെയ്യുക", - "translate-magic-nothing-to-export": "കയറ്റുമതി ചെയ്യാനായി ഒന്നുമില്ല.", - "translate-magic-cm-current": "നിലവിലുള്ളത്", - "translate-magic-cm-original": "മൂലകൃതി", - "translate-magic-cm-comment": "അഭിപ്രായം:", - "translate-magic-cm-save": "സേവ് ചെയ്യുക", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] ഉപയോഗിച്ച് പുതുക്കിയവ", - "translate-magic-cm-savefailed": "സേവ് ചെയ്യാൻ പറ്റിയില്ല", - "translate-magic-special": "പ്രത്യേക താളുകളുടെ അലിയാസുകൾ", - "translate-magic-words": "മാന്ത്രികപദങ്ങൾ", - "translate-magic-namespace": "നാമമേഖല നാമങ്ങൾ", - "translate-magic-notsaved": "താങ്കളുടെ തിരുത്ത് സേവ് ചെയ്തിട്ടില്ല!", - "translate-magic-errors": "തർജ്ജമകളിൽ ഉള്ളതായി താഴെ കൊടുത്തിരിക്കുന്ന {{PLURAL:$1|പിഴവ്|പിഴവുകൾ}} ശരിയാക്കുക:", - "translate-magic-saved": "താങ്കൾ വരുത്തിയ മാറ്റങ്ങൾ വിജയകരമായി സേവ് ചെയ്തിരിക്കുന്നു.", - "translate-checks-parameters": "ഇനിക്കൊടുക്കുന്ന {{PLURAL:$2|ചരം|ചരങ്ങൾ}} ഉപയോഗിച്ചിട്ടില്ല:\n$1", - "translate-checks-parameters-unknown": "ഇനിക്കൊടുക്കുന്ന {{PLURAL:$2|ചരം|ചരങ്ങൾ}} വ്യക്തമല്ല:\n$1", + "translate-checks-parameters": "ഇനിക്കൊടുക്കുന്ന {{PLURAL:$2|ചരം|ചരങ്ങൾ}} ഉപയോഗിച്ചിട്ടില്ല:\n$1", + "translate-checks-parameters-unknown": "ഇനിക്കൊടുക്കുന്ന {{PLURAL:$2|ചരം|ചരങ്ങൾ}} വ്യക്തമല്ല:\n$1", "translate-checks-balance": "{{PLURAL:$2|കോഷ്ഠകങ്ങളുടെ|കോഷ്ഠകങ്ങളുടെ}} എണ്ണം ഇരട്ടയല്ല:\n$1", "translate-checks-links": "ഇനിക്കൊടുക്കുന്ന {{PLURAL:$2|കണ്ണി|$2 കണ്ണികൾ}} പ്രശ്നകാരിയാണ്:\n$1", "translate-checks-links-missing": "ഇനിക്കൊടുക്കുന്ന {{PLURAL:$2|കണ്ണി|$2 കണ്ണികൾ}} ചേർത്തിട്ടില്ല:\n$1", - "translate-checks-xhtml": "ഇനിക്കൊടുക്കുന്ന {{PLURAL:$2|റ്റാഗ്|റ്റാഗുകൾ}} ദയവായി ശരിയായവ കൊണ്ട് മാറ്റിച്ചേർക്കുക:\n$1", "translate-checks-plural": "നിർ‌വചനം {{PLURAL:}} ഉപയോഗിക്കുന്നു, പക്ഷെ പരിഭാഷ ഉപയോഗിക്കുന്നില്ല.", "translate-checks-pagename": "നാമമേഖല നിർവ്വചനത്തിൽ നിന്നും മാറിയിരിക്കുന്നു", "translate-checks-format": "ഈ പരിഭാഷ നിർവ്വചനം അനുസരിച്ചുള്ളതല്ല അല്ലെങ്കിൽ അസാധുവായ എഴുത്തുരീതി ഉൾപ്പെടുന്നു: $1", "translate-checks-fudforum-syntax": "ഈ പദ്ധതിയിൽ $2 എന്നതിനു പകരം $1 എന്നുപയോഗിക്കുക.", - "translate-pref-nonewsletter": "ഇമെയിൽ വാർത്താപത്രികകൾ എനിക്ക് അയയ്ക്കേണ്ടതില്ല", "translate-pref-editassistlang": "സഹായ ഭാഷകൾ:", "prefs-translate": "പരിഭാഷാ ഐച്ഛികങ്ങൾ", "translate-pref-editassistlang-help": "അല്പവിരാമം ഉപയോഗിച്ച് വേർപെടുത്തിയിരിക്കുന്ന ഭാഷാ കോഡുകളുടെ പട്ടിക. \nതാങ്കൾ പരിഭാഷപ്പെടുത്തുമ്പോൾ ഈ ഭാഷകളിലെ പരിഭാഷകൾ കാണിക്കുന്നതാണ്. \nസ്വതേ നൽകുന്ന പട്ടിക താങ്കളുടെ ഭാഷയെ ആശ്രയിച്ചുള്ളതായിരിക്കും", @@ -254,8 +235,8 @@ "tux-editor-need-more-help": "സഹായം ആവശ്യമാണോ?", "tux-editor-ask-help": "കൂടുതല്‍ വിവരങ്ങള്‍ ചോദിക്കുക", "tux-editor-tm-match": "$1% പൊരുത്തപ്പെടുന്നു", - "tux-warnings-more": "{{PLURAL:$1|$1 എണ്ണം കൂടി}}", - "tux-warnings-hide": "മറയ്ക്കുക", + "tux-notices-more": "{{PLURAL:$1|$1 എണ്ണം കൂടി}}", + "tux-notices-hide": "മറയ്ക്കുക", "tux-editor-save-failed": "പരിഭാഷ സേവ് ചെയ്യുന്നത് പരാജയപ്പെട്ടു: $1", "tux-editor-n-uses": "{{PLURAL:$1|ഒരു തവണ|$1 തവണ}} ഉപയോഗിച്ചു", "tux-editor-message-desc-more": "കൂടുതൽ കാണുക", @@ -268,8 +249,8 @@ "tux-proofread-action-tooltip": "സംശോധനം ചെയ്തതായി അടയാളപ്പെടുത്തുക", "tux-proofread-edit-label": "തിരുത്തുക", "tux-editor-page-mode": "താൾ", - "tux-editor-outdated-warning": "ഈ പരിഭാഷ പുതുക്കേണ്ടതാവാം", - "tux-editor-outdated-warning-diff-link": "വ്യത്യാസം കാണിക്കുക", + "tux-editor-outdated-notice": "ഈ പരിഭാഷ പുതുക്കേണ്ടതാവാം", + "tux-editor-outdated-notice-diff-link": "വ്യത്യാസം കാണിക്കുക", "tux-editor-doc-editor-placeholder": "സന്ദേശ വിവരണം", "tux-editor-doc-editor-save": "വിവരണം സംരക്ഷിക്കുക", "tux-editor-doc-editor-cancel": "റദ്ദാക്കുക", diff --git a/MLEB/Translate/i18n/core/mn.json b/MLEB/Translate/i18n/core/mn.json index 2bc1fa30..70f67805 100644 --- a/MLEB/Translate/i18n/core/mn.json +++ b/MLEB/Translate/i18n/core/mn.json @@ -6,7 +6,6 @@ ] }, "translate-page-language": "Хэл", - "translate-magic-cm-comment": "Тайлбар:", "translate-language": "Хэл", "tux-session-expired": "Таны логин гарсан байна. Энэ таб -аа хаалгүй шинэ таб нэмээд логин хийчихээд хадгалаарай." } diff --git a/MLEB/Translate/i18n/core/mni.json b/MLEB/Translate/i18n/core/mni.json index eaf43345..d704b88d 100644 --- a/MLEB/Translate/i18n/core/mni.json +++ b/MLEB/Translate/i18n/core/mni.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Amire80", "Awangba Mangang" ] }, diff --git a/MLEB/Translate/i18n/core/mo.json b/MLEB/Translate/i18n/core/mo.json index eabc9137..e1327208 100644 --- a/MLEB/Translate/i18n/core/mo.json +++ b/MLEB/Translate/i18n/core/mo.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Node ue", - "Cybernenea11" + "Cybernenea11", + "Node ue" ] }, "translate": "Традуче", @@ -33,11 +33,6 @@ "translate-edit-no-information": "Ачест месаж ну аре документацие.\nДакэ штиць унде сау кум есте фолосит, ый путець ажута пе чейлалць традукэторь прин адэугаря документацией сале.", "translate-edit-information": "Информаций деспре месаж ($1)", "translate-edit-in-other-languages": "Месажул ын алте лимбь", - "translate-magic-submit": "Адуче", - "translate-magic-cm-current": "актуал", - "translate-magic-cm-original": "Ориӂинал", - "translate-magic-cm-comment": "Коментариу:", - "translate-magic-cm-save": "Салвязэ", "translate-stats-users": "Традукэторь", "translate-untranslated": "Де традус", "translate-ls-column-group": "Груп де месаже", diff --git a/MLEB/Translate/i18n/core/mr.json b/MLEB/Translate/i18n/core/mr.json index 15bc29c2..5da4df89 100644 --- a/MLEB/Translate/i18n/core/mr.json +++ b/MLEB/Translate/i18n/core/mr.json @@ -57,30 +57,11 @@ "translate-edit-nopermission": "आपणास भाषांतरासाठी 'भाषांतर अधिकार' हवेत.", "translate-edit-askpermission": "परवानगी घ्या", "exporttranslations": "भाषांतरे निर्यात करा", - "translate-magic-pagename": "वाढीव मीडियाविकि भाषांतर", - "translate-magic-module": "नियामक:", - "translate-magic-submit": "ओढा", - "translate-magic-cm-export": "निर्यात", - "translate-magic-nothing-to-export": "निर्यात करण्याजोगे येथे काहीही नाही.", - "translate-magic-cm-to-be": "अपेक्षित", - "translate-magic-cm-current": "सद्य", - "translate-magic-cm-original": "मूळ", - "translate-magic-cm-comment": "अभिप्राय:", - "translate-magic-cm-save": "जतन करा", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] वापरून बदलले", - "translate-magic-cm-savefailed": "जतन अयशस्वी", - "translate-magic-special": "विशेष पान - टोपणनावे", - "translate-magic-words": "जादूई शब्द", - "translate-magic-namespace": "नामविश्व नावे", - "translate-magic-notsaved": "आपले संपादन जतन करण्यात आले नाही!", - "translate-magic-errors": "कृपया भाषांतरात खालील {{PLURAL:$1|चूक|चूका}} ठिकठाक करा:", - "translate-magic-saved": "आपण केलेले बदल यशस्वीरित्या जतन केल्या गेले.", - "translate-checks-parameters": "खालील {{PLURAL:$2|प्राचल वापरला नाही|प्राचल वापरलेले नाहीत}}:\n$1", - "translate-checks-parameters-unknown": "खालील {{PLURAL:$2|प्राचल अनोळखी आहे|प्राचले अनोळखी आहेत}}:\n$1", + "translate-checks-parameters": "खालील {{PLURAL:$2|प्राचल वापरला नाही|प्राचल वापरलेले नाहीत}}:\n$1", + "translate-checks-parameters-unknown": "खालील {{PLURAL:$2|प्राचल अनोळखी आहे|प्राचले अनोळखी आहेत}}:\n$1", "translate-checks-balance": "यात चुकिचे {{PLURAL:$2|गोल कंसचिन्ह आहे}}:\n$1", "translate-checks-links": "खालील {{PLURAL:$2|दुवा त्रासदायक आहे|$2 दुवे त्रासदायक आहेत}}:\n\n$1", "translate-checks-links-missing": "खालील {{PLURAL:$2|दुवा अनुपलब्ध आहे|$2 दुवे अनुपलब्ध आहेत}} :\n\n$1", - "translate-checks-xhtml": "कृपया खालील {{PLURAL:$2|खूणपताका}} योग्य खूणपताकेने बदला:\n\n\n$1", "translate-checks-plural": "व्याख्येत {{PLURAL:}}चा वापर आहे पण भाषांतरात नाही.", "translate-checks-plural-forms": "{{PLURAL:}} {{PLURAL:$1|एक फॉर्म|$1 फॉर्म्स}}परंतु, {{PLURAL:$2|फक्त एकच फॉर्म सहाय्यीकृत आहे|$2 फॉर्म्स सहाय्यीकृत आहेत }} ( 0= व 1= फॉर्म्स वगळून).", "translate-checks-plural-dupe": "{{PLURAL:}} ला शेवटी द्विरुक्त फॉर्म्स आहेत.{{PLURAL:$1|sheep|sheep}} ला {{PLURAL:$1|sheep}}असे लिहिल्या जावयास हवे.", @@ -90,7 +71,6 @@ "translate-checks-parametersnotequal": "प्राचल मोजणी {{PLURAL:$1|$1}} आहे; {{PLURAL:$2|$2}} हवी.", "translate-checks-malformed": "$1 मध्ये विकृती आहे.", "translate-checks-fudforum-syntax": "या प्रकल्पात $2 ऐवजी $1वापरा.", - "translate-pref-nonewsletter": "मला विपत्राद्वारे बातमीपत्र पाठवू नका", "translate-pref-editassistlang": "सहायक भाषा:", "prefs-translate": "भाषांतर पर्याय", "translate-pref-editassistlang-help": "ही स्वल्पविरामाद्वारे विभाजित केलेली भाषासंकेतांची यादी आहे.\n\nआपण भाषांतर करीत असतांना,संदेशाचे या भाषेतील भाषांतर दाखविल्या जाते.\n\nयातील अविचल भाषा आपल्या मूळ भाषेवर आधारीत आहेत.", @@ -281,8 +261,8 @@ "tux-editor-need-more-help": "अधिक मदत हवी?", "tux-editor-ask-help": "अधिक माहिती विचारा", "tux-editor-tm-match": "$1% जुळते", - "tux-warnings-more": "{{PLURAL:$1|$1 अधिक}}", - "tux-warnings-hide": "लपवा", + "tux-notices-more": "{{PLURAL:$1|$1 अधिक}}", + "tux-notices-hide": "लपवा", "tux-editor-save-failed": "भषांतर जतन करणे अयशस्वी:$1", "tux-editor-n-uses": "$1 {{PLURAL:$1|वेळी}} वापरले", "tux-editor-message-desc-more": "अधिक बघा", @@ -295,8 +275,8 @@ "tux-proofread-action-tooltip": "पुनर्विलोकित खूण करा", "tux-proofread-edit-label": "संपादन करा", "tux-editor-page-mode": "पान", - "tux-editor-outdated-warning": "या भाषांतरास अद्यतन करण्याची गरज आहे.", - "tux-editor-outdated-warning-diff-link": "फरक दाखवा", + "tux-editor-outdated-notice": "या भाषांतरास अद्यतन करण्याची गरज आहे.", + "tux-editor-outdated-notice-diff-link": "फरक दाखवा", "tux-editor-doc-editor-placeholder": "संदेश दस्ताऐवजीकरण", "tux-editor-doc-editor-save": "दस्तऐवजीकरण जतन करा", "tux-editor-doc-editor-cancel": "रद्द करा", diff --git a/MLEB/Translate/i18n/core/mrh.json b/MLEB/Translate/i18n/core/mrh.json new file mode 100644 index 00000000..6f4c5e5b --- /dev/null +++ b/MLEB/Translate/i18n/core/mrh.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Laitei" + ] + }, + "translate-documentation-language": "Mesei châhnarahvozy" +} diff --git a/MLEB/Translate/i18n/core/ms.json b/MLEB/Translate/i18n/core/ms.json index 7906bc51..15ddf657 100644 --- a/MLEB/Translate/i18n/core/ms.json +++ b/MLEB/Translate/i18n/core/ms.json @@ -5,7 +5,8 @@ "Aurora", "Emrrans", "Kurniasan", - "Pizza1016" + "Pizza1016", + "Tofeiku" ] }, "translate": "Terjemah", @@ -54,31 +55,11 @@ "translate-use-suggestion": "Ganti terjemahan semasa dengan cadangan ini.", "translate-edit-nopermission": "Anda memerlukan hak penterjemahan untuk menterjemahkan mesej.", "translate-edit-askpermission": "Dapatkan izin", - "translate-magic-pagename": "Terjemahan tambahan MediaWiki", - "translate-magic-help": "Anda boleh menterjemahkan alias laman khas, kata sakti dan nama ruang nama.\n\nAlias laman khas dan kata sakti boleh ada berbagai-bagai terjemahan.\nTerjemahan harus dipisahkan dengan tanda koma (,).\nRuang nama pula memerlukan satu terjemahan sahaja.\n\nUsaha menterjemahkan ruang nama perbincangan projek $1 talk boleh timbulnya kesulitan.\n$1 diganti dengan nama tapak projek (cth: {{ns:project_talk}}).\nSeandainya didapati mustahil untuk membentuk ungkapan yang sah tanpa mengubah nama tapak dalam bahasa anda, sila hubungi kami di [[Support|Bantuan]].\n\nAnda perlu menjadi seorang penterjemah untuk menyimpan perubahan.\nPerubahan tidak disimpan sehingga anda mengklik butang Simpan di bawah.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Ambil", - "translate-magic-cm-export": "Eksport", - "translate-magic-nothing-to-export": "Tiada apa-apa untuk dieksport.", - "translate-magic-cm-to-be": "Menjadi", - "translate-magic-cm-current": "Semasa", - "translate-magic-cm-original": "Asal", - "translate-magic-cm-comment": "Ulasan:", - "translate-magic-cm-save": "Simpan", - "translate-magic-cm-updatedusing": "Dikemaskini dengan [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Tidak dapat disimpan", - "translate-magic-special": "Alias laman khas", - "translate-magic-words": "Kata sakti", - "translate-magic-namespace": "Nama ruang nama", - "translate-magic-notsaved": "Suntingan anda belum disimpan!", - "translate-magic-errors": "Sila betulkan {{PLURAL:$1|kesilapan|kesilapan-kesilapan}} terjemahan yang berikut:", - "translate-magic-saved": "Pengubahan anda berjaya disimpan.", - "translate-checks-parameters": "{{PLURAL:$2|Parameter|Parameter-parameter}} berikut tidak digunakan:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Parameter|Parameter-parameter}} berikut tidak dikenali:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Parameter|Parameter-parameter}} berikut tidak digunakan:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Parameter|Parameter-parameter}} berikut tidak dikenali:\n$1", "translate-checks-balance": "Bilangan {{PLURAL:$2|tanda kurungan|tanda kurungan}} tidak sekata:\n$1", "translate-checks-links": "{{PLURAL:$2|Pautan|$2 pautan}} yang berikut ada masalah:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Pautan|$2 pautan}} yang berikut tidak dijumpai:\n$1", - "translate-checks-xhtml": "Sila ganti {{PLURAL:$2|tag|tag-tag}} berikut dengan yang betul:\n$1", "translate-checks-plural": "Takrifan menggunakan {{PLURAL:}} tapi terjemahan pula tidak.", "translate-checks-plural-forms": "{{PLURAL:}} diberi {{PLURAL:$1|satu bentuk|$1 bentuk}} tetapi {{PLURAL:$2|hanya satu bentuk|$2 bentuk}} disokong (kecuali bentuk 0= dad 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} mempunyai bentuk pendua di hujung. {{PLURAL:$1|sheep|sheep}} sepatutnya ditulis sebagai {{PLURAL:$1|sheep}}.", @@ -88,7 +69,6 @@ "translate-checks-parametersnotequal": "Kiraan parameter ialah {{PLURAL:$1|$1}}; sepatutnya {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 cacat.", "translate-checks-fudforum-syntax": "Usah gunakan $2, gunakan $1 di projek ini.", - "translate-pref-nonewsletter": "Jangan hantar surat berita e-mel kepada saya", "translate-pref-editassistlang": "Bahasa pembantu:", "prefs-translate": "Pilihan penterjemahan", "translate-pref-editassistlang-help": "Senarai kod bahasa terpisah koma.\nTerjemahan mesej dalam bahasa-bahasa ini ditunjukkan apabila anda menterjemah.\nSenarai bahasa asali bergantung pada bahasa anda.", @@ -183,7 +163,7 @@ "supportedlanguages-recenttranslations": "terjemahan terbaru", "supportedlanguages-count": "Sejumlah $1 bahasa.", "supportedlanguages-activity": "$1: $2 suntingan - suntingan terakhir pada $3 hari lalu", - "translate-save": "Simpan ($1)", + "translate-save": "Terbit ($1)", "translate-jssti-add": "Tambahkan kepada senarai", "managemessagegroups": "Pengurusan kumpulan mesej", "translate-smg-notallowed": "Anda tidak dibenarkan untuk melaksanakan tindakan ini.", @@ -219,15 +199,14 @@ "translate-import-err-no-such-file": "Fail $1 tidak wujud atau telah dimuat naik secara setempat.", "translate-import-err-stale-group": "Kumpulan mesej bagi fail ini tidak wujud.", "translate-import-err-no-headers": "Fail ini bukan fail Gettext yang dibentuk dengan betul dalam format sambungan Translate:\nKumpulan dan bahasa tidak dapat ditentukan daripada pengatas fail.", - "translate-import-err-warnings": "Fail ini tidak dibentuk dengan betul.\nPastikan editor anda tidak menguggurkan medan msgctxt.\nButiran: $1", "translate-js-summary": "Ringkasan:", - "translate-js-save": "Simpan", - "translate-js-next": "Simpan dan buka yang seterusnya", + "translate-js-save": "Terbitkan", + "translate-js-next": "Terbit dan buka yang seterusnya", "translate-js-skip": "Langkau ke mesej seterusnya", "translate-js-history": "Sejarah penterjemahan", "translate-js-support": "Tanyakan soalan", "translate-js-support-title": "Minta tolong kalau tak cukup maklumat untuk menterjemahkan mesej ini dengan betul.", - "translate-js-support-unsaved-warning": "Terdapat terjemahan yang belum disimpan.", + "translate-js-support-unsaved-warning": "Anda mempunyai terjemahan yang belum diterbit.", "translate-gs-pos": "Ked.", "translate-gs-code": "Kod", "translate-gs-continent": "Benua", @@ -279,12 +258,12 @@ "tux-status-fuzzy": "Lapuk", "tux-status-proofread": "Disemak", "tux-status-translated": "Diterjemahkan", - "tux-status-saving": "Menyimpan...", - "tux-status-unsaved": "Belum disimpan", + "tux-status-saving": "Menerbit...", + "tux-status-unsaved": "Belum diterbit", "tux-editor-placeholder": "Terjemahan anda", "tux-editor-paste-original-button-label": "Tampalkan teks sumber", "tux-editor-discard-changes-button-label": "Buang perubahan", - "tux-editor-save-button-label": "Simpan terjemahan", + "tux-editor-save-button-label": "Terbit terjemahan", "tux-editor-skip-button-label": "Langkau ke mesej seterusnya", "tux-editor-cancel-button-label": "Batalkan", "tux-editor-confirm-button-label": "Sahkan terjemahan", @@ -296,9 +275,9 @@ "tux-editor-need-more-help": "Perlukan lagi bantuan?", "tux-editor-ask-help": "Minta keterangan lanjut", "tux-editor-tm-match": "$1% berpadan", - "tux-warnings-more": "{{PLURAL:$1|$1 lagi}}", - "tux-warnings-hide": "sorokkan", - "tux-editor-save-failed": "Terjemahan tidak dapat disimpan: $1", + "tux-notices-more": "{{PLURAL:$1|$1 lagi}}", + "tux-notices-hide": "sorokkan", + "tux-editor-save-failed": "Menerbitkan terjemahan gagal: $1", "tux-editor-n-uses": "digunakan $1 kali", "tux-editor-message-desc-more": "Lihat yang lain", "tux-editor-message-desc-less": "Lihat kurang", @@ -310,10 +289,10 @@ "tux-proofread-action-tooltip": "Tanda sebagai disemak", "tux-proofread-edit-label": "Sunting", "tux-editor-page-mode": "Laman", - "tux-editor-outdated-warning": "Terjemahan ini mungkin perlu dikemaskinikan.", - "tux-editor-outdated-warning-diff-link": "Tunjukkan perbezaan", + "tux-editor-outdated-notice": "Terjemahan ini mungkin perlu dikemaskinikan.", + "tux-editor-outdated-notice-diff-link": "Tunjukkan perbezaan", "tux-editor-doc-editor-placeholder": "Pendokumenan pesanan", - "tux-editor-doc-editor-save": "Simpan pendokumenan", + "tux-editor-doc-editor-save": "Terbit pendokumenan", "tux-editor-doc-editor-cancel": "Batalkan", "tux-messagetable-more-messages": "$1 lagi mesej", "tux-messagetable-loading-messages": "{{PLURAL:$1|Mesej|Mesej-mesej}} sedang dimuatkan...", @@ -349,7 +328,5 @@ "translate-search-more-languages-info": "$1 lagi bahasa", "translate-statsbar-tooltip": "$1% diterjemah, $2% disemak", "translate-statsbar-tooltip-with-fuzzy": "$1% diterjemah, $2% disemak, $3 lapuk", - "translate-search-more-groups-info": "$1 lagi kumpulan", - "translate-ulsdep-title": "Ralat konfigurasi", - "translate-ulsdep-body": "Sambungan Translate bersandarkan [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector sambugnan Universal Language Selector]." + "translate-search-more-groups-info": "$1 lagi kumpulan" } diff --git a/MLEB/Translate/i18n/core/mt.json b/MLEB/Translate/i18n/core/mt.json index 2054a0e8..522bc259 100644 --- a/MLEB/Translate/i18n/core/mt.json +++ b/MLEB/Translate/i18n/core/mt.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Chrisportelli", - "Roderick Mallia", - "Leli Forte" + "Leli Forte", + "Roderick Mallia" ] }, "translate": "Traduzzjoni", @@ -43,27 +43,8 @@ "translate-use-suggestion": "Biddel it-traduzzjoni attwali ma' din is-suġġeriment.", "translate-edit-nopermission": "Għandek bżonn l-awtorizzazzjoni sabiex tittraduċi messaġġi.", "translate-edit-askpermission": "Itlob l-awtorizzazzjoni", - "translate-magic-pagename": "Traduzzjoni estiża ta' MediaWiki", - "translate-magic-help": "Tista' tittraduċi t-titli tal-paġni speċjali, frażijiet maġiċi u ismijiet tal-ispazju tal-isem.\n\nIt-titli tal-paġni speċjali u l-frażijiet maġiċi jista' jkollhom aktar minn traduzzjoni waħda.\nIt-traduzzjonijiet għandhom jiġu separati minn virgoletta (,).\nL-ispazji tal-isem irid ikollhom traduzzjoni waħda biss.\n\nFit-traduzzjoni tal-ispazji tal-isem, $1 talk hi speċjali. $1 hi mibdula mal-isem tas-sit (per eżempju {{ns:project_talk}}).\nJekk mhuwiex possibbli li fil-lingwa tiegħek tiġi formulata espressjonali valida mingħajr ma tbiddel l-isem tas-sit, jekk jogħġbok ikkuntatja lil żviluppatur.\n\nBiex issalva t-tibdil, trid tkun parti mill-grupp tat-tradutturi.\nIt-tibdil ma jiġix salvat sakemm ma tagħfasx il-buttuna t'isfel biex issalva.", - "translate-magic-module": "Modulu:", - "translate-magic-submit": "Ikseb", - "translate-magic-cm-export": "Esporta", - "translate-magic-nothing-to-export": "M'hemm xejn x'tesporta.", - "translate-magic-cm-to-be": "Ġdid", - "translate-magic-cm-current": "Attwali", - "translate-magic-cm-original": "Oriġinali", - "translate-magic-cm-comment": "Kumment:", - "translate-magic-cm-save": "Salva", - "translate-magic-cm-updatedusing": "Aġġornat bl-użu ta' [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "L-issejvjar ma seħħx", - "translate-magic-special": "Psewdonimi tal-paġni speċjali", - "translate-magic-words": "Kliem maġiku", - "translate-magic-namespace": "Ismijiet tal-ispazji tal-isem", - "translate-magic-notsaved": "Il-modifika tiegħek ma ġietx salvata!", - "translate-magic-errors": "Jekk jogħġbok irranġa l-{{PLURAL:$1|iżball|iżbalji}} segwenti fit-traduzzjonijiet:", - "translate-magic-saved": "Il-modifiki tiegħek ġew salvati b'suċċess.", - "translate-checks-parameters": "Il-{{PLURAL:$2|parametru segwnti mhuwiex użat|parametri segwenti mhumiex użati}}:\n$1", - "translate-checks-parameters-unknown": "Il-{{PLURAL:$2|parameteru segwenti mhuwiex magħruf|parametri segwenti mhumiex magħrufa}}:\n$1", + "translate-checks-parameters": "Il-{{PLURAL:$2|parametru segwnti mhuwiex użat|parametri segwenti mhumiex użati}}:\n$1", + "translate-checks-parameters-unknown": "Il-{{PLURAL:$2|parameteru segwenti mhuwiex magħruf|parametri segwenti mhumiex magħrufa}}:\n$1", "translate-checks-balance": "Hemm numru mhux ekwu ta' {{PLURAL:$2|parentesi|parentesi}}:\n$1", "translate-checks-links": "Il-{{PLURAL:$2|ħolqa segwenti għandha problema|$2 ħoloq segwenti għandhom problema}}:\n$1", "translate-checks-links-missing": "Il-{{PLURAL:$2|ħolqa segwenti hi nieqsa|$2 ħoloq segwenti huma nieqsa}}:\n$1", @@ -72,13 +53,18 @@ "translate-checks-format": "Din it-traduzzjoni ma ssegwix id-definizzjoni segwenti jew għandha sintassi invalidi: $1", "translate-checks-escape": "L-''escapes'' segwenti jistgħu jkunu aċċidentali: $1", "translate-checks-fudforum-syntax": "Uża $1 minflok $2 f'dan il-proġett.", - "translate-pref-nonewsletter": "Tibgħatlix ''newsletters'' permezz ta' ittra-e", "translate-pref-editassistlang": "Lingwi assistenti:", "prefs-translate": "Opzjonijiet għat-traduzzjoni", "translate-pref-editassistlang-help": "Kodiċi tal-lingwi separati minn virgola.\nIt-traduzzjonijiet ta' messaġġ f'dawn il-lingwi huma murija meta tkun qed tittraduċi.\nIl-lista predefinita tal-lingwi tiddependi fuq il-lingwa tiegħek.", "translate-pref-editassistlang-bad": "Kodiċi tal-lingwa invalidu fil-lista:\n$1.", "right-translate": "Immodifika bl-użu tal-interfaċċa tat-traduzzjoni", "right-translate-messagereview": "Irrevedi t-traduzzjonijiet", + "translate-rcfilters-translations": "Traduzzjonijiet", + "translate-rcfilters-translations-only-desc": "Modifiki fuq paġni tradotti.", + "translate-rcfilters-translations-filter-label": "Mhux traduzzjonijiet", + "translate-rcfilters-translations-filter-desc": "Il-modifiki kollha li mhumiex traduzzjonijiet.", + "translate-rcfilters-translations-site-label": "Messaġġi tas-sistema", + "translate-rcfilters-translations-site-desc": "Personalizzazzjonijiet ta' messaġġi tas-sistema fl-ispazju tal-isem MediaWiki.", "translate-rc-translation-filter": "Iffilitra t-traduzzjonijiet:", "translate-rc-translation-filter-no": "Tagħmel xejn", "translate-rc-translation-filter-only": "Uri biss it-traduzzjonijiet", diff --git a/MLEB/Translate/i18n/core/mwl.json b/MLEB/Translate/i18n/core/mwl.json index aac2ecf3..35cd0b12 100644 --- a/MLEB/Translate/i18n/core/mwl.json +++ b/MLEB/Translate/i18n/core/mwl.json @@ -1,13 +1,12 @@ { "@metadata": { "authors": [ - "MokaAkashiyaPT", - "Athena in Wonderland" + "Athena in Wonderland", + "MokaAkashiyaPT" ] }, "translate-taction-export": "Sportar", "translate-edit-translation": "Traduçon", - "translate-magic-cm-export": "Sportar", "languagestats": "Statísticas de la lhéngua", "supportedlanguages": "Lhénguas sustentadas", "translate-import-load": "Cargar fexeiro", diff --git a/MLEB/Translate/i18n/core/my.json b/MLEB/Translate/i18n/core/my.json index 861c22c2..51707886 100644 --- a/MLEB/Translate/i18n/core/my.json +++ b/MLEB/Translate/i18n/core/my.json @@ -1,9 +1,10 @@ { "@metadata": { "authors": [ + "Dr Lotus Black", "Erikoo", "Ninjastrikers", - "Dr Lotus Black" + "Teitei Para" ] }, "translate": "ဘာသာပြန်ပါ", @@ -45,20 +46,10 @@ "translate-edit-askpermission": "ခွင့်ပြုချက် ရယူရန်", "exporttranslations": "ဘာသာပြန်များကို တင်ပို့ရန်", "translate-export-form-format": "ဖောမတ်", - "translate-magic-module": "မော်ဂျူး:", - "translate-magic-cm-export": "တင်ပို့ရန်", - "translate-magic-nothing-to-export": "တင်ပို့ရန် ဘာမျှမရှိပါ။", - "translate-magic-cm-current": "လက်ရှိ", - "translate-magic-cm-original": "မူရင်း", - "translate-magic-cm-comment": "မှတ်ချက်:", - "translate-magic-cm-save": "သိမ်းရန်", - "translate-magic-cm-savefailed": "သိမ်းဆည်းရာ မအောင်မြင်ခဲ့", - "translate-magic-namespace": "အမည်ညွှန်း အမည်များ", - "translate-magic-notsaved": "သင့်တည်းဖြတ်မှုကို မသိမ်းဆည်းခဲ့ရပါ", - "translate-magic-saved": "သင်၏ ပြောင်းလဲမှုများသည် သိမ်းဆည်းပြီးဖြစ်သည်။", - "translate-pref-nonewsletter": "ကျွန်ုပ်ထံ အီးမေးလ်သတင်းလွှာ မပို့ပါနှင့်", + "translate-checks-replacement": "$1 ၏အစား $2 ကိုသုံးပါ", "translate-pref-editassistlang": "အထောက်အကူ ဘာသာစကားများ:", "prefs-translate": "ဘာသာပြန် ရွေးချယ်စရာများ", + "translate-pref-editassistlang-help": "ကော်မာ ကြားခံထားသော ဘာသာစကားကုဒ်များစာရင်း။ ဘာသာပြန်ဆိုချိန်တွင် ဤဘာသာစကားများရှိ မက်ဆေ့တစ်ခု၏ဘာသာပြန်ကို ပြသထားပါသည်။ ဘာသာစကားများ၏ နဂိုစာရင်းသည် သင်၏ဘာသာစကားပေါ်တွင် မူတည်ပါသည်။", "right-translate-manage": "မက်ဆေ့အုပ်စုများကို စီမံရန်", "action-translate-manage": "မက်ဆေ့အုပ်စုများကို စီမံရန်", "right-translate-import": "အော့ဖ်လိုင်းဘာသာပြန်များကို တင်သွင်းရန်", @@ -166,6 +157,7 @@ "importtranslations": "ဘာသာပြန်များကို တင်သွင်းရန်", "translate-js-summary": "အကျဉ်းချုပ်:", "translate-js-save": "သိမ်းရန်", + "translate-js-next": "သိမ်းဆည်းပြီး နောက်တစ်ခုဖွင့်", "translate-js-skip": "နောက်တစ်ခုသို့ ကျော်သွားရန်", "translate-js-history": "ဘာသာပြန်မှု ရာဇဝင်", "translate-js-support": "မေးခွန်းမေးရန်", @@ -191,6 +183,7 @@ "logentry-translationreview-message": "$1 က ဘာသာပြန် $3 ကို {{GENDER:$2|ပြန်လည်ဆန်းစစ်ခဲ့သည်}}", "translate-stats-workflow": "အခြေနေ", "translate-dynagroup-recent-label": "လတ်တလော ဘာသာပြန်များ", + "translate-dynagroup-recent-desc": "ဤမက်ဆေ့အုပ်စုသည် ဤဘာသာစကားသို့ မကြာသေးခင်ကပြန်ဆိုထားသော ဘာသာပြန်များအားလုံးကို ပြသထားပါသည်။ ပြန်လည်ဆန်းစစ်လုပ်ငန်းများအတွက် အသုံးဝင်ဆုံး။", "translate-dynagroup-additions-label": "လတ်တလော ပေါင်းထည့်မှုများ", "translate-msggroupselector-projects": "မက်ဆေ့အုပ်စု", "translate-msggroupselector-search-placeholder": "အုပ်စုများ ရှာဖွေရန်", @@ -228,8 +221,8 @@ "tux-editor-need-more-help": "ထပ်ပြီး အကူအညီ လိုသေးလား?", "tux-editor-ask-help": "အချက်အလက် ပိုမိုမေးမြန်းရန်", "tux-editor-tm-match": "$1% ကိုက်ညီ", - "tux-warnings-more": "{{PLURAL:$1|$1 ပို၍}}", - "tux-warnings-hide": "ဝှက်", + "tux-notices-more": "{{PLURAL:$1|$1 ပို၍}}", + "tux-notices-hide": "ဝှက်", "tux-editor-save-failed": "ဘာသာပြန်မှုကို သိမ်းဆည်းရာ မအောင်မြင်ပါ: $1", "tux-editor-n-uses": "$1 {{PLURAL:$1|ကြိမ်|ကြိမ်}} အသုံးပြုခဲ့သည်", "tux-editor-message-desc-more": "ပိုမိုကြည့်ရှုရန်", @@ -242,8 +235,8 @@ "tux-proofread-action-tooltip": "ပြန်လည်ဆန်းစစ်ပြီးကြောင်း မှတ်သားရန်", "tux-proofread-edit-label": "ပြင်ဆင်", "tux-editor-page-mode": "စာမျက်နှာ", - "tux-editor-outdated-warning": "ဤဘာသာပြန်သည် မွမ်းမံရန် လိုအပ်နိုင်သည်။", - "tux-editor-outdated-warning-diff-link": "ကွဲပြားမှုများကို ပြရန်", + "tux-editor-outdated-notice": "ဤဘာသာပြန်သည် မွမ်းမံရန် လိုအပ်နိုင်သည်။", + "tux-editor-outdated-notice-diff-link": "ကွဲပြားမှုများကို ပြရန်", "tux-editor-doc-editor-placeholder": "စာလွှာ စာရွက်စာတမ်း", "tux-editor-doc-editor-save": "စာရွက်စာတမ်း သိမ်းရန်", "tux-editor-doc-editor-cancel": "မလုပ်တော့ပါ", @@ -280,5 +273,6 @@ "translate-statsbar-tooltip": "$1% ဘာသာပြန်ပြီး၊ $2% ပြန်လည်ဆန်းစစ်ပြီး", "translate-statsbar-tooltip-with-fuzzy": "$1% ဘာသာပြန်ပြီး၊ $2% ပြန်လည်ဆန်းစစ်ပြီး၊ $3% ခေတ်နောက်ကျနေ", "translate-search-more-groups-info": "ပို၍ $1 {{PLURAL:$1|အုပ်စု|အုပ်စုများ}}", - "tux-session-expired": "သင်သည် အကောင့်ထဲသို့ မဝင်ထားတော့ပါ။ သီးခြား tab တစ်ခုမှ အကောင့်ထဲသို့ ဝင်ပါ။ တနည်းအားဖြင့် မသိမ်းရသေးသော ဘာသာပြန်များကို မိတ္တူတစ်ခုကူးထားပြီး ဤစာမျက်နှာသို့ ပြန်လာကာ သင်၏ဘာသာပြန်များကို ထပ်မံရိုက်ထည့်ပါ။" + "tux-session-expired": "သင်သည် အကောင့်ထဲသို့ မဝင်ထားတော့ပါ။ သီးခြား tab တစ်ခုမှ အကောင့်ထဲသို့ ဝင်ပါ။ တနည်းအားဖြင့် မသိမ်းရသေးသော ဘာသာပြန်များကို မိတ္တူတစ်ခုကူးထားပြီး ဤစာမျက်နှာသို့ ပြန်လာကာ သင်၏ဘာသာပြန်များကို ထပ်မံရိုက်ထည့်ပါ။", + "specialpages-group-translation": "ဘာသာပြန်ခြင်း" } diff --git a/MLEB/Translate/i18n/core/myv.json b/MLEB/Translate/i18n/core/myv.json index e9264f59..9af7cad0 100644 --- a/MLEB/Translate/i18n/core/myv.json +++ b/MLEB/Translate/i18n/core/myv.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Botuzhaleny-sodamo" + "Botuzhaleny-sodamo", + "Rueter" ] }, "translate": "Ютавтомонзо", @@ -24,13 +25,6 @@ "translate-edit-no-information": "''Те пачтямнесэнть арась чарькодевтема. Тевс нолдамодонзо содат, косо эли кода, лездак лия ютавтыцятненень. Поладт те пачтямнентень превть-арсемат.''", "translate-edit-information": "Мезе содамс \"$1\" пачтямнэденть", "translate-edit-in-other-languages": "Пачтямнесь лия кельсэ", - "translate-magic-pagename": "МедиаВикинь келейгавтонь ютавтома", - "translate-magic-submit": "Кандомс", - "translate-magic-cm-current": "Неень", - "translate-magic-cm-original": "Васнянь", - "translate-magic-cm-save": "Ванстомс", - "translate-magic-cm-savefailed": "Ванстома тевесь эзь лисе", - "translate-magic-namespace": "Лем потмо лемть", "translate-rc-translation-filter": "Сувтнемс ютавтовкстнэнь", "translate-rc-translation-filter-no": "Мезеяк а теемс", "translate-rc-translation-filter-only": "Ськамост ютавтовкстнэнь невтемс", @@ -50,7 +44,7 @@ "translate-statsf-submit": "Васнянь неевтезэ", "translate-tag-page-desc": "\"[[$2|$1]]\" вики лопась ютавтозь «$3 ($4)» лопасто.", "translate-sidebar-alltrans": "Лия кельсэ", - "translations": "Весе йутавтовкст", + "translations": "Весе ютавтовкст", "translate-translations-no-message": "\"$1\" пачтямнэсь а йутавтови", "translate-translations-none": "\"$1\" пачтямнэнть арасть ютавтовксонзо", "translate-translations-fieldset-title": "Пачтямнэ", diff --git a/MLEB/Translate/i18n/core/nah.json b/MLEB/Translate/i18n/core/nah.json index d7b6c601..af5cbe95 100644 --- a/MLEB/Translate/i18n/core/nah.json +++ b/MLEB/Translate/i18n/core/nah.json @@ -1,14 +1,15 @@ { "@metadata": { "authors": [ + "Akapochtli", "Fluence", "Ricardo gs", - "Teòtlalili", "Taresi", - "Akapochtli" + "Teòtlalili" ] }, - "translate": "Tictlahtōlcuepāz", + "translate": "Tictlahtolcuepaz", + "translate-taction-translate": "Tictlahtolcuepaz", "translate-page-group": "Olōlli", "translate-page-language": "Tlahtolli", "translate-page-navigation-legend": "Panoliztli", @@ -19,18 +20,15 @@ "translate-prev": "Achto tlahcuilolamatl", "translate-page-description-legend": "Olōltechopa", "translate-page-edit": "xicpatla", + "translate-edit-translation": "Tlahtolcuepaliztli", "translate-edit-contribute": "titlapalēhuīz", "translate-edit-in-other-languages": "Tētītlaniliztli occē tlahtōltica", - "translate-magic-cm-export": "Ticnamacāz", - "translate-magic-cm-to-be": "Yez", - "translate-magic-cm-current": "Āxcān", - "translate-magic-cm-original": "Achto", - "translate-magic-cm-save": "Ticpiyāz", - "translate-magic-namespace": "Tōcātzintli ītōca", + "translate-rcfilters-translations": "Tlahtolcuepaliztli", + "translate-rcfilters-translations-only-label": "Tlahtolcuepaliztli", "translate-rc-translation-filter-no": "Ahtlein titlachīhuāz", "translationstats": "Tlahtōlcuepaliztli tlapōhualli", "translate-stats-edits": "Tlapatlaliztli", - "translate-stats-users": "Tlahtōlcuepalōnih", + "translate-stats-users": "Tlahtolcuepqueh", "translate-statsf-scale-days": "Tōnalli", "translate-statsf-submit": "Achtochīhualiztli", "translate-tag-page-desc": "Huiquizāzanilli ītlahtōlcuepaliz [[$2|$1]].", @@ -38,6 +36,12 @@ "translations": "Mochi tlahtōlcuepaliztli", "translate-translations-none": "Ayāc tlahtōlcuepaliztli ic \"$1\"", "translate-translations-fieldset-title": "Tlahtoltitlaniliztli", + "translate-language": "Tlahtolli", + "translate-mgs-column-language": "Tlahtolli", + "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Tlahtolcuepqui}}|Tlahtolcuepqueh}}: $1", + "translate-searchprofile": "Tlahtolcuepaliztli", + "tux-languageselector": "Tictlahtolcuepaz ihuic", "tux-editor-cancel-button-label": "Moxitiniz", - "tux-editor-doc-editor-cancel": "Moxitiniz" + "tux-editor-doc-editor-cancel": "Moxitiniz", + "tux-empty-list-translated-action": "Tictlahtolcuepaz" } diff --git a/MLEB/Translate/i18n/core/nan.json b/MLEB/Translate/i18n/core/nan.json index c6c40a5a..7bb27287 100644 --- a/MLEB/Translate/i18n/core/nan.json +++ b/MLEB/Translate/i18n/core/nan.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ + "A-lú-mih", "Ianbu", "Luuva" ] }, - "translate-magic-module": "Module:", "translate-rcfilters-translations": "Hoan-e̍k", "translate-documentation-language": "訊息說明書" } diff --git a/MLEB/Translate/i18n/core/nb.json b/MLEB/Translate/i18n/core/nb.json index d757a70a..73d1991a 100644 --- a/MLEB/Translate/i18n/core/nb.json +++ b/MLEB/Translate/i18n/core/nb.json @@ -2,20 +2,20 @@ "@metadata": { "authors": [ "Byrial", + "Danmichaelo", "Harald Khan", + "Jon Harald Søby", "Jsoby", + "Kingu", "Laaknor", "Nghtwlkr", "Njardarlogar", - "Simny", - "Danmichaelo", - "Kingu", - "Jon Harald Søby" + "Simny" ] }, "translate": "Oversett", "translate-desc": "[[Special:Translate|Spesialside]] for oversettelse av MediaWiki og annet", - "translate-fuzzybot-desc": "Dette er en spesiell systemkonto som brukes av MediaWikis [https://www.mediawiki.org/wiki/Extension:Translate Translate-utvidelse] for å vedlikeholde oversettelser.\n\nKontoen er del av programvaren, og eies ikke av noen bruker.", + "translate-fuzzybot-desc": "Dette er en spesiell systemkonto som brukes av MediaWikis [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate Translate-utvidelse] for å vedlikeholde oversettelser.\n\nKontoen er del av programvaren, og eies ikke av noen bruker.", "translate-taskui-export-to-file": "Eksporter i opprinnelig format", "translate-taskui-export-as-po": "Eksporter for frakoblet oversettelse", "translate-taction-translate": "Oversett", @@ -64,46 +64,42 @@ "translate-export-invalid-format": "Oppgi et gyldig format.", "translate-export-not-supported": "Eksportering av oversettelser støttes ikke.", "translate-export-format-notsupported": "Det oppgitte eksporteringsformatet støttes ikke av meldingsgruppen.", - "translate-magic-pagename": "Utvidet MediaWiki-oversettelse", - "translate-magic-help": "Du kan oversette spesialsidealias, magiske ord og navneromnavn.\n\nSpesialsidealias og magiske ord kan ha flere oversettelser.\nOversettelsene er adskilt med komma (,).\nNavnerom kan kun ha én oversettelse.\n\nI navneromoversettelsene er $1 talk spesiell. $1 erstattes med nettstedsnavnet (for eksempel {{ns:project_talk}}).\nOm det ikke er mulig å få til et gyldig uttrykk på ditt språk uten å endre nettstedsnavnet, fortell oss det på [[Support]].\n\nDu må være i oversettergruppen for å lagre endringer.\nEndringer lagres ikke før du klikker på lagre-knappen nedenfor.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Hent", - "translate-magic-cm-export": "Eksporter", - "translate-magic-nothing-to-export": "Det er ingenting å eksportere.", - "translate-magic-cm-to-be": "Framtidig", - "translate-magic-cm-current": "Gjeldende", - "translate-magic-cm-original": "Opprinnelig", - "translate-magic-cm-comment": "Kommentar:", - "translate-magic-cm-save": "Lagre", - "translate-magic-cm-updatedusing": "Oppdatert ved å bruke [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Lagring mislyktes", - "translate-magic-special": "Spesialsidealias", - "translate-magic-words": "Magiske ord", - "translate-magic-namespace": "Navneromnavn", - "translate-magic-notsaved": "Endringen din ble ikke lagret!", - "translate-magic-errors": "Rett på følgende {{PLURAL:$1|feil}} i oversettelsen:", - "translate-magic-saved": "Endringene dine ble lagret.", - "translate-checks-parameters": "Følgende {{PLURAL:$2|parameter|parametre}} brukes ikke:\n$1", - "translate-checks-parameters-unknown": "Følgende {{PLURAL:$2|parameter er ukjent|parametre er ukjente}}:\n$1", + "translate-export-group-too-large": "Den valgte beskjedgruppa er for stor. Velg en beskjedgruppe som har færre enn $1 {{PLURAL:$1|beskjed|beskjeder}} eller kontakt en oversettelsesadministrator for råd.", + "translate-checks-parameters": "Følgende {{PLURAL:$2|parameter|parametre}} brukes ikke:\n$1", + "translate-checks-parameters-unknown": "Følgende {{PLURAL:$2|parameter er ukjent|parametre er ukjente}}:\n$1", "translate-checks-balance": "Det er et ujevnt antall {{PLURAL:$2|parenteser|paranteser}}:\n$1", "translate-checks-links": "Følgende {{PLURAL:$2|lenke er problematisk|$2 lenker er problematiske}}:\n$1", "translate-checks-links-missing": "Følgende {{PLURAL:$2|lenke|$2 lenker}} mangler:\n$1", - "translate-checks-xhtml": "Erstatt følgende {{PLURAL:$2|merke med det korrekte|merker med de korrekte}}:\n$1", "translate-checks-plural": "Definisjonen bruker {{PLURAL:}}, men oversettelsen gjør ikke det.", "translate-checks-plural-forms": "{{PLURAL:}} ble gitt {{PLURAL:$1|én form|$1 former}}, men kun {{PLURAL:$2|én form|$2 former}} støttes (utenom 0- og 1-former).", "translate-checks-plural-dupe": "{{PLURAL:}} har duplikatformer på slutten. {{PLURAL:$1|hus|hus}} bør skrives som {{PLURAL:$1|hus}}.", + "translate-checks-gettext-plural-missing": "Denne oversettelsen må ha {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "Denne beskjeden støtter ikke {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} godtar nøyaktig $1 {{PLURAL:$1|flertallsform|flertallsformer}}. For tiden er $2 {{PLURAL:$2|flertallsform|flertallsformer}} gitt.", + "translate-checks-smartformat-plural-missing": "Oversettelsen må ha flertall på variabelen $1.", + "translate-checks-smartformat-plural-unsupported": "Denne beskjeden støtter ikke flertall på variabelen $1.", + "translate-checks-smartformat-plural-count": "Galt antall flertallsformer i $3. Den må ha $1 {{PLURAL:$1|flertallsform|flertallsformer}}. For tiden er $2 {{PLURAL:$2|flertallsform|flertallsformer}} gitt.", + "translate-checks-unicode-plural-missing": "Oversettelsen må ha {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "Beskjeden støtter ikke {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "Flertallsformer bør defineres som $1. Denne oversettelsen inneholder $2.", "translate-checks-pagename": "Navnerom forandret fra definisjonen", "translate-checks-format": "Denne oversettelsen følger ikke definisjonen eller har ugyldig syntaks: $1", - "translate-checks-escape": "De følgende lekkasjene kan være tilfeldige: $1", + "translate-checks-escape": "Følgende {{PLURAL:$2|avbruddstegn}} kan være tilfeldige: $1. {{PLURAL:$4|Et gyldig|Gyldige}} avbruddstegn er $3.", "translate-checks-parametersnotequal": "Parametertelleren er {{PLURAL:$1|$1}}; skulle vært {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 er feilaktig.", "translate-checks-fudforum-syntax": "Bruk $1 istedet for $2 i dette prosjektet.", - "translate-pref-nonewsletter": "Ikke send meg nyhetsbrev på e-post", + "translate-checks-newline-missing-start": "$1 {{PLURAL:$1|linjeskift}} mangler i begynnelsen av oversettelsen.", + "translate-checks-newline-missing-end": "$1 {{PLURAL:$1|linjeskift}} mangler i slutten av oversettelsen.", + "translate-checks-newline-extra-start": "Det er $1 {{PLURAL:$1|linjeskift}} for mye i begynnelsen av oversettelsen.", + "translate-checks-newline-extra-end": "Det er $1 {{PLURAL:$1|linjeskift}} for mye i slutten av oversettelsen.", + "translate-checks-value-not-present": "Oversettelsen må være lik {{PLURAL:$1|1=|én av følgende verdier:}} $1.", + "translate-checks-replacement": "Bruk $2 i stedet for $1.", "translate-pref-editassistlang": "Hjelpespråk:", "prefs-translate": "Oversettelsesalternativ", "translate-pref-editassistlang-help": "Kommaseparert liste over språkkoder.\nOversettelsen av en melding i disse språkene blir vist mens du oversetter.\nStandardlisten over språk avhenger av språket ditt.", "translate-pref-editassistlang-bad": "Ugyldig språkkode i listen:\n$1.", "right-translate": "Rediger med oversettingsgrensesnittet", + "action-translate": "redigere med oversettelsesgrensesnittet", "right-translate-manage": "Administrer meldingsgrupper", "action-translate-manage": "håndtere meldingsgrupper", "right-translate-import": "Importer frakoblede oversettelser", @@ -181,6 +177,7 @@ "translate-untranslated": "Uoversatte", "translate-percentage-complete": "Ferdigstilt", "translate-percentage-fuzzy": "Utdatert", + "translate-percentage-proofread": "Korrekturlest", "translate-languagestats-overall": "Alle meldingsgrupper sammen", "translate-ls-submit": "Vis statistikk", "translate-ls-column-group": "Meldingsgruppe", @@ -197,21 +194,36 @@ "supportedlanguages": "Støttede språk", "supportedlanguages-summary": "Denne siden viser en liste over alle språk som støttes av {{SITENAME}}, sammen med navnene på oversetterne som jobber med det språket. Jo større en oversetters brukernavn er, jo flere bidrag har oversetteren. Fargen på understrekingen er en indikator på hvor lenge oversetteren har vært aktiv her.", "supportedlanguages-colorlegend": "Fargeforklaring: Siste oversettelse for $1 dager siden.", + "supportedlanguages-portallink": "[$1] $2 – $3", + "supportedlanguages-sqlite-error": "SQLite støttes ikke", "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|Oversetter}}|Oversettere}}: $1", "supportedlanguages-recenttranslations": "siste oversettelser", "supportedlanguages-count": "$1 {{PLURAL:$1|språk}} totalt.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|redigering|redigeringer}} – siste redigering for $3 {{PLURAL:$3|dag|dager}} siden", + "translate-supportedlanguages-cached": "Denne informasjon ble mellomlagret for $1 siden.", "abusefilter-edit-builder-vars-translate-source-text": "Kildeteksten til oversettelsesenheten", - "translate-save": "Lagre ($1)", + "abusefilter-edit-builder-vars-translate-target-language": "Målspråk for oversettelse", + "translate-save": "Publiser ($1)", "translate-jssti-add": "Legg til i listen", "managemessagegroups": "Meldingsgruppehåndtering", "translate-smg-notallowed": "Du har ikke tillatelse til å utføre dette.", "translate-smg-nochanges": "Det er ingen endringer å bearbeide.", "translate-smg-submit": "Lagre endringer for prosessering", "translate-smg-submitted": "Meldingdefinisjoner har blitt oppdatert. Endringene prosesseres i bakgrunnen.", + "translate-smg-submitted-with-failure": "Oppdatering av beskjeddefinisjonene feilet for {{PLURAL:$1|denne gruppa|følgende grupper}}: – $2. $3", + "translate-smg-submitted-others-processing": "Beskjeddefinisjoner for andre grupper prosesseres i bakgrunnen.", "translate-smg-more": "Det blir flere endringer å prosessere etter at disse endringene er levert.", "translate-smg-left": "Meldingsinnhold i wikien", "translate-smg-right": "Kommende endringer", + "translate-smg-rename-select": "Velg", + "translate-smg-rename-cancel": "Avbryt", + "translate-smg-rename-search": "Søk etter matchende beskjed …", + "translate-smg-rename-select-err": "Velg en beskjed som skal omdøpes", + "translate-smg-rename-no-msg": "Ingen beskjeder funnet.", + "translate-smg-rename-new": "Legg til som ny …", + "translate-smg-rename-rename": "Legg til som omdøping av …", + "translate-smg-rename-dialog-title": "Velg matchende omdøping for $1", + "translate-smg-changeset-modified": "Endringssettet har blitt endret av en annen bruker eller prosess. Endringene dine kan ikke publiseres siden det kan overskrive deres endringer. Oppdater siden for å se de siste endringene.", "translate-manage-import-diff": "Melding $1 | Handlinger: $2", "translate-manage-import-new": "Ny melding $1", "translate-manage-import-deleted": "Slettet melding $1", @@ -219,11 +231,15 @@ "translate-manage-action-conflict": "Importer og merk for revisjon («fuzzy»)", "translate-manage-action-ignore": "Ignorer", "translate-manage-action-fuzzy": "Importer og merk for revisjon («fuzzy»)", + "translate-manage-action-rename-fuzzy": "Døp om og merk oversettelser som foreldet", + "translate-manage-action-rename": "Døp om", + "translate-manage-action-ignore-change": "Ignorer oversettelsesendring", "translate-manage-nochanges": "Det er ingen endringer i meldingsdefinisjonene for denne gruppen.", "translate-manage-nochanges-other": "Det var ingen forandringer for dette språket.\nBruk lenken nedenfor for å returnere til gruppedataljene.", "translate-manage-inconsistent": "Fant inkonsistens i forespørselen.\nVennligst sjekk om det har vært endringer og prøv igjen.\nDetaljer: $1.", "translate-manage-toolong": "Den maksimale behandlingstiden på {{PLURAL:$1|ett sekund|$1 sekund}} ble overskredet.\nVennligst send skjemaet på nytt for å fortsette behandlingen.", "translate-manage-import-summary": "Importerer en ny versjon fra en ekstern kilde", + "translate-manage-import-rename-summary": "Døpt om i ekstern kilde", "translate-manage-conflict-summary": "Importerer en ny versjon fra en ekstern kilde.\nVennligst sjekk.", "translate-manage-submit": "Utfør", "translate-manage-intro-other": "Nedenfor er en liste over endringer i oversettelsen til språket $1.\nGå gjennom endringene og velg hva du vil gjøre med hver oppdatering.\nOm du velger å ignorere endringene vil denne handlingen kun være midlertidig.", @@ -238,15 +254,14 @@ "translate-import-err-no-such-file": "Filen $1 finnes ikke eller har ikke blitt lastet opp lokalt.", "translate-import-err-stale-group": "Meldingsgruppen som denne filen tilhører finnes ikke.", "translate-import-err-no-headers": "Filen er ikke en velformatert Gettext-fil i Translate-utvidelsesformatet:\nKunne ikke fastslå gruppe og språk fra filoverskriftene.", - "translate-import-err-warnings": "Filen er ikke velformatert.\nKontroller at editoren ikke fjerner msgctxt-feltene.\nDetaljer: $1", "translate-js-summary": "Forklaring:", - "translate-js-save": "Lagre", - "translate-js-next": "Lagre og åpne neste", + "translate-js-save": "Publiser", + "translate-js-next": "Publiser og åpne neste", "translate-js-skip": "Hopp over til neste", "translate-js-history": "Oversettelseshistorikk", "translate-js-support": "Still spørsmål", "translate-js-support-title": "Be om hjelp hvis det ikke er nok informasjon til å oversette denne meldingen korrekt.", - "translate-js-support-unsaved-warning": "Du har ulagrede oversettelser.", + "translate-js-support-unsaved-warning": "Du har upubliserte oversettelser.", "translate-gs-pos": "Pos.", "translate-gs-code": "Kode", "translate-gs-continent": "Kontinent", @@ -299,19 +314,19 @@ "tux-status-fuzzy": "Utdatert", "tux-status-proofread": "Korrekturlest", "tux-status-translated": "Oversatt", - "tux-status-saving": "Lagrer...", - "tux-status-unsaved": "Ikke lagret", + "tux-status-saving": "Publiserer …", + "tux-status-unsaved": "Upublisert", "tux-save-unknown-error": "Ukjent feil oppsto.", "tux-editor-placeholder": "Din oversettelse", "tux-editor-editsummary-placeholder": "Valgfri forklaring", "tux-editor-paste-original-button-label": "Lim inn kildetekst", "tux-editor-discard-changes-button-label": "Se bort i fra endringer", - "tux-editor-save-button-label": "Lagre oversettelse", + "tux-editor-save-button-label": "Publiser oversettelse", "tux-editor-skip-button-label": "Hopp over til neste", "tux-editor-cancel-button-label": "Avbryt", "tux-editor-confirm-button-label": "Bekreft oversettelse", "tux-editor-proofread-button-label": "Merk som gjennomgått", - "tux-editor-shortcut-info": "Trykk på «$1» forå lagre, «$2» for å hoppe videre til neste beskjed, «$4» for å oppgi en forklaring eller «$3» for andre snarveier.", + "tux-editor-shortcut-info": "Trykk på «$1» for å lagre og gå videre til neste beskjed, «$2» for å hoppe over, «$4» for å angi en forklaring eller hold «$3» for andre snarveier.", "tux-editor-edit-desc": "Rediger dokumentasjon", "tux-editor-add-desc": "Legg til dokumentasjon", "tux-editor-suggestions-title": "Forslag", @@ -319,9 +334,9 @@ "tux-editor-need-more-help": "Trenger du mer hjelp?", "tux-editor-ask-help": "Spør etter mer informasjon", "tux-editor-tm-match": "$1% samsvar", - "tux-warnings-more": "{{PLURAL:$1|$1 flere}}", - "tux-warnings-hide": "skjul", - "tux-editor-save-failed": "Lagring av oversettelsen feilet: $1", + "tux-notices-more": "{{PLURAL:$1|$1 flere}}", + "tux-notices-hide": "skjul", + "tux-editor-save-failed": "Publisering av oversettelsen feilet: $1", "tux-editor-n-uses": "brukt $1 {{PLURAL:$1|gang|ganger}}", "tux-editor-message-desc-more": "Vis mer", "tux-editor-message-desc-less": "Vis mindre", @@ -333,10 +348,10 @@ "tux-proofread-action-tooltip": "Merk som godkjent", "tux-proofread-edit-label": "Rediger", "tux-editor-page-mode": "Side", - "tux-editor-outdated-warning": "Denne oversettelsen trenger kanskje å bli oppdatert.", - "tux-editor-outdated-warning-diff-link": "Vis forskjeller", + "tux-editor-outdated-notice": "Denne oversettelsen trenger kanskje å bli oppdatert.", + "tux-editor-outdated-notice-diff-link": "Vis forskjeller", "tux-editor-doc-editor-placeholder": "Meldingsdokumentasjon", - "tux-editor-doc-editor-save": "Lagre dokumentasjon", + "tux-editor-doc-editor-save": "Publiser dokumentasjon", "tux-editor-doc-editor-cancel": "Avbryt", "tux-messagetable-more-messages": "$1 flere {{PLURAL:$1|melding|meldinger}}", "tux-messagetable-loading-messages": "Laster {{PLURAL:$1|melding|meldinger}}...", @@ -372,12 +387,13 @@ "tux-editor-message-tools-translations": "Alle oversettelser", "tux-editor-message-tools-linktothis": "Lenke til denne beskjeden", "tux-editor-loading": "Laster...", + "tux-editor-loading-failed": "Kunne ikke laste oversettelseshjelpemidler: $1", "translate-search-more-languages-info": "$1 flere {{PLURAL:$1|språk}}", "translate-statsbar-tooltip": "$1% oversatt, $2% korrekturlest", "translate-statsbar-tooltip-with-fuzzy": "$1% oversatt, $2% korrekturlest, $3% utdatert", "translate-search-more-groups-info": "$1 {{PLURAL:$1|gruppe|grupper}} til", - "translate-ulsdep-title": "Konfigrasjonsfeil", - "translate-ulsdep-body": "Oversettelsesutvidelsen er avhengig av [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector utvidelsen Universal Language Selector].", + "translate-syntax-error": "Oversettelsen har syntaksfeil", "tux-session-expired": "Du er ikke lenger logget inn. Logg inn i en annen fane, eller kopier ulagrede oversettelser, logg inn og kom tilbake til denne siden og lim inn oversettelsen(e).", - "tux-nojs": "Dette verktøyet virker ikke uten JavaScript. JavaScript er slått av eller virket ikke, eller nettleseren din støttes ikke." + "tux-nojs": "Dette verktøyet virker ikke uten JavaScript. JavaScript er slått av eller virket ikke, eller nettleseren din støttes ikke.", + "specialpages-group-translation": "Oversettelse" } diff --git a/MLEB/Translate/i18n/core/nds-nl.json b/MLEB/Translate/i18n/core/nds-nl.json index 064c645a..e442b4fb 100644 --- a/MLEB/Translate/i18n/core/nds-nl.json +++ b/MLEB/Translate/i18n/core/nds-nl.json @@ -4,17 +4,45 @@ "Servien" ] }, - "translate": "Vertalen", - "translate-taction-proofread": "Naokieken", - "translate-taction-lstats": "Taalstaotistieken", - "translate-magic-namespace": "Naamruumtebenamingen", - "translate-magic-notsaved": "Joew bewarking is niet op-esleugen!", - "translate-magic-saved": "Joew wiezigingen bin op-esleugen.", + "translate": "Oaversetten", + "translate-taction-proofread": "Nåkyken", + "translate-taction-lstats": "Språkståtistiken", + "translate-optional": "(optioneel)", + "translate-rcfilters-translations-only-label": "Oaversettingen", "translate-rc-translation-filter-no": "Niks doon", - "translate-statsf-scale-months": "Maonden", - "translate-statsf-submit": "Naokieken", - "translate-translations-fieldset-title": "Tiejige", - "translate-language-code": "Taalkode", - "translate-language-code-field-name": "Taalkode:", - "translate-documentation-language": "Berichtbeschrieving" + "translate-statsf-scale-months": "Månden", + "translate-statsf-submit": "Nåkyken", + "translate-translations-fieldset-title": "Bericht", + "translate-langstats-expand": "uutklappen", + "translate-langstats-expandall": "alles uutklappen", + "translate-language-code": "Språkkode", + "translate-language-code-field-name": "Språkkode:", + "translate-language": "Språke", + "translate-total": "Berichten", + "translate-untranslated": "Neet oaversetted", + "translate-percentage-complete": "Afhandeld", + "translate-percentage-fuzzy": "Verolderd", + "translate-percentage-proofread": "Nåkeaken", + "translate-mgs-fieldset": "Låt instellingen seen", + "translate-mgs-column-language": "Språke", + "translate-js-skip": "Oaverslån en volgende", + "translate-js-support": "Vråge stellen", + "translate-documentation-language": "Berichtbeskryving", + "translate-searchprofile": "Oaversettingen", + "translate-searchprofile-note": "Meyr söökoptys binnet beskikbår mid de [$1 oaversettingssöökfunkty].", + "tux-tab-untranslated": "Neet oaversetted", + "tux-tab-outdated": "Verolderd", + "tux-tab-translated": "Oaversetted", + "tux-status-fuzzy": "Verolderd", + "tux-status-translated": "Oaversetted", + "tux-editor-editsummary-placeholder": "Optionele samenvatting", + "tux-editor-skip-button-label": "Oaverslån en volgende", + "tux-editor-confirm-button-label": "Oaversetting bevästigen", + "tux-editor-proofreading-mode": "Nåkyken", + "tux-editor-translate-mode": "Lyste", + "tux-editor-page-mode": "Syde", + "tux-editor-outdated-notice": "Disse oaversetting müt möägelik bywarked wörden.", + "tux-editor-outdated-notice-diff-link": "Verskillen bekyken", + "tux-message-filter-placeholder": "Lyste filteren", + "tux-editor-expand-tooltip": "Uutklappen" } diff --git a/MLEB/Translate/i18n/core/nds.json b/MLEB/Translate/i18n/core/nds.json index 60e5e164..011b8a99 100644 --- a/MLEB/Translate/i18n/core/nds.json +++ b/MLEB/Translate/i18n/core/nds.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Joachim Mos", - "Slomox", - "Servien" + "Servien", + "Slomox" ] }, "translate": "Översetten", @@ -21,12 +21,8 @@ "translate-edit-information": "Informatschoon to Nochricht ($1)", "translate-edit-in-other-languages": "Nochricht in annere Spraken", "translate-edit-tmmatch-source": "Översettenborntext: $1", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Kommentar:", - "translate-magic-cm-save": "Spiekern", - "translate-magic-special": "Spezialsieden-Alternativnaams", "translate-language-code": "Spraak-Code", "translate-language-code-field-name": "Spraak-Code:", - "tux-warnings-hide": "versteken", + "tux-notices-hide": "versteken", "tux-proofread-edit-label": "Ännern" } diff --git a/MLEB/Translate/i18n/core/ne.json b/MLEB/Translate/i18n/core/ne.json index c918a3c9..b924285a 100644 --- a/MLEB/Translate/i18n/core/ne.json +++ b/MLEB/Translate/i18n/core/ne.json @@ -3,23 +3,29 @@ "authors": [ "Bhawani Gautam", "Bhawani Gautam Rhk", - "RajeshPandey", - "सरोज कुमार ढकाल", "Krish Dulal", - "बिप्लब आनन्द", "NehalDaveND", - "राम प्रसाद जोशी" + "Nirajan pant", + "RajeshPandey", + "पर्वत सुबेदी", + "बिप्लब आनन्द", + "राम प्रसाद जोशी", + "सरोज कुमार ढकाल", + "हिमाल सुबेदी" ] }, "translate": "अनुवाद गर्ने", + "translate-extensionname": "अनुवाद गर्नुहोस्", "translate-desc": "मिडियाविकी तथा अन्यको अनुवादको निम्ति [[Special:Translate|विशेष पृष्ठ]]", "translate-taction-translate": "अनुवाद गर्ने", "translate-taction-proofread": "समीक्षा", "translate-taction-lstats": "भाषा तथ्यांक", + "translate-taction-mstats": "सन्देश समूह तथ्याङ्कहरू", "translate-taction-export": "निर्यात", "translate-page-no-such-language": "निर्दिष्ट भाषा अमान्य थियो", "translate-page-no-such-group": "निर्दिष्ट समूह अमान्य थियो", "translate-page-disabled": "यस भाषामा यो समूहको अनुवाद कार्य निस्क्रिय गरिएको छ।\nकारण:\n\n$1", + "translate-language-disabled": "यस भाषामा अनुवादन अक्षम गरिएको छ।", "translate-page-settings-legend": "सेटिंग्स", "translate-page-group": "समूह", "translate-page-language": "भाषा", @@ -30,9 +36,11 @@ "translate-page-showing": "$3 मध्येका $1 देखि $2 सम्म सन्देशहरू देखाइँदै", "translate-page-showing-all": "$1 {{PLURAL:$1|सन्देश|सन्देशहरू}} देखाइँदै।", "translate-page-showing-none": "देखाउनु पर्ने सन्देश छैन।", + "translate-page-paging-links": "[ $1 ] [ $2 ]", "translate-next": "अर्को पृष्ठ", "translate-prev": "अघिल्लो पृष्ठ", "translate-page-description-legend": "समूह बारेको जानकारी", + "translate-page-description-hasoptional-open": "वैकल्पिक सन्देशहरू देखाउनुहोस्।", "translate-page-edit": "सम्पादन गर्ने", "translate-optional": "(वैकल्पिक)", "translate-ignored": "(अनदेखा गरिएको)", @@ -40,33 +48,35 @@ "translate-edit-definition": "सन्देश परिभाषा", "translate-edit-translation": "अनुवाद", "translate-edit-contribute": "योगदान गर्ने", - "translate-edit-no-information": "''यो सन्देशको दस्तावेजीकरण (documentation) छैन''\n''यदि तपाईं यो सन्देश कहाँ अथवा कसरी प्रयोग गरिन्छ भन्ने कुरा जान्नु हुन्छ भने तपाईंले यसको दस्तावेजीकरण थप गरी अरु अनुवादकहरूलाई सहयोग दिन सक्नुहुन्छ।''", + "translate-edit-no-information": "''यो सन्देशको कुनैपनि दस्तावेजीकरण छैन''\n''यदि तपाई यो सन्देश कहाँ अथवा कसरी प्रयोग गरिन्छ भन्ने कुरा जान्नु हुन्छ भने तपाईले यसको दस्तावेजीकरण थप गरी अरू अनुवादकहरूलाई सहयोग गर्न सक्नुहुन्छ।''", "translate-edit-information": "($1) सन्देशको बारेमा जानकारी", "translate-edit-in-other-languages": "सन्देश अरु भाषाहरूमा", "translate-edit-warnings": "चेतावनी अपूर्ण अनुवादको बारेमा", "translate-edit-tmmatch": "$1% मेल", "translate-use-suggestion": "यस सुझाउलाई अनुवादको कोठामा हाल्नुहोस् । यसले वर्तमान सामग्री(शब्दहरू)को स्थान लिनेछ।", - "translate-magic-pagename": "विस्तारित मिडियाविकी अनुवाद", - "translate-magic-submit": "हेर्ने", - "translate-magic-cm-export": "निर्यात गर्ने", - "translate-magic-cm-current": "वर्तमान", - "translate-magic-cm-original": "मूल", - "translate-magic-cm-comment": "टिप्पणी:", - "translate-magic-cm-save": "संग्रह गर्ने", - "translate-magic-cm-savefailed": "संग्रह विफल भयो", - "translate-magic-words": "जादुई शब्दहरू", - "translate-magic-notsaved": "तपाईंको सम्पादन संग्रह गरिएको थिएन!", - "translate-magic-saved": "तपाईंका परिवर्तनहरू सफलता पूर्वक संग्रह भए।", - "translate-checks-parameters-unknown": "निम्न {{PLURAL:$2|पैरामीटर अज्ञात हो|पैरामीटरहरु अज्ञात हुन्}} :\n$1", + "translate-edit-askpermission": "अनुमति लिनुहाेस्", + "exporttranslations": "अनुवाद आयात गर्नुहाेस्", + "translate-export-form-format": "ढाँचा", + "translate-export-invalid-format": "कृपया एक मान्य ढाँचा निर्दिष्ट गर्नुहोस्।", + "translate-export-not-supported": "अनुवाद निर्यात समर्थित छैन।", + "translate-export-format-notsupported": "निर्दिष्ट निर्यात ढाँचा सन्देश समूहद्वारा समर्थित छैन।", + "translate-checks-parameters-unknown": "निम्न {{PLURAL:$2|पैरामीटर अज्ञात हो|पैरामीटरहरु अज्ञात हुन्}} :\n$1", + "translate-pref-editassistlang": "सहयाेगी भाषाहरू:", + "right-translate-messagereview": "अनुवादहरूलाई समीक्षा गर्नुहाेस्", + "action-translate-messagereview": "अनुवादहरूलाई समीक्षा गर्नुहाेस्", + "translate-rcfilters-translations": "अनुवादहरू", + "translate-rcfilters-translations-only-label": "अनुवादहरू", "translationstats": "अनुवाद तथ्यांक", "translate-stats-edits": "सम्पादनहरू", "translate-stats-users": "अनुवादकहरू", "translate-stats-registrations": "पंजीकरण", + "translate-stats-reviews": "समीक्षा", + "translate-stats-reviewers": "समीक्षकहरू", "translate-statsf-options": "ग्राफ विकल्पहरू", "translate-statsf-width": "चौड़ाई पिक्सलमा:", "translate-statsf-height": "उचाई पिक्सलमा:", "translate-statsf-days": "समयावधि दिनमा:", - "translate-statsf-start": "समयावधि दिनमा:", + "translate-statsf-start": "सुरु गरेको मिति:", "translate-statsf-scale": "बीजमयता:", "translate-statsf-scale-months": "महिना", "translate-statsf-scale-weeks": "हप्ता", @@ -76,6 +86,7 @@ "translate-statsf-count-edits": "सम्पादन संख्या", "translate-statsf-count-users": "सक्रिय अनुवादकहरू", "translate-statsf-count-registrations": "नयाँ प्रयोगकर्ताहरू", + "translate-statsf-count-reviewers": "समीक्षकहरू", "translate-statsf-submit": "पूर्वावलोकन", "translate-tag-page-desc": "विकि पृष्ठ [[$2|$1]]को अनुवाद।", "translate-sidebar-alltrans": "अरु भाषामा", @@ -104,42 +115,108 @@ "translate-percentage-complete": "सकिएका", "translate-percentage-fuzzy": "पुराना (काम नलाग्ने)", "translate-percentage-proofread": "समीक्षा गरियो", + "translate-ls-submit": "तथ्याङ्कहरू देखाउनुहाेस्", "translate-ls-column-group": "सन्देश समूह", + "translate-mgs-pagename": "सन्देश समूह तथ्याङ्कहरू", + "translate-mgs-fieldset": "प्राथमिकताहरू प्रदर्शन गर्नुहाेस्", "translate-mgs-group": "सन्देश समूहः", + "translate-mgs-nocomplete": "अनुवाद पूर्ण भएका भाषाहरू प्रदर्शन नगर्नुहोस्", + "translate-mgs-noempty": "कुनैपनि अनुवाद नभएका भाषाहरू प्रदर्शन नगर्नुहोस्", + "translate-mgs-submit": "तथ्याङ्कहरू देखाउनुहाेस्", "translate-mgs-column-language": "भाषा", + "supportedlanguages": "समर्थित भाषाहरू", + "supportedlanguages-portallink": "[$1] $2 - $3", + "supportedlanguages-portallink-nocldr": "[$1] $2", + "supportedlanguages-translators": "{{PLURAL:$2|{{GENDER:$3|अनुवादक}}|अनुवादकहरू}}: $1", "supportedlanguages-recenttranslations": "भर्खरैका अनुवादहरू", + "translate-jssti-add": "सूचीमा थप्नुहाेस्", + "translate-smg-rename-select": "चयन गर्नुहोस्", + "translate-smg-rename-cancel": "रद्द गर्नुहोस्", + "translate-smg-rename-no-msg": "कुनैपनि सन्देश भेटिएन", + "translate-manage-import-new": "नयाँ सन्देश $1", "translate-manage-action-import": "आयात गर्नु", "translate-manage-action-ignore": "उपेक्षा", + "translate-manage-action-rename": "नाम फेर्नुहोस्", "translate-js-summary": "सारांश :", - "translate-js-save": "संग्रह गर्ने", + "translate-js-save": "प्रकाशन", + "translate-js-history": "अनुवाद इतिहास", + "translate-js-support": "प्रश्न सोध्नुहोस्", + "translate-js-support-unsaved-warning": "तपाईँकोमा अप्रकाशित अनुवादहरू छन्।", "translate-gs-code": "कोड", + "translate-gs-continent": "महादेश", "translate-gs-speakers": "वक्ताहरु", + "translate-gs-score": "प्राप्ताङ्क", + "translate-gs-multiple": "धेरै", + "translate-gs-count": "गणना", + "translate-gs-total": "जम्मा", "translate-documentation-language": "सन्देश दस्तावेज", "translate-searchprofile": "अनुवाद", "translate-workflow-set-doing": "सेटिङ्हरु...", + "translate-stats-workflow": "स्थिति", + "translate-dynagroup-additions-label": "हालैका थपहरू", + "translate-msggroupselector-projects": "सन्देश समूह", + "translate-msggroupselector-search-placeholder": "समूहहरू खाेज्नुहाेस्", "translate-msggroupselector-search-all": "सबै", + "translate-msggroupselector-search-recent": "हालैका", + "translate-msggroupselector-view-subprojects": "$1 {{PLURAL:$1|उपसमुह|उपसमूहहरू}}", + "tux-languageselector": "यसमा अनुवाद गर्नुहाेस्", "tux-tab-all": "सबै", + "tux-tab-untranslated": "अनुवाद नगरिएका", "tux-tab-outdated": "पुराना", "tux-tab-translated": "अनुवादित", + "tux-tab-unproofread": "समीक्षा नगरिएकाे", "tux-edit": "सम्पादन", "tux-status-optional": "वैकल्पिक", "tux-status-fuzzy": "पुराना", "tux-status-proofread": "समक्षित", "tux-status-translated": "अनुवादित", - "tux-status-saving": "संग्रह गर्ने...", - "tux-status-unsaved": "संग्रह गरिसकिएको छैन", + "tux-status-saving": "प्रकाशन गर्दै...", + "tux-status-unsaved": "अप्रकाशित", + "tux-save-unknown-error": "एउटा अज्ञात त्रुटि भयो।", "tux-editor-placeholder": "तपाईंको अनुवाद", + "tux-editor-editsummary-placeholder": "एच्छिक सारंश", + "tux-editor-paste-original-button-label": "स्राेत पाठ हाल्नुहाेस्", + "tux-editor-discard-changes-button-label": "परिवर्तन रद्द गर्नुहाेस्?", + "tux-editor-save-button-label": "अनुवाद प्रकाशन गर्नुहोस्", + "tux-editor-skip-button-label": "अर्काेमा जानुहाेस्", "tux-editor-cancel-button-label": "रद्द गर्ने", - "tux-warnings-hide": "लुकाउनुहोस्", + "tux-editor-confirm-button-label": "अनुवाद निश्चित गर्नुहाेस्", + "tux-editor-proofread-button-label": "समीक्षा गरिएकाे भनी चिन्ह लगाउनुहाेस्", + "tux-editor-edit-desc": "दस्तावेजीकरण सम्पादन गर्नुहाेस्", + "tux-editor-add-desc": "दस्तावेजीकरण थप्नुहाेस्", + "tux-editor-suggestions-title": "सुझावहरू", + "tux-editor-in-other-languages": "अरू भाषाहरूमा", + "tux-editor-need-more-help": "अझै धेरै सहयाेग चाहियाे?", + "tux-editor-ask-help": "थप जानकारीका लागि साेध्नुहाेस्", + "tux-editor-tm-match": "$1% मेल", + "tux-notices-hide": "लुकाउनुहोस्", + "tux-editor-n-uses": "$1 {{PLURAL:$1|पल्ट|पटक}} प्रयाेग", + "tux-editor-message-desc-more": "धेरै हेर्नुहाेस्", + "tux-editor-message-desc-less": "थोरै हेर्नुहोस्", + "tux-editor-clear-translated": "अनुवाद भएकाहरूलाई लुकाउनुहाेस्", "tux-editor-proofreading-mode": "समीक्षा", "tux-editor-translate-mode": "सूचीहरू", + "tux-editor-proofreading-hide-own-translations": "तपाईकाे अनुवादलाई लुकाउनुहाेस्", "tux-proofread-edit-label": "सम्पादन", "tux-editor-page-mode": "पृष्ठ", + "tux-editor-outdated-notice-diff-link": "भिन्नता देखाउनुहाेस्", "tux-editor-doc-editor-cancel": "रद्द गर्नु", + "tux-message-filter-placeholder": "सूची छनाेट गर्नुहाेस्", + "tux-message-filter-advanced-button": "उन्नत खोजी", "tux-empty-list-translated-action": "अनुवाद गर्नु", + "tux-empty-show-optional-messages": "वैकल्पिक सन्देशहरू देखाउनुहोस्", + "tux-empty-nothing-to-proofread": "समीक्षा गर्नका लागि केही छैन", + "tux-empty-nothing-new-to-proofread": "समीक्षा गर्नका लागि नयाँ केही छैन", + "tux-empty-list-other": "अनुवाद गर्नलाई केही छैन", + "tux-empty-list-other-action": "अनुवादहरूलाई समीक्षा गर्नुहाेस्", + "tux-empty-list-other-link": "सबै सन्देशहरू देखाउनुहाेस्", "tux-editor-close-tooltip": "रद्द गर्नु", "tux-editor-expand-tooltip": "फालाउ", "tux-editor-collapse-tooltip": "खुम्च्याउन", + "tux-editor-message-tools-show-editor": "विकिपाठमा देखाउनुहाेस्", "tux-editor-message-tools-history": "इतिहास", - "tux-editor-message-tools-delete": "मेटाउन" + "tux-editor-message-tools-delete": "मेटाउन", + "tux-editor-message-tools-translations": "सबै अनुवादहरू", + "tux-editor-loading": "खुल्दै छ…", + "specialpages-group-translation": "अनुवाद" } diff --git a/MLEB/Translate/i18n/core/nl.json b/MLEB/Translate/i18n/core/nl.json index e4cdfc42..e0905977 100644 --- a/MLEB/Translate/i18n/core/nl.json +++ b/MLEB/Translate/i18n/core/nl.json @@ -1,25 +1,29 @@ { "@metadata": { "authors": [ + "Dutchy45", + "Elroy", "HanV", "Kippenvlees1", "Konovalov", + "Mainframe98", + "Mar(c)", "McDutchie", + "PonkoSasuke", "SPQRobin", + "Servien", "Siebrand", + "Sjoerddebruin", + "Southparkfan", "Tjcool007", "Tvdm", "User555", - "Wiki13", - "Mar(c)", - "Southparkfan", - "Sjoerddebruin", - "Mainframe98", - "Elroy" + "Wiki13" ] }, "translate": "Vertalen", "translate-desc": "[[Special:Translate|Speciale pagina]] voor het vertalen van MediaWiki en meer", + "translate-fuzzybot-desc": "Dit is een speciaal systeemaccount gebruikt door de MediaWiki [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate Translate uitbreiding] om vertalingen te beheren.\nDit account is onderdeel van de MediaWiki software en is niet in gebruik door een gebruiker.", "translate-taskui-export-to-file": "Exporteren in de oorspronkelijke indeling", "translate-taskui-export-as-po": "Exporteren voor offline vertaling", "translate-taction-translate": "Vertalen", @@ -65,48 +69,37 @@ "translate-edit-askpermission": "Vertaalrechten aanvragen", "exporttranslations": "Vertalingen exporteren", "translate-export-form-format": "Indeling", + "translate-export-invalid-format": "Voer een geldig formaat in.", "translate-export-not-supported": "Het exporteren van vertalingen wordt niet ondersteund.", "translate-export-format-notsupported": "De opgegeven exporteerindeling wordt niet ondersteund door de berichtengroep.", - "translate-magic-pagename": "Uitgebreide MediaWiki-vertaling", - "translate-magic-help": "U kunt aliassen voor speciale pagina's, magische woorden en naamruimtebenamingen vertalen.\n\nAliassen voor speciale pagina's en magische woorden kunnen meerdere vertalingen hebben.\nScheid vertalingen met een komma (,).\nNaamruimtebenamingen kunnen slechts één vertaling hebben.\n\nHet vertalen van naamruimte voor projectoverleg $1 talk kan lastig zijn.\n$1 wordt vervangen door de projectsitenaam (bijvoorbeeld {{ns:project_talk}}).\nAls het in uw taal niet mogelijk is een geldige uitdrukking te vormen zonder de sitenaam te wijzigen, neem dan contact met ons op via [[Support]].\n\nU moet vertaler zijn om wijzigingen te kunnen opslaan.\nWijzigingen worden niet bewaard totdat u hieronder op \"Pagina opslaan\" hebt geklikt.", - "translate-magic-module": "Module:", - "translate-magic-submit": "Ophalen", - "translate-magic-cm-export": "Exporteren", - "translate-magic-nothing-to-export": "Er is niets om te exporteren.", - "translate-magic-cm-to-be": "Toekomstig", - "translate-magic-cm-current": "Huidig", - "translate-magic-cm-original": "Brontekst", - "translate-magic-cm-comment": "Samenvatting:", - "translate-magic-cm-save": "Opslaan", - "translate-magic-cm-updatedusing": "Bijgewerkt via [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Opslaan mislukt", - "translate-magic-special": "Aliassen voor speciale pagina's", - "translate-magic-words": "Magische woorden", - "translate-magic-namespace": "Naamruimtebenamingen", - "translate-magic-notsaved": "Uw bewerking is niet opgeslagen!", - "translate-magic-errors": "Los de volgende {{PLURAL:$1|fout|fouten}} op in de vertalingen:", - "translate-magic-saved": "Uw wijzigingen zijn opgeslagen.", - "translate-checks-parameters": "De volgende {{PLURAL:$2|parameter wordt|parameters worden}} niet gebruikt:\n$1", - "translate-checks-parameters-unknown": "De volgende {{PLURAL:$2|parameter is|parameters zijn}} onbekend:\n$1", + "translate-export-group-too-large": "De gekozen berichtengroep is te groot. Kies een berichtengroep die minder dan $1 {{PLURAL:$1|bericht|berichten}} heeft of neem contact op met een vertalingsbeheerder voor advies.", + "translate-checks-parameters": "De volgende {{PLURAL:$2|parameter wordt|parameters worden}} niet gebruikt:\n$1", + "translate-checks-parameters-unknown": "De volgende {{PLURAL:$2|parameter is|parameters zijn}} onbekend:\n$1", "translate-checks-balance": "Er wordt een oneven {{PLURAL:$2|aantal haakjes|aantal haakjes}} gebruikt:\n$1", "translate-checks-links": "De volgende {{PLURAL:$2|koppeling is|$2 koppelingen zijn}} problematisch:\n$1", "translate-checks-links-missing": "De volgende {{PLURAL:$2|koppeling ontbreekt|$2 koppelingen ontbreken}}:\n$1", - "translate-checks-xhtml": "Vervang {{PLURAL:$2|het volgende label|de volgende labels}} door de juiste:\n$1", "translate-checks-plural": "De definitie bevat {{PLURAL:}}, maar de vertaling niet.", "translate-checks-plural-forms": "Via {{PLURAL:}} {{PLURAL:$1|is één vorm|zijn $1 vormen}} opgegeven, maar {{PLURAL:$2|slechts één vorm wordt|$2 vormen worden}} ondersteund (exclusief de vormen 0= en 1=).", "translate-checks-plural-dupe": "Aan het einde van {{PLURAL:}} staat dezelfde vorm dubbel. {{PLURAL:$1|hersenen|hersenen}} moet genoteerd worden als {{PLURAL:$1|hersenen}}.", + "translate-checks-gettext-plural-missing": "Deze vertaling moet {{PLURAL:GETTEXT|}} bevatten.", + "translate-checks-gettext-plural-unsupported": "Dit bericht ondersteunt {{PLURAl:GETTEXT}} niet.", + "translate-checks-unicode-plural-missing": "Deze vertaling moet {{PLURAL|}} bevatten.", + "translate-checks-unicode-plural-unsupported": "Dit bericht ondersteunt {{PLURAL|}} niet.", + "translate-checks-unicode-plural-invalid": "Meervoudsvormen moeten gedefinieerd zijn als $1. Deze vertaling bevat $2.", "translate-checks-pagename": "Afwijkende naamruimte vergeleken met de brontekst", "translate-checks-format": "Deze vertaling wijkt af van het bronbericht of heeft een ongeldige opmaak: $1", "translate-checks-escape": "De volgende escapes zijn waarschijnlijk per ongeluk toegepast: $1", "translate-checks-parametersnotequal": "Aantal parameters is {{PLURAL:$1|$1}}; moet {{PLURAL:$2|$2}} zijn.", "translate-checks-malformed": "$1 heeft een ongeldige indeling.", "translate-checks-fudforum-syntax": "Gebruik $1 in plaats van $2 voor dit project.", - "translate-pref-nonewsletter": "Mij geen nieuwsbrieven per e-mail sturen", + "translate-checks-value-not-present": "De vertaling moet gelijk zijn aan {{PLURAL:$1|1=|een van de volgende waarden:}} $1.", + "translate-checks-replacement": "Gebruik $2 in plaats van $1", "translate-pref-editassistlang": "Hulptalen:", "prefs-translate": "Vertaalinstellingen", "translate-pref-editassistlang-help": "Kommagescheiden lijst van taalcodes.\nDe vertaling van berichten in deze talen worden weergegeven tijdens het vertalen.\nDe standaardlijst van hulptalen is taalafhankelijk.", "translate-pref-editassistlang-bad": "Er staat een ongeldige taalcode in de lijst:\n$1.", "right-translate": "Bewerken via de vertaalinterface", + "action-translate": "te bewerken via de vertaalinterface", "right-translate-manage": "Berichtengroepen beheren", "action-translate-manage": "berichtengroepen te beheren", "right-translate-import": "Vertalingen van buiten het systeem importeren", @@ -114,6 +107,7 @@ "right-translate-messagereview": "Vertalingen accepteren", "action-translate-messagereview": "vertalingen te controleren", "right-translate-groupreview": "Workflowstatus van berichtengroepen wijzigen", + "action-translate-groupreview": "de workflowstatus van berichtengroepen te wijzigen", "translate-rcfilters-translations": "Vertalingen", "translate-rcfilters-translations-only-label": "Vertalingen", "translate-rcfilters-translations-only-desc": "Wijzigingen aan vertaalde pagina's.", @@ -205,17 +199,26 @@ "supportedlanguages-recenttranslations": "recente vertalingen", "supportedlanguages-count": "$1 {{PLURAL:$1|taal|talen}} in totaal.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|bewerking|bewerkingen}} - laatste bewerking {{PLURAL:$3|gisteren|$3 dagen geleden}}", + "translate-supportedlanguages-cached": "Deze informatie werd $1 geleden in de cache opgeslagen.", "abusefilter-edit-builder-vars-translate-source-text": "Brontekst van de vertalingseenheid", - "translate-save": "Opslaan ($1)", + "abusefilter-edit-builder-vars-translate-target-language": "Doeltaal voor de vertaling", + "translate-save": "Publiceren ($1)", "translate-jssti-add": "Aan lijst toevoegen", "managemessagegroups": "Berichtengroepen beheren", "translate-smg-notallowed": "U mag deze handeling niet uitvoeren.", "translate-smg-nochanges": "Er zijn geen veranderingen te verwerken.", "translate-smg-submit": "Wijzigingen opslaan voor verwerking", "translate-smg-submitted": "De berichtendefinities zijn bijgewerkt. De wijzigingen worden in de achtergrond verwerkt.", + "translate-smg-submitted-with-failure": "Het bijwerken van de {{PLURAL:$1|berichtdefinitie|berichtdefinities}} mislukte voor de volgende {{PLURAL:$1|groep|groepen}} - $2. $3", "translate-smg-more": "Na het opslaan van deze wijzigingen, zijn er nog meer wijzigingen te verwerken.", "translate-smg-left": "Inhoud in wiki", "translate-smg-right": "Inkomende wijzigingen", + "translate-smg-rename-select": "Selecteren", + "translate-smg-rename-cancel": "Annuleren", + "translate-smg-rename-select-err": "Selecteer een te hernoemen bericht", + "translate-smg-rename-no-msg": "Geen berichten gevonden.", + "translate-smg-rename-new": "Als nieuw toevoegen...", + "translate-smg-rename-rename": "Als hernoeming toevoegen van...", "translate-manage-import-diff": "Bericht $1 | Handelingen: $2", "translate-manage-import-new": "Nieuw bericht $1", "translate-manage-import-deleted": "Verwijderd bericht $1", @@ -223,11 +226,15 @@ "translate-manage-action-conflict": "Importeren en als fuzzy markeren", "translate-manage-action-ignore": "Negeren", "translate-manage-action-fuzzy": "Importeren en vertalingen als fuzzy markeren", + "translate-manage-action-rename-fuzzy": "Hernoemen en vertalingen als fuzzy markeren", + "translate-manage-action-rename": "Hernoemen", + "translate-manage-action-ignore-change": "Negeer vertalingswijziging", "translate-manage-nochanges": "Er zijn geen veranderingen in de berichtdefinities voor deze groep.", "translate-manage-nochanges-other": "Er waren geen koppelingen voor deze taal.\nGebruik de onderstaande koppeling om terug te keren naar de detailweergave voor de groep.", "translate-manage-inconsistent": "Er is een inconsistentie gedetecteerd in het verzoek.\nControleer de wijzigingen en probeer het nog eens.\nDetails: $1.", "translate-manage-toolong": "De maximale verwerkingstijd van $1 {{PLURAL:$1|seconde|seconden}} is overschreden.\nVerzend de opdracht opnieuw.", "translate-manage-import-summary": "Bezig met het importeren van een nieuwe versie uit een externe bron", + "translate-manage-import-rename-summary": "Hernoemd in externe bron", "translate-manage-conflict-summary": "Bezig met het importeren van een nieuwe versie uit een externe bron.\nControleer de wijziging.", "translate-manage-submit": "Uitvoeren", "translate-manage-intro-other": "Hieronder wordt een lijst weergegeven van wijzigingen in de vertalingen voor de taal $1.\nControleer de wijzigingen en kies een uit te voeren handeling voor iedere vertaling.\nAls u wijzigingen negeert, worden deze bij de volgende export overschreven.", @@ -242,10 +249,9 @@ "translate-import-err-no-such-file": "Het bestand $1 bestaat niet of is niet naar de server geüpload.", "translate-import-err-stale-group": "De berichtengroep die in dit bestand staat bestaat niet.", "translate-import-err-no-headers": "Het bestand heeft geen goed gevormd Gettext-opmaak zoals vereist door de uitbreiding Translate:\nhet was niet mogelijk de groep en taal te bepalen uit het bestand.", - "translate-import-err-warnings": "Het bestand is niet juist gevormd.\nZorg dat uw tekstverwerker het veld msgctxt niet verwijderd.\nDetails: $1", "translate-js-summary": "Samenvatting:", - "translate-js-save": "Opslaan", - "translate-js-next": "Opslaan en volgende", + "translate-js-save": "Publiceren", + "translate-js-next": "Publiceren en volgende", "translate-js-skip": "Overslaan en volgende", "translate-js-history": "Vertaalgeschiedenis", "translate-js-support": "Vraag stellen", @@ -263,7 +269,7 @@ "translate-documentation-language": "Berichtbeschrijving", "translate-searchprofile": "Vertalingen", "translate-searchprofile-tooltip": "In vertalingen zoeken", - "translate-searchprofile-note": "Meer zoekopties zijn beschikbaar met de [$1 vertalingszoekfuntie].", + "translate-searchprofile-note": "Meer zoekopties zijn beschikbaar met de [$1 vertalingszoekfunctie].", "translate-search-languagefilter": "Taalfilter:", "translate-search-nofilter": "Niet filteren", "log-name-translationreview": "Logboek vertalingencontrole", @@ -303,19 +309,19 @@ "tux-status-fuzzy": "Verouderd", "tux-status-proofread": "Gecontroleerd", "tux-status-translated": "Vertaald", - "tux-status-saving": "Opslaan...", - "tux-status-unsaved": "Niet-opgeslagen", + "tux-status-saving": "Bezig met publiceren...", + "tux-status-unsaved": "Niet-gepubliceerd", "tux-save-unknown-error": "Er is een onbekende fout opgetreden.", "tux-editor-placeholder": "Uw vertaling", "tux-editor-editsummary-placeholder": "Optionele bewerkingssamenvatting", "tux-editor-paste-original-button-label": "Brontekst invoegen", "tux-editor-discard-changes-button-label": "Wijzigingen negeren", - "tux-editor-save-button-label": "Vertaling opslaan", + "tux-editor-save-button-label": "Vertaling publiceren", "tux-editor-skip-button-label": "Overslaan en volgende", "tux-editor-cancel-button-label": "Annuleren", "tux-editor-confirm-button-label": "Vertaling bevestigen", "tux-editor-proofread-button-label": "Als gecontroleerd markeren", - "tux-editor-shortcut-info": "Druk op \"$1\" om op te slaan of druk op \"$2\" om naar het volgende bericht te gaan of druk op \"$4\" om een bewerkingssamenvatting op te geven of \"$3\" voor andere snelkoppelingen.", + "tux-editor-shortcut-info": "Druk op \"$1\" om te bevestingen en naar het volgende bericht te gaan, druk op \"$2\" over te slaan, druk op \"$4\" om een bewerkingssamenvatting op te geven of houdt \"$3\" ingedrukt andere snelkoppelingen te zien.", "tux-editor-edit-desc": "Documentatie bewerken", "tux-editor-add-desc": "Documentatie toevoegen", "tux-editor-suggestions-title": "Suggesties", @@ -323,9 +329,9 @@ "tux-editor-need-more-help": "Meer hulp nodig?", "tux-editor-ask-help": "Meer informatie vragen", "tux-editor-tm-match": "$1% overeenkomst", - "tux-warnings-more": "{{PLURAL:$1|$1 meer}}", - "tux-warnings-hide": "verbergen", - "tux-editor-save-failed": "Het opslaan van de vertaling is mislukt: $1", + "tux-notices-more": "{{PLURAL:$1|$1 meer}}", + "tux-notices-hide": "verbergen", + "tux-editor-save-failed": "Het publiceren van de vertaling is mislukt: $1", "tux-editor-n-uses": "{{PLURAL:$1|Eén|$1}} keer gebruikt", "tux-editor-message-desc-more": "Meer weergeven", "tux-editor-message-desc-less": "Minder weergeven", @@ -337,10 +343,10 @@ "tux-proofread-action-tooltip": "Als gecontroleerd markeren", "tux-proofread-edit-label": "Bewerken", "tux-editor-page-mode": "Pagina", - "tux-editor-outdated-warning": "Deze vertaling moet mogelijk bijgewerkt worden.", - "tux-editor-outdated-warning-diff-link": "Verschillen weergeven", + "tux-editor-outdated-notice": "Deze vertaling moet mogelijk bijgewerkt worden.", + "tux-editor-outdated-notice-diff-link": "Verschillen weergeven", "tux-editor-doc-editor-placeholder": "Berichtbeschrijving", - "tux-editor-doc-editor-save": "Documentatie opslaan", + "tux-editor-doc-editor-save": "Documentatie publiceren", "tux-editor-doc-editor-cancel": "Annuleren", "tux-messagetable-more-messages": "Nog {{PLURAL:$1|één bericht|$1 berichten}}", "tux-messagetable-loading-messages": "Bezig met laden van {{PLURAL:$1|bericht|berichten}}...", @@ -376,11 +382,13 @@ "tux-editor-message-tools-translations": "Alle vertalingen", "tux-editor-message-tools-linktothis": "Aan dit bericht koppelen", "tux-editor-loading": "Bezig met laden…", + "tux-editor-loading-failed": "Kon de vertalingshulpmiddelen niet laden: $1", "translate-search-more-languages-info": "Nog $1 {{PLURAL:$1|taal|talen}}", "translate-statsbar-tooltip": "$1% vertaald, $2% gecontroleerd", "translate-statsbar-tooltip-with-fuzzy": "$1% vertaald, $2% gecontroleerd, $3% verouderd", "translate-search-more-groups-info": "nog $1 groep{{PLURAL:$1||en}}", - "translate-ulsdep-title": "Fout in de instellingen", - "translate-ulsdep-body": "De uitbreiding Translate is afhankelijk van de [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector uitbreiding Universal Language Selector].", - "tux-nojs": "Dit hulpmiddel vereist JavaScript. JavaScript is uitgeschakeld of werkt niet, of deze browser wordt niet ondersteund." + "translate-syntax-error": "Vertaling bevat syntaxfouten", + "tux-session-expired": "U bent niet langer aangemeld. Meld u opnieuw aan in een ander tabblad. U kunt ook een kopie maken van uw onvertaalde vertalingen, uzelf opnieuw aanmelden, terugkeren naar deze pagina en uw vertalingen opnieuw invoeren.", + "tux-nojs": "Dit hulpmiddel vereist JavaScript. JavaScript is uitgeschakeld of werkt niet, of deze browser wordt niet ondersteund.", + "specialpages-group-translation": "Vertaling" } diff --git a/MLEB/Translate/i18n/core/nn.json b/MLEB/Translate/i18n/core/nn.json index e05aa218..18657a1c 100644 --- a/MLEB/Translate/i18n/core/nn.json +++ b/MLEB/Translate/i18n/core/nn.json @@ -58,31 +58,11 @@ "translate-use-suggestion": "Byt ut den gjeldande omsetjinga med dette framlegget.", "translate-edit-nopermission": "Du treng omsetjingsrettar for å setja om meldingar.", "translate-edit-askpermission": "Få løyve", - "translate-magic-pagename": "Utvida MediaWiki-omsetjing", - "translate-magic-help": "Du kan setja om tilleggsnamn på spesialsidenamn, magiske ord og namna på namnerom.\n\nTilleggsnamn på spesialsidenamn og magiske ord kan ha fleire omsetjingar.\nOmsetjingane vert fråskilde med komma (,).\nNamnerom kan berre ha éi omsetjing.\n\nI namneromomsetjingane kan $1 talk vera innfløkt. $1 vert erstatta med namnet på nettstaden (til dømes {{ns:project_talk}}).\nOm det ikkje er mogeleg å få til eit gildt uttrykk på ditt språk her utan å endra sidenamnet, lat oss få vita på [[Support]].\n\nDu må vera ein omsetjar for å lagra endringar.\nEndringar vert ikkje lagra før du klikkar på lagreknappen nedanfor.", - "translate-magic-module": "Modul:", - "translate-magic-submit": "Hent", - "translate-magic-cm-export": "Eksporter", - "translate-magic-nothing-to-export": "Det er ingenting å eksportera.", - "translate-magic-cm-to-be": "Framtidig", - "translate-magic-cm-current": "Gjeldande", - "translate-magic-cm-original": "Opphavleg", - "translate-magic-cm-comment": "Kommentar:", - "translate-magic-cm-save": "Lagre", - "translate-magic-cm-updatedusing": "Oppdatert vha. [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Lagringa var mislukka", - "translate-magic-special": "Spesialsidenamn", - "translate-magic-words": "Magiske ord", - "translate-magic-namespace": "Namneromnamn", - "translate-magic-notsaved": "Endringa di vart ikkje lagra!", - "translate-magic-errors": "Bøt på {{PLURAL:$1|denne feilen|desse feila}} i omsetjingane:", - "translate-magic-saved": "Endringane dine vart lagra.", - "translate-checks-parameters": "{{PLURAL:$2|Denne parameteren|Dessse parametrane}} vert ikkje nytta:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Denne parameteren er ukjend|Desse parametrane er ukjende}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Denne parameteren|Dessse parametrane}} vert ikkje nytta:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Denne parameteren er ukjend|Desse parametrane er ukjende}}:\n$1", "translate-checks-balance": "{{PLURAL:$2|Det|Det}} er eit ujamt tal parentesar:\n$1", "translate-checks-links": "{{PLURAL:$2|Denne lenkja er problematisk|Desse $2 lenkjene er problematiske}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|Denne lenkja|Desse $2 lenkjene}} manglar:\n$1", - "translate-checks-xhtml": "Byt ut {{PLURAL:$2|dette merket med det rette|desse merka med dei rette}}:\n$1", "translate-checks-plural": "Definisjonen nyttar {{PLURAL:}}, men omsetjinga gjer det ikkje.", "translate-checks-plural-forms": "{{PLURAL:}} vart gjeven {{PLURAL:$1|éi form|$1 former}}, men berre {{PLURAL:$2|éi form|$2 former}} er stødde (utanom 0=- og 1=-former).", "translate-checks-plural-dupe": "{{PLURAL:}} har duplikatformer på enden. {{PLURAL:$1|namn|namn}} bør skrivast som {{PLURAL:$1|namn}}.", @@ -92,7 +72,6 @@ "translate-checks-parametersnotequal": "Parameterteljaren er {{PLURAL:$1|$1}}; skulle vore {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 er vanskapt.", "translate-checks-fudforum-syntax": "Bruk $1 i staden for $2 på dette prosjektet.", - "translate-pref-nonewsletter": "Ikkje send meg nyhendebrev", "translate-pref-editassistlang": "Hjelpespråk:", "prefs-translate": "Omsetjingsval", "translate-pref-editassistlang-help": "Kommaåtskild liste over språkkodar.\nOmsetjinga av meldinga på desse språka vert viste medan du set om.\nStandardlista over språk fylgjer med språket ditt.", @@ -156,6 +135,7 @@ "translate-translations-history-short": "h", "languagestats": "Språkstatistikk", "languagestats-summary": "Sida viser omsetjingsstatistikk for alle meldingsgruppene for eit språk.", + "messagegroupstats-summary": "Denne sida viser statistikk for meldingsgrupper.", "languagestats-stats-for": "Omsetjingsstatistikk for $1 ($2).", "languagestats-recenttranslations": "siste omsetjingane", "translate-langstats-incomplete": "Somt av statistikken på sida er uheil. Last sida på nytt for å få meir statistikk.", @@ -172,6 +152,7 @@ "translate-untranslated": "Uomsett", "translate-percentage-complete": "Ferdiggjort", "translate-percentage-fuzzy": "Utdatert", + "translate-percentage-proofread": "Vurdert", "translate-languagestats-overall": "Alle meldingsgruppene samla", "translate-ls-submit": "Vis statistikk", "translate-ls-column-group": "Meldingsgruppe", @@ -286,8 +267,8 @@ "tux-editor-need-more-help": "Treng du meir hjelp?", "tux-editor-ask-help": "Spør etter meir informasjon", "tux-editor-tm-match": "$1% samsvar", - "tux-warnings-more": "{{PLURAL:$1|$1 meir}}", - "tux-warnings-hide": "gøym", + "tux-notices-more": "{{PLURAL:$1|$1 meir}}", + "tux-notices-hide": "gøym", "tux-editor-save-failed": "Lagringa av omsetjinga gjekk ikkje: $1", "tux-editor-n-uses": "nytta {{PLURAL:$1|éin gong|$1 gonger}}", "tux-editor-message-desc-more": "Sjå meir", @@ -300,8 +281,8 @@ "tux-proofread-action-tooltip": "Merk som vurdert", "tux-proofread-edit-label": "Endra", "tux-editor-page-mode": "Side", - "tux-editor-outdated-warning": "Omsetjinga treng kan henda ei oppdatering.", - "tux-editor-outdated-warning-diff-link": "Vis skilnader", + "tux-editor-outdated-notice": "Omsetjinga treng kan henda ei oppdatering.", + "tux-editor-outdated-notice-diff-link": "Vis skilnader", "tux-editor-doc-editor-placeholder": "Meldingsdokumentasjon", "tux-editor-doc-editor-save": "Lagra dokumentasjon", "tux-editor-doc-editor-cancel": "Bryt av", diff --git a/MLEB/Translate/i18n/core/nqo.json b/MLEB/Translate/i18n/core/nqo.json new file mode 100644 index 00000000..0b2fd594 --- /dev/null +++ b/MLEB/Translate/i18n/core/nqo.json @@ -0,0 +1,15 @@ +{ + "@metadata": { + "authors": [ + "Lanciné.kounfantoh.fofana", + "Youssoufkadialy" + ] + }, + "translate": "ߘߟߊߡߌ߬ߘߊ߬", + "translate-extensionname": "ߘߟߊߡߌ߬ߘߊ߬", + "translate-js-save": "ߊ߬ ߟߊߞߎ߲߬ߘߎ߬", + "translate-js-next": "ߊ߬ ߟߊߞߎ߲߬ߘߎ߬ ߞߊ߬ ߟߊߕߎ߲߰ߕߊ ߘߊߦߟߍ߬", + "translate-js-skip": "ߌ ߜߊ߲߫ ߣߌ߲߬ ߞߎ߲߬ߠߊ߫", + "translate-js-support": "ߢߌ߬ߣߌ߲߬ߞߊ߬ߟߌ ߞߍ߫", + "translate-documentation-language": "ߗߋߛߓߍ ߘߐ߬ߛߙߋ߬ߦߊ߬ߟߌ" +} diff --git a/MLEB/Translate/i18n/core/nso.json b/MLEB/Translate/i18n/core/nso.json index 104670cc..95587b13 100644 --- a/MLEB/Translate/i18n/core/nso.json +++ b/MLEB/Translate/i18n/core/nso.json @@ -11,7 +11,6 @@ "translate-page-showing": "Go bontšhwa melaetša go tloga go $1 go fihla go $2 ya $3.", "translate-page-showing-all": "Go botšhwa $1 {{PLURAL:$1|ya molaetša|ya melaetša}}.", "translate-page-description-legend": "Tsebo ka sehlopha", - "translate-magic-cm-save": "Boloka", "translate-statsf-scale-days": "Matšatši", "translate-statsf-scale-hours": "Diiri", "translate-statsf-count-edits": "Palo ya diphetogo", diff --git a/MLEB/Translate/i18n/core/ny.json b/MLEB/Translate/i18n/core/ny.json new file mode 100644 index 00000000..9f6ed427 --- /dev/null +++ b/MLEB/Translate/i18n/core/ny.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "BaRaN6161 TURK" + ] + }, + "translate-taction-translate": "Tanthauzirani" +} diff --git a/MLEB/Translate/i18n/core/oc.json b/MLEB/Translate/i18n/core/oc.json index 4d7a7100..72c75916 100644 --- a/MLEB/Translate/i18n/core/oc.json +++ b/MLEB/Translate/i18n/core/oc.json @@ -1,10 +1,11 @@ { "@metadata": { "authors": [ + "BrennodAloisi", "Cedric31", "ChrisPtDe", - "Shirayuki", - "Jfblanc" + "Jfblanc", + "Shirayuki" ] }, "translate": "Traduire", @@ -59,31 +60,11 @@ "translate-export-invalid-format": "Provesissètz un format valid.", "translate-export-not-supported": "L’exportacion de traduccions es pas presa en carga.", "translate-export-format-notsupported": "Lo format d’exportacion especificat es pas pres en carga pel grop de messatges.", - "translate-magic-pagename": "Traduccion de MediaWiki espandida", - "translate-magic-help": "Podètz traduire los aliasses de paginas especialas, los mots magics, e los noms d'espacis de noms.\n\nLos aliasses de paginas especialas e los mots magics pòdon aver mantuna traduccion.\nLas traduccions son separadas per una virgula (,).\nLos espacis de noms pòdon pas aver qu'una traduccion.\n\nTraduire l'espaci de noms de dicussion del projècte, $1 talk pòt èsser complicat.\n$1 es remplaçat pel nom del site (per exemple {{ns:project_talk}}).\nS'es pas possible d'obténer una expression valida dins vòstra lenga sens cambiar lo nom del site, contactatz un desvolopaire sus [[Support]]..\n\nVos cal aparténer al grop dels traductors per enregistrar los cambiaments.\nLos cambiaments seràn pas enregistrats tant qu'auretz pas clicat sul boton « enregistrar » aval.", - "translate-magic-module": "Modul :", - "translate-magic-submit": "Anar", - "translate-magic-cm-export": "Exportar", - "translate-magic-nothing-to-export": "I a pas res a exportar", - "translate-magic-cm-to-be": "Desven", - "translate-magic-cm-current": "Actual", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Comentari :", - "translate-magic-cm-save": "Salvar", - "translate-magic-cm-updatedusing": "Mesa a jorn en utilizant [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Lo salvament a pas capitat", - "translate-magic-special": "Pagina especiala d’aliases", - "translate-magic-words": "Mots magics", - "translate-magic-namespace": "Intitolat dels espacis de nomenatge", - "translate-magic-notsaved": "Vòstra modificacion es pas estada salvada !", - "translate-magic-errors": "Corregissètz {{PLURAL:$1|l'error seguenta|las errors seguentas}} dins las traduccions :", - "translate-magic-saved": "Vòstras modificacions son estadas enregistradas.", - "translate-checks-parameters": "{{PLURAL:$2|Lo paramètre seguent es pas utilizat|Los paramètres seguents son pas utilizats}} : $1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Lo paramètre seguent es desconegut|Los paramètres seguents son desconeguts}} : $1", + "translate-checks-parameters": "{{PLURAL:$2|Lo paramètre seguent es pas utilizat|Los paramètres seguents son pas utilizats}} : $1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Lo paramètre seguent es desconegut|Los paramètres seguents son desconeguts}} : $1", "translate-checks-balance": "I a un nombre impar de {{PLURAL:$2|parentèsis|parentèsis}} : $1", "translate-checks-links": "{{PLURAL:$2|Lo ligam seguent causa|Los ligams seguents causan}} de problèmas : $1", "translate-checks-links-missing": "{{PLURAL:$2|Lo ligam seguent es mancant|Los $2 ligams seguents son mancants}} :\n$1", - "translate-checks-xhtml": "Sètz convidat(ada) a corregir {{PLURAL:$2|la balisa seguenta|las balisas seguentas}} : $1", "translate-checks-plural": "La definicion utiliza {{PLURAL:}} mas pas la traduccion", "translate-checks-plural-forms": "{{PLURAL:}} a recebut {{PLURAL:$1|una forma|$1 formas}} mas {{PLURAL:$2|una sola es suportada|solas $2 son suportadas}} (fòra las formas 0= e 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} a de formas duplicadas al final. {{PLURAL:$1|sheep|sheep}} deuriá èsser escrit atal : {{PLURAL:$1|sheep}}.", @@ -93,7 +74,6 @@ "translate-checks-parametersnotequal": "Lo nombre de paramètres es {{PLURAL:$1|$1}} ; aquò deuriá èsser {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 es incorrècte.", "translate-checks-fudforum-syntax": "Utilizar $1 al luòc de $2 dins aqueste projècte.", - "translate-pref-nonewsletter": "Me mandetz pas la letra d’informacion per corrièr", "translate-pref-editassistlang": "Assistent de lengas :", "prefs-translate": "Opcions de traduccion", "translate-pref-editassistlang-help": "Una virgulas a separat una lista de còdi lenga.\nLa traduccion d’un messatge dins aquelas lengas es afichada quand sètz a traduire.\nLa lista per defaut de las lengas varia en foncion de vòstra lenga.", @@ -232,10 +212,9 @@ "translate-import-err-no-such-file": "Lo fichièr $1 existís pas o es pas importat localament.", "translate-import-err-stale-group": "Lo grop de messatges qu'aquel fichièr i aperten existís pas.", "translate-import-err-no-headers": "Lo fichièr es pas un fichièr ''Gettext'' plan format dins lo format esperat per l’extension ''Translate'' :\nes impossible de determinar lo grop e la lenga dempuèi las entèstas del fichièr.", - "translate-import-err-warnings": "Lo fichièr es pas format coma cal.\nAsseguratz-vos que vòstra aisina de traduccion suprimís pas los camps « msgctxt ».\nDetalhs : $1", "translate-js-summary": "Resumit :", - "translate-js-save": "Enregistrar", - "translate-js-next": "Salvar e dobrir lo seguent", + "translate-js-save": "Publicar", + "translate-js-next": "Publicar e dobrir lo seguent", "translate-js-skip": "Anar al seguent", "translate-js-history": "Istoric de traduccion", "translate-js-support": "Pausar una question", @@ -292,8 +271,8 @@ "tux-status-fuzzy": "Obsolèt", "tux-status-proofread": "Corregit", "tux-status-translated": "Traduit", - "tux-status-saving": "Enregistrament en cors…", - "tux-status-unsaved": "Pas enregistrada", + "tux-status-saving": "Publicacion en cors…", + "tux-status-unsaved": "Pas publicada", "tux-save-unknown-error": "Una error desconeguda s'es produita.", "tux-editor-placeholder": "Vòstra traduccion", "tux-editor-editsummary-placeholder": "Resumit opcional", @@ -312,8 +291,8 @@ "tux-editor-need-more-help": "Besonh d’ajuda ?", "tux-editor-ask-help": "Demandar mai d’informacion", "tux-editor-tm-match": "$1% correspond", - "tux-warnings-more": "{{PLURAL:$1|$1 de mai}}", - "tux-warnings-hide": "amagar", + "tux-notices-more": "{{PLURAL:$1|$1 de mai}}", + "tux-notices-hide": "amagar", "tux-editor-save-failed": "Fracàs de l'enregistrament de la traduccion : $1", "tux-editor-n-uses": "utilitzat $1 {{PLURAL:$1|còp|còps}}", "tux-editor-message-desc-more": "Veire mai", @@ -326,8 +305,8 @@ "tux-proofread-action-tooltip": "Marcar coma relegit", "tux-proofread-edit-label": "Modificar", "tux-editor-page-mode": "Pagina", - "tux-editor-outdated-warning": "Aquesta traduccion pòt necessitar una mesa a jorn.", - "tux-editor-outdated-warning-diff-link": "Afichar las diferéncias", + "tux-editor-outdated-notice": "Aquesta traduccion pòt necessitar una mesa a jorn.", + "tux-editor-outdated-notice-diff-link": "Afichar las diferéncias", "tux-editor-doc-editor-placeholder": "Documentacion del messatge", "tux-editor-doc-editor-save": "Enregistrar la documentacion", "tux-editor-doc-editor-cancel": "Anullar", @@ -368,6 +347,5 @@ "translate-search-more-languages-info": "$1 {{PLURAL:$1|lenga|lengas}} mai", "translate-statsbar-tooltip": "$1% tradusit, $2% repassat", "translate-statsbar-tooltip-with-fuzzy": "$1% tradusit, $2% repassat, $3% desuet", - "translate-search-more-groups-info": "$1 grop{{PLURAL:$1||es}} mai", - "translate-ulsdep-title": "Error de configuracion" + "translate-search-more-groups-info": "$1 grop{{PLURAL:$1||es}} mai" } diff --git a/MLEB/Translate/i18n/core/or.json b/MLEB/Translate/i18n/core/or.json index 5fbc9b56..c6c37178 100644 --- a/MLEB/Translate/i18n/core/or.json +++ b/MLEB/Translate/i18n/core/or.json @@ -51,29 +51,10 @@ "translate-use-suggestion": "ଏହି ପରାମର୍ଶରୁ ଏବେକାର ଅନୁବାଦକୁ ବଦଳାଇଦିଅନ୍ତୁ ।", "translate-edit-nopermission": "ଅନୁବାଦ କରିବା ପାଇଁ ଆପଣଙ୍କୁ ଅନୁବାଦ ଅନୁମତି ଲୋଡ଼ା ।", "translate-edit-askpermission": "ଅନୁମତି ପାଇବା ପାଇଁ ଅନୁରୋଧ କରନ୍ତୁ ।", - "translate-magic-pagename": "ପରିବର୍ଦ୍ଧିତ ମିଡ଼ିଆଉଇକି ଅନୁବାଦସମୂହ", - "translate-magic-module": "ଖସଡ଼ା:", - "translate-magic-submit": "ପାଇବେ", - "translate-magic-cm-export": "ପଠେଇବେ", - "translate-magic-nothing-to-export": "ବାହାରକୁ ପଠାଇବା ପାଇଁ କିଛି ନା‌ହିଁ ।", - "translate-magic-cm-to-be": "ହେବାକୁ ଥିବା", - "translate-magic-cm-current": "ଏବେକାର", - "translate-magic-cm-original": "ମୂଳ", - "translate-magic-cm-comment": "ମତାମତ", - "translate-magic-cm-save": "ସାଇତିବେ [Save]", - "translate-magic-cm-updatedusing": "[[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]] ବ୍ୟବ‌ହାର କରି ଅପଡ଼େଟ କରୁଛୁ ।", - "translate-magic-cm-savefailed": "ସାଇତିବା ବିଫଳ ହେଲା", - "translate-magic-special": "ବିଶେଷ ପୃଷ୍ଠା ଆଲିଆସ", - "translate-magic-words": "ମ୍ୟାଜିକ ଶବ୍ଦମାନ", - "translate-magic-namespace": "ନେମ୍ସସ୍ପେସ ନାମସବୁ", - "translate-magic-notsaved": "ଆପଣଙ୍କ ସମ୍ପାଦନା ସାଇତାଯାଇପାରିଲା ନାହିଁ!", - "translate-magic-errors": "ଏହି {{PLURAL:$1|ଭୁଲଟି|ଭୁଲମାନ}} ଅନୁବାଦରେ ବଦଳାଇଦିନ୍ତୁ:", - "translate-magic-saved": "ଆପଣଙ୍କ ସମ୍ପାଦନା ସଫଳ ଭାବେ ସାଇତାଗଲା ।", - "translate-checks-parameters": "ଏହି {{PLURAL:$2|ପାରାମିଟର|ପାରାମିଟରମାନ}} ବ୍ୟ‌ବ‌ହାର ହୋଇନାହିଁ:\n$1", - "translate-checks-parameters-unknown": "ଏହି {{PLURAL:$2|ପାରାମିଟର ଟି|ପାରାମିଟରମାନ}} ଅଜଣା:\n$1", + "translate-checks-parameters": "ଏହି {{PLURAL:$2|ପାରାମିଟର|ପାରାମିଟରମାନ}} ବ୍ୟ‌ବ‌ହାର ହୋଇନାହିଁ:\n$1", + "translate-checks-parameters-unknown": "ଏହି {{PLURAL:$2|ପାରାମିଟର ଟି|ପାରାମିଟରମାନ}} ଅଜଣା:\n$1", "translate-checks-balance": "ଏଠାରେ ଅସମ ସଂଖ୍ୟକ {{PLURAL:$2|ପେରେନ୍ଥେସ|ପେରେନ୍ଥେସସବୁ}} ରହିଛି:\n$1", "translate-checks-links": "ଏହି {{PLURAL:$2|ଲିଙ୍କଟି|$2 lଲିଙ୍କମାନ}} ଅସୁବିଧାଜନକ: $1", - "translate-pref-nonewsletter": "ମୋତେ ଇ-ମେଲ ନିଉଜଲେଟର ପଠାଇବେ ନାହିଁ", "prefs-translate": "ଅନୁବାଦ ବିକଳ୍ପସବୁ", "translate-rc-translation-filter-no": "କିଛି ବି କରିବେ ନାହିଁ", "translate-rc-translation-filter-only": "କେବଳ ଅନୁବାଦସବୁ ଦେଖାନ୍ତୁ", diff --git a/MLEB/Translate/i18n/core/os.json b/MLEB/Translate/i18n/core/os.json index 6bc61262..d204f277 100644 --- a/MLEB/Translate/i18n/core/os.json +++ b/MLEB/Translate/i18n/core/os.json @@ -10,7 +10,5 @@ "translate-next": "Фæдылдзог фарс", "translate-prev": "Раздæры фарс", "translate-page-edit": "ивын", - "translate-magic-cm-current": "Нырыккон", - "translate-magic-cm-save": "Афтæ уæд", "translate-statsf-submit": "Разæркаст" } diff --git a/MLEB/Translate/i18n/core/pa.json b/MLEB/Translate/i18n/core/pa.json index 7ca90367..ab821776 100644 --- a/MLEB/Translate/i18n/core/pa.json +++ b/MLEB/Translate/i18n/core/pa.json @@ -49,23 +49,7 @@ "translate-use-suggestion": "ਮੌਜੂਦਾ ਤਰਜਮੇ ਦੀ ਥਾਂ ਇਹ ਸਲਾਹ ਲਿਆਉ", "translate-edit-nopermission": "ਤੁਹਾਨੂੰ ਸੁਨੇਹਿਆਂ ਦਾ ਅਨੁਵਾਦ ਕਰਨ ਲਈ ਇਜਾਜ਼ਤ ਚਾਹੀਦੀ ਹੈ।", "translate-edit-askpermission": "ਇਜਾਜ਼ਤ ਲਈ ਬੇਨਤੀ ਕਰੋ", - "translate-magic-pagename": "ਵਿਸਥਾਰ ਵਿੱਚ ਮੀਡੀਆਵਿਕੀ ਅਨੁਵਾਦ", - "translate-magic-module": "ਮਾਪਦੰਡ:", - "translate-magic-submit": "ਲਿਆਉ", - "translate-magic-cm-export": "ਮੰਗਾਓ", - "translate-magic-nothing-to-export": "ਮੰਗਾਉਣ ਲਈ ਕੁਝ ਨਹੀਂ ਹੈ।", - "translate-magic-cm-current": "ਮੌਜੂਦਾ", - "translate-magic-cm-original": "ਮੂਲ", - "translate-magic-cm-comment": "ਟਿੱਪਣੀ:", - "translate-magic-cm-save": "ਸੰਭਾਲੋ", - "translate-magic-cm-savefailed": "ਸੰਭਾਲ ਫੇਲ੍ਹ ਹੋ ਗਈ", - "translate-magic-special": "ਖ਼ਾਸ ਸਫ਼ਿਆਂ ਦੇ ਉਪਨਾਮ", - "translate-magic-words": "ਜਾਦੂਈ ਸ਼ਬਦ", - "translate-magic-namespace": "ਨਾਂ-ਸਥਾਨ ਨਾਮ", - "translate-magic-notsaved": "ਤੁਹਾਡੀ ਸੋਧ ਸਾਂਭੀ ਨਹੀਂ ਗਈ!", - "translate-magic-errors": "ਕਿਰਪਾ ਕਰਕੇ ਅਨੁਵਾਦ ਵਿਚ {{PLURAL:$1|ਹੇਠ ਲਿਖੀ ਗ਼ਲਤੀ|ਹੇਠ ਲਿਖੀਆਂ ਗ਼ਲਤੀਆਂ}} ਸਹੀ ਕਰੋ:", - "translate-magic-saved": "ਤੁਹਾਡੀਆਂ ਤਬਦੀਲੀਆਂ ਸਾਂਭ ਲਈਆਂ ਗਈਆਂ ਹਨ।", - "translate-checks-parameters": "{{PLURAL:$2|ਹੇਠ ਲਿਖਿਆ ਮਾਪਦੰਡ ਵਰਤਿਆ ਨਹੀਂ ਗਿਆ|ਹੇਠ ਲਿਖੇ ਮਾਪਦੰਡ ਵਰਤੇ ਨਹੀਂ ਗਏ}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|ਹੇਠ ਲਿਖਿਆ ਮਾਪਦੰਡ ਵਰਤਿਆ ਨਹੀਂ ਗਿਆ|ਹੇਠ ਲਿਖੇ ਮਾਪਦੰਡ ਵਰਤੇ ਨਹੀਂ ਗਏ}}:\n$1", "translate-rc-translation-filter-no": "ਕੁਝ ਨਾ ਕਰੋ", "translate-rc-translation-filter-only": "ਸਿਰਫ਼ ਤਰਜਮੇ ਵਿਖਾਉ", "translationstats": "ਤਰਜਮਾਕਾਰੀ ਦੇ ਅੰਕੜੇ", @@ -187,8 +171,8 @@ "tux-editor-need-more-help": "ਹੋਰ ਮਦਦ ਚਾਹੀਦੀ ਹੈ?", "tux-editor-ask-help": "ਹੋਰ ਜਾਣਕਾਰੀ ਮੰਗੋ", "tux-editor-tm-match": "$1% ਮੇਲ", - "tux-warnings-more": "{{PLURAL:$1|$1 ਹੋਰ}}", - "tux-warnings-hide": "ਲੁਕਾਓ", + "tux-notices-more": "{{PLURAL:$1|$1 ਹੋਰ}}", + "tux-notices-hide": "ਲੁਕਾਓ", "tux-editor-save-failed": "ਅਨੁਵਾਦ ਦੀ ਸਾਂਭ ਫੇਲ੍ਹ ਹੋਈ: $1", "tux-editor-n-uses": "$1 ਵਾਰ {{PLURAL:$1|ਵਰਤਿਆ ਗਿਆ|ਵਰਤੇ ਗਏ}}", "tux-editor-message-desc-more": "ਹੋਰ ਵੇਖੋ", @@ -201,8 +185,8 @@ "tux-proofread-action-tooltip": "ਪਰਖਿਆ ਹੋਇਆ ਵਜੋਂ ਨੱਥੀ ਕਰੋ", "tux-proofread-edit-label": "ਸੋਧ", "tux-editor-page-mode": "ਸਫ਼ਾ", - "tux-editor-outdated-warning": "ਇਸ ਤਰਜਮੇ ਨੂੰ ਸ਼ਾਇਦ ਨਵਾਂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।", - "tux-editor-outdated-warning-diff-link": "ਫ਼ਰਕ ਵਿਖਾਓ", + "tux-editor-outdated-notice": "ਇਸ ਤਰਜਮੇ ਨੂੰ ਸ਼ਾਇਦ ਨਵਾਂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।", + "tux-editor-outdated-notice-diff-link": "ਫ਼ਰਕ ਵਿਖਾਓ", "tux-editor-doc-editor-placeholder": "ਸੁਨੇਹਾ ਦਸਤਾਵੇਜ਼", "tux-editor-doc-editor-save": "ਦਸਤਾਵੇਜ਼ ਸਾਂਭੋ", "tux-editor-doc-editor-cancel": "ਰੱਦ ਕਰੋ", diff --git a/MLEB/Translate/i18n/core/pam.json b/MLEB/Translate/i18n/core/pam.json index f5a2b1d8..7b2e2cdf 100644 --- a/MLEB/Translate/i18n/core/pam.json +++ b/MLEB/Translate/i18n/core/pam.json @@ -5,8 +5,6 @@ ] }, "translate": "↓Ilikas", - "translate-magic-cm-save": "↓Isikap", - "translate-magic-cm-savefailed": "↓Bigu ya ing pamanyikap", "translate-rc-translation-filter-no": "↓Ala kang gagawan", "translate-stats-users": "↓Talalikas", "translate-js-save": "↓Isikap" diff --git a/MLEB/Translate/i18n/core/pcd.json b/MLEB/Translate/i18n/core/pcd.json new file mode 100644 index 00000000..1cb4b780 --- /dev/null +++ b/MLEB/Translate/i18n/core/pcd.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Geoleplubo" + ] + }, + "translate-documentation-language": "Documintacion du messache" +} diff --git a/MLEB/Translate/i18n/core/pdc.json b/MLEB/Translate/i18n/core/pdc.json index 7a9d6218..aba03898 100644 --- a/MLEB/Translate/i18n/core/pdc.json +++ b/MLEB/Translate/i18n/core/pdc.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Xqt", - "Purodha" + "Purodha", + "Xqt" ] }, "translate": "Iwwersetze", @@ -17,10 +17,6 @@ "translate-edit-title": "„$1“ ennere", "translate-edit-translation": "Iwwersetzing", "translate-edit-in-other-languages": "Meldinge in annere Schprooche", - "translate-magic-cm-to-be": "Sollt sei", - "translate-magic-cm-comment": "Aamaericking:", - "translate-magic-cm-save": "Beilege", - "translate-magic-namespace": "Naame von Blatznaame", "translationstats": "Nummere vun Iwwersetzinge", "translate-stats-edits": "Enneringe", "translate-stats-users": "Iwwersetzer", diff --git a/MLEB/Translate/i18n/core/pfl.json b/MLEB/Translate/i18n/core/pfl.json index 6985e1f7..192427b7 100644 --- a/MLEB/Translate/i18n/core/pfl.json +++ b/MLEB/Translate/i18n/core/pfl.json @@ -50,31 +50,11 @@ "translate-use-suggestion": "Iwasedzung duaschn Voaschlach easedze.", "translate-edit-nopermission": "Fas Iwasedze vun Nochrischde braugschd s'Räschd.", "translate-edit-askpermission": "Nochde Bwillischung frooche", - "translate-magic-pagename": "Eawaidadi MediaWiki-Iwasedzung", - "translate-magic-help": "Du konschd do Bseudoniem fa Schbezijalsaide, magische Weada un Noame vun Noamnsrääm iwasedze.\n\nSchbezijalsaide un magische Weada kennen vaschiedene Iwasedzunge hawe. Iwasedzunge werren midm Komma (,) gdrennd. Noamnsrääm kennen ä Iwasedzung hawe.\n\nInde Iwasedzung vum Noame vun Noamnsrääm hod $1 talk ä bsondari Bdaidung. $1 werd midm Brojegdnoame (z. B. {{ns:project_talk}}) easedzd. Wons inde Schbroch ned meschlisch isch, än gildischi Ausdrugg zu finne, frochgschdn Endwiggla.\n\nDu mugschd inde Grubb vunde Iwasedza soi, um Änarunge schbaischare zu kenne.\nÄnarunge werren gschbaischad, won unne uff „Schbaischare“ gligge dudschd.", - "translate-magic-module": "Bauschdää:", - "translate-magic-submit": "Hole", - "translate-magic-cm-export": "Ausgewe", - "translate-magic-nothing-to-export": "Do hods nix fas Ausgewe.", - "translate-magic-cm-to-be": "Deed soi solle", - "translate-magic-cm-current": "Gescheweadisch", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Kommenda:", - "translate-magic-cm-save": "Schbaischare", - "translate-magic-cm-updatedusing": "Agduell iwa [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Schbaischare isch ned gonge", - "translate-magic-special": "Bseudoniem fa Schbezijalsaide", - "translate-magic-words": "Magische Weada", - "translate-magic-namespace": "Noame vunde Noamsrääm", - "translate-magic-notsaved": "Doi Änarunge sin ned gsischad worre!", - "translate-magic-errors": "Beheb bidde {{PLURAL:$1|de|die}} Fehla inde Iwasedzung:", - "translate-magic-saved": "Doi Änarunge sin eafolschraisch gsischad worre", - "translate-checks-parameters": "Die folschndi {{PLURAL:$2|Kenngreeß wead|Kenngreeß werren}} ned bnudzd:\n$1", - "translate-checks-parameters-unknown": "Die folschndi {{PLURAL:$2|Kenngreeß isch|Kenngreeß sin}} ubkond:\n$1", + "translate-checks-parameters": "Die folschndi {{PLURAL:$2|Kenngreeß wead|Kenngreeß werren}} ned bnudzd:\n$1", + "translate-checks-parameters-unknown": "Die folschndi {{PLURAL:$2|Kenngreeß isch|Kenngreeß sin}} ubkond:\n$1", "translate-checks-balance": "Do hodse uglaischi Oazahl vun {{PLURAL:$2|Klommare|Klommare}}:\n$1", "translate-checks-links": "{{PLURAL:$2|De Ling'g isch|Die $2 Ling'gs sin}} broblemadisch:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|De Ling'g fehld|Die $2 Ling'gs fehln}}:\n$1", - "translate-checks-xhtml": "Bidde easedz die {{PLURAL:$2|Uffschrifd|Uffschrifde}} midm rischdische:\n$1", "translate-checks-plural": "Die Feschleschung bnudzd {{PLURAL:}}, awa die Iwasedzung ned.", "translate-checks-pagename": "De Noamensraum waischd vunde Feschleschung ab.", "translate-checks-format": "Die Iwasedzung folschd nedde Feschdleschung oda hodn ugildischi Sadzbau: $1", @@ -82,7 +62,6 @@ "translate-checks-parametersnotequal": "Die Oazahl vunde Parameter isch {{PLURAL:$1|$1}}; solld awa {{PLURAL:$2|$2}} soi.", "translate-checks-malformed": "$1 isch ugildisch.", "translate-checks-fudforum-syntax": "In dem Brojegd bnudz $1 schdad $2.", - "translate-pref-nonewsletter": "Sendma kä E-Mail-Naijischkaide", "translate-pref-editassistlang": "Hilfschbrooch:", "prefs-translate": "Meschlischkaide fas Iwasedze", "translate-pref-editassistlang-help": "Komma gdrendi Lischd vun Schbroochcodes.\nIwasedzunge vun Nochrischde in die Schbrooche werren baim Iwasedze gzaischd.\nDie Schdandadlischd vunde Schbrooche b'ruhd uff doina Schbrooch.", @@ -205,7 +184,6 @@ "translate-import-err-no-such-file": "Die Dadai $1 hods ned oda isch do ned ruffglaade worre.", "translate-import-err-stale-group": "Die Nochrischdegrubb vonde Dadai hods ned.", "translate-import-err-no-headers": "Die Dadai isch ned im Gettext-Foamad vunde Eawaidarung \"Iwasedze\":\nDie Grubb un Schbrooch hodned ausm Dadaikopp bschdimmd werre kenne.", - "translate-import-err-warnings": "Midde Dadai schdimmd was ned.\nSchdell sischa, dassdo kä msgctxt-Felda gleschd werren.\nHiwais: $1", "translate-js-summary": "Zommefassung:", "translate-js-save": "Schbaischare", "translate-js-next": "Schbaischare unde negschd effne", diff --git a/MLEB/Translate/i18n/core/pl.json b/MLEB/Translate/i18n/core/pl.json index 28d326aa..7a088f00 100644 --- a/MLEB/Translate/i18n/core/pl.json +++ b/MLEB/Translate/i18n/core/pl.json @@ -5,6 +5,7 @@ "Beau", "BeginaFelicysym", "Chrumps", + "CiaPan", "Derbeth", "Dodek", "Jwitos", @@ -17,25 +18,25 @@ "Odie2", "Olgak85", "Qblik", + "Rail", + "Railfail536", "Rezonansowy", "Saper", "Sp5uhe", + "The Polish", "ToSter", + "Tsca", "Ty221", "WTM", "Woytecr", "Wpedzich", - "Žekřil71pl", - "The Polish", - "Tsca", - "Railfail536", - "CiaPan" + "Žekřil71pl" ] }, "translate": "Przetłumacz", "translate-extensionname": "Przetłumacz", "translate-desc": "[[Special:Translate|Strona specjalna]] umożliwiająca tłumaczenie MediaWiki oraz innych programów", - "translate-fuzzybot-desc": "To jest specjalne konto systemowe używane przez rozszerzenie MediaWiki [https://www.mediawiki.org/wiki/Extension:Translate Translate] służące do utrzymywania tłumaczeń.\nTo konto to część oprogramowania MediaWiki - nie jest prowadzone przez żadnego użytkownika.", + "translate-fuzzybot-desc": "To jest specjalne konto systemowe używane przez rozszerzenie MediaWiki [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate Translate] służące do utrzymywania tłumaczeń.\nTo konto jest częścią oprogramowania MediaWiki - nie jest prowadzone przez żadnego użytkownika.", "translate-taskui-export-to-file": "Eksportuj w formacie macierzystym", "translate-taskui-export-as-po": "Eksportuj do tłumaczenia off-line", "translate-taction-translate": "Przetłumacz", @@ -69,7 +70,7 @@ "translate-edit-title": "Edycja „$1“", "translate-edit-definition": "Tekst źródłowy komunikatu", "translate-edit-translation": "Tłumaczenie", - "translate-edit-contribute": "prześlij", + "translate-edit-contribute": "zmień", "translate-edit-no-information": "Ten komunikat nie posiada dokumentacji.\nJeśli wiesz gdzie lub jak ten komunikat jest używany, możesz pomóc innym tłumaczom przez dodanie dokumentacji do tego komunikatu.", "translate-edit-information": "Objaśnienie komunikatu ($1)", "translate-edit-in-other-languages": "Komunikat w innych językach", @@ -84,46 +85,42 @@ "translate-export-invalid-format": "Proszę podać poprawny format.", "translate-export-not-supported": "Eksport tłumaczeń nie jest obsługiwany.", "translate-export-format-notsupported": "Określony format eksportu nie jest obsługiwany przez tę grupę komunikatów.", - "translate-magic-pagename": "Rozszerzone tłumaczenie MediaWiki", - "translate-magic-help": "Istnieje możliwość tłumaczenia aliasów stron specjalnych, magicznych słów i nazw poszczególnych przestrzeni nazw.\n\nAliasy stron specjalnych i magiczne słowa mogą mieć wiele tłumaczeń.\nTłumaczenia rozdziela się przecinkiem (,).\nPrzestrzenie nazw mogą mieć tylko jedno tłumaczenie.\n\nTłumaczenie nazw przestrzeni nazw Dyskusja $1 zawierających strony dyskusji może być bardziej złożone.\n$1 zamieniane jest na nazwę serwisu – na przykład {{ns:project_talk}}.\nJeśli w danym języku niemożliwe jest sformułowanie prawidłowego wpisu bez zmiany nazwy serwisu, należy nas zawiadomić przez [[Support]].\n\nZapisanie zmian jest możliwe tylko przez członków grupy tłumaczy.\nZmiany nie są zapisywane, dopóki użytkownik nie naciśnie umieszczonego poniżej przycisku „Zapisz”.", - "translate-magic-module": "Moduł:", - "translate-magic-submit": "Wyświetl", - "translate-magic-cm-export": "Eksportuj", - "translate-magic-nothing-to-export": "Nie ma nic do wyeksportowania.", - "translate-magic-cm-to-be": "Przyszły", - "translate-magic-cm-current": "Aktualny", - "translate-magic-cm-original": "Początkowy", - "translate-magic-cm-comment": "Opis zmian:", - "translate-magic-cm-save": "Zapisz", - "translate-magic-cm-updatedusing": "Uaktualniane za pomocą strony [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Zapis nieudany", - "translate-magic-special": "Aliasy stron specjalnych", - "translate-magic-words": "Magiczne słowa", - "translate-magic-namespace": "Nazwy przestrzeni nazw", - "translate-magic-notsaved": "Twoja edycja nie została zapisana!", - "translate-magic-errors": "Proszę naprawić {{PLURAL:$1|w tłumaczeniach błąd|następujące błędy w tłumaczeniach:}}", - "translate-magic-saved": "Twoje zmiany zostały zapisane.", - "translate-checks-parameters": "{{PLURAL:$2|Następujący parametr nie jest wykorzystywany|Następujące parametry nie są wykorzystywane}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Następujący parametr nie jest zdefiniowany|Następujące parametry nie są zdefiniowane}}:\n$1", + "translate-export-group-too-large": "Wybrana grupa komunikatów jest za duża. Wybierz grupę, która ma mniej niż $1 {{PLURAL:$1|komunikat|komunikaty|komunikatów}} lub skontaktuj się z administratorem tłumaczeń.", + "translate-checks-parameters": "{{PLURAL:$2|Następujący parametr nie jest wykorzystywany|Następujące parametry nie są wykorzystywane}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Następujący parametr nie jest zdefiniowany|Następujące parametry nie są zdefiniowane}}:\n$1", "translate-checks-balance": "W wyrażeniu napotkano {{PLURAL:$2|niedomknięty nawias|nieparzystą liczbę nawiasów}}:\n$1", "translate-checks-links": "{{PLURAL:$2|Następujący link jest problematyczny|Następujące $2 linki są problematyczne|Następujących $2 linków jest problematycznych}}:\n$1", "translate-checks-links-missing": "Brakuje {{PLURAL:$2|linku|następujących linków:}}\n$1", - "translate-checks-xhtml": "Zastąp {{PLURAL:$2|następujący znacznik prawidłowym|następujące znaczniki prawidłowymi}}:\n$1", "translate-checks-plural": "Tekst źródłowy wykorzystuje funkcję {{PLURAL:}}, lecz w tłumaczeniu nie została ona użyta.", "translate-checks-plural-forms": "{{PLURAL:}} posiada {{PLURAL:$1|jedną formę|$1 formy|$1 form}} ale {{PLURAL:$2|tylko jedna forma jest obsługiwana|$2 formy są obsługiwane|$2 form jest obsługiwanych}} (z wyłączeniem form 0= i 1= ).", "translate-checks-plural-dupe": "W {{PLURAL:}} podano pod koniec powtarzające się formy. {{PLURAL:$1|ojca|ojców|ojców}} powinno zapisać się jako {{PLURAL:$1|ojca|ojców}}.", + "translate-checks-gettext-plural-missing": "To tłumaczenie musi zawierać {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "Ten komunikat nie obsługuje {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} akceptuje dokładnie {{PLURAL:$1|jedną formę|$1 formy|$1 form}} liczby mnogiej. Obecnie podano {{PLURAL:$2|jedną formę|$2 formy|$2 form}}.", + "translate-checks-smartformat-plural-missing": "To tłumaczenie musi uwzględniać liczbę mnogą dla zmiennej $1.", + "translate-checks-smartformat-plural-unsupported": "Ten komunikat nie obsługuje uwzględniania liczby mnogiej dla zmiennej $1.", + "translate-checks-smartformat-plural-count": "Niewłaściwa liczba form liczby mnogiej w $3. Musi to być $1 {{PLURAL:$1|forma|form}} liczby mnogiej. Obecnie podano $2 {{PLURAL:$2|formę|form}} liczby mnogiej.", + "translate-checks-unicode-plural-missing": "To tłumaczenie musi zawierać {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "Ten komunikat nie obsługuje {{PLURAL:|}}.", + "translate-checks-unicode-plural-invalid": "Formy liczby mnogiej powinny być zdefiniowane jako $1. To tłumaczenie zawiera $2.", "translate-checks-pagename": "Przestrzeń nazw różni się od tekstu źródłowego", "translate-checks-format": "To tłumaczenie jest niezgodne z tekstem źródłowym lub ma nieprawidłową składnię: $1", "translate-checks-escape": "Następujące sekwencje mogą być niezamierzone: $1", "translate-checks-parametersnotequal": "Liczba parametrów to {{PLURAL:$1|$1}}; {{PLURAL:$2|powinien być $2|powinno być $2}}.", "translate-checks-malformed": "$1 jest niepoprawne.", "translate-checks-fudforum-syntax": "Użyj w tym projekcie $1 zamiast $2.", - "translate-pref-nonewsletter": "Nie wysyłaj do mnie biuletynów pocztą elektroniczną", + "translate-checks-newline-missing-start": "Brakuje $1 {{PLURAL:$1|znak|znaków}} nowej linii na początku tłumaczenia.", + "translate-checks-newline-missing-end": "Brakuje $1 {{PLURAL:$1|znak|znaków}} nowej linii na końcu tłumaczenia.", + "translate-checks-newline-extra-start": "{{PLURAL:$1|Jest|Są}} $1 {{PLURAL:$1|nadmiarowy znak|nadmiarowe znaki}} nowej linii na początku tłumaczenia.", + "translate-checks-newline-extra-end": "{{PLURAL:$1|Jest|Są}} $1 {{PLURAL:$1|nadmiarowy znak|nadmiarowe znaki}} nowej linii na końcu tłumaczenia.", + "translate-checks-value-not-present": "Tłumaczenie musi {{PLURAL:$1|1=brzmieć|być jedna z podanych wartości:}}: $1.", + "translate-checks-replacement": "Użyj $2 zamiast $1.", "translate-pref-editassistlang": "Języki pomocnicze:", "prefs-translate": "Opcje tłumaczenia", "translate-pref-editassistlang-help": "Lista kodów językowych rozdzielonych przecinkami.\nKomunikat w tych językach będzie widoczny podczas wykonywania tłumaczenia.\nDomyślna lista języków zależy od Twojego języka.", "translate-pref-editassistlang-bad": "Na liście jest błędny kod języka –\n$1.", "right-translate": "Edycja z użyciem interfejsu tłumaczeń", + "action-translate": "edytowania za pośrednictwem interfejsu tłumaczeń", "right-translate-manage": "Zarządzanie grupami komunikatów", "action-translate-manage": "zarządzania grupami komunikatów", "right-translate-import": "Importowanie tłumaczeń wykonanych offline", @@ -223,17 +220,29 @@ "supportedlanguages-recenttranslations": "ostatnie tłumaczenia", "supportedlanguages-count": "Razem $1 {{PLURAL:$1|język|języki|języków}}.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|edycja|edycje|edycji}} – ostatnia zmiana $3 {{PLURAL:$3|dzień|dni}} temu", + "translate-supportedlanguages-cached": "Ta informacja została zapisana w pamięci podręcznej $1 temu.", "abusefilter-edit-builder-vars-translate-source-text": "Tekst źródłowy jednostki tłumaczeniowej", - "translate-save": "Zapisz ($1)", + "abusefilter-edit-builder-vars-translate-target-language": "Docelowy język tłumaczenia", + "translate-save": "Opublikuj ($1)", "translate-jssti-add": "Dodaj do listy", "managemessagegroups": "Zarządzanie grupami komunikatów", "translate-smg-notallowed": "Nie masz prawa wykonania tej akcji.", "translate-smg-nochanges": "Nie ma żadnych zmian do przetworzenia.", "translate-smg-submit": "Prześlij zmiany do przetwarzania", "translate-smg-submitted": "Zostały zaktualizowane teksty źródłowe komunikatów. Zmiany są przetwarzane w tle.", + "translate-smg-submitted-with-failure": "Uaktualnienie definicji {{PLURAL:$1|komunikatu|komunikatów}} nie powiodło się dla {{PLURAL:$1|tej grupy|tych grup}} - $2. $3", + "translate-smg-submitted-others-processing": "Definicje komunikatów dla innych grup zostały przetworzone w tle.", "translate-smg-more": "Będzie więcej zmian do wykonania po przesłaniu tych zmian.", "translate-smg-left": "Treść komunikatu w wiki", "translate-smg-right": "Przychodzące modyfikacje", + "translate-smg-rename-select": "Wybierz", + "translate-smg-rename-cancel": "Anuluj", + "translate-smg-rename-search": "Wyszukiwanie pasującego komunikatu...", + "translate-smg-rename-select-err": "Wybierz komunikat, którego nazwę chcesz zmienić", + "translate-smg-rename-no-msg": "Nie znaleziono komunikatów.", + "translate-smg-rename-new": "Dodaj jako nowy…", + "translate-smg-rename-rename": "Dodaj jako efekt zmiany nazwy…", + "translate-smg-changeset-modified": "Zestaw zmian został zmodyfikowany przez innego użytkownika lub proces. Twoje zmiany nie mogą zostać opublikowane, ponieważ mogłyby nadpisać ich zmiany. Przeładuj stronę aby zobaczyć najnowsze zmiany.", "translate-manage-import-diff": "Komunikat $1 | Operacje: $2", "translate-manage-import-new": "Nowy komunikat $1", "translate-manage-import-deleted": "Usunięto komunikat $1", @@ -241,11 +250,15 @@ "translate-manage-action-conflict": "Importuj i oznacz jako wymagające sprawdzenia", "translate-manage-action-ignore": "Ignoruj", "translate-manage-action-fuzzy": "Importuj i oznacz tłumaczenia jako wymagające sprawdzenia", + "translate-manage-action-rename-fuzzy": "Zmień nazwy i oznacz tłumaczenia jako wymagające sprawdzenia", + "translate-manage-action-rename": "Zmień nazwę", + "translate-manage-action-ignore-change": "Zignoruj zmianę tłumaczenia", "translate-manage-nochanges": "Brak zmian w definicjach komunikatów dla tej grupy", "translate-manage-nochanges-other": "Nie było zmian dla tego języka.\nUżyj poniższego linku, aby powrócić do widoku szczegółów grupy.", "translate-manage-inconsistent": "Wykryto nieścisłości w formularzu.\nProszę sprawdzić zmiany i spróbować ponownie.\nSzczegóły – $1.", "translate-manage-toolong": "Został przekroczony maksymalny czas przetwarzania wynoszący $1 {{PLURAL:$1|sekundę|sekundy|sekund}}.\nAby kontynuować przetwarzanie proszę ponownie przesłać formularz.", "translate-manage-import-summary": "Import nowej wersji z zewnętrznego źródła", + "translate-manage-import-rename-summary": "Zmieniono nazwę w zewnętrznym źródle", "translate-manage-conflict-summary": "Importowanie nowej wersji z zewnętrznego źródła.\nProszę sprawdzić.", "translate-manage-submit": "Wykonaj", "translate-manage-intro-other": "Poniżej znajduje się lista zmian komunikatów w języku $1.\nProszę przejrzeć zmiany i wybrać dla każdego komunikatu operację, którą chcesz dla niego wykonać.\nJeśli polecisz zignorować zmiany, zostaną one nadpisane przy następnym eksporcie.", @@ -260,15 +273,14 @@ "translate-import-err-no-such-file": "Plik $1 nie istnieje lub nie został jeszcze przesłany.", "translate-import-err-stale-group": "Grupa komunikatów, do której należy ten plik, nie istnieje.", "translate-import-err-no-headers": "Plik nie jest prawidłowo sformatowanym plikiem Gettext właściwym dla rozszerzenia Translate – nie udało się odczytać grupy i języka z nagłówków pliku.", - "translate-import-err-warnings": "Plik nie ma prawidłowego formatu.\nSprawdź, czy edytor którym się posługujesz nie usuwa pól msgctxt.\nSzczegóły – $1", "translate-js-summary": "Podsumowanie:", - "translate-js-save": "Zapisz", - "translate-js-next": "Zapisz i otwórz następny", + "translate-js-save": "Opublikuj", + "translate-js-next": "Opublikuj i otwórz następny", "translate-js-skip": "Przejdź do następnego", "translate-js-history": "Historia tłumaczeń", "translate-js-support": "Zadaj pytanie", "translate-js-support-title": "Poproś o pomoc, jeśli brak jest wystarczających informacji, aby przetłumaczyć ten komunikat właściwie.", - "translate-js-support-unsaved-warning": "Masz niezapisane tłumaczenia.", + "translate-js-support-unsaved-warning": "Masz nieopublikowane tłumaczenia.", "translate-gs-pos": "Poz.", "translate-gs-code": "Kod", "translate-gs-continent": "Kontynent", @@ -321,14 +333,14 @@ "tux-status-fuzzy": "Nieaktualne", "tux-status-proofread": "Przejrzane", "tux-status-translated": "Przetłumaczony", - "tux-status-saving": "Zapisywanie...", - "tux-status-unsaved": "Niezapisane", + "tux-status-saving": "Publikowanie…", + "tux-status-unsaved": "Nieopublikowane", "tux-save-unknown-error": "Wystąpił nieznany błąd.", "tux-editor-placeholder": "Twoje tłumaczenie", "tux-editor-editsummary-placeholder": "Opcjonalne podsumowanie", "tux-editor-paste-original-button-label": "Wklej tekst źródłowy", "tux-editor-discard-changes-button-label": "Porzuć zmiany", - "tux-editor-save-button-label": "Zapisz tłumaczenie", + "tux-editor-save-button-label": "Opublikuj tłumaczenie", "tux-editor-skip-button-label": "Przejdź do następnego", "tux-editor-cancel-button-label": "Anuluj", "tux-editor-confirm-button-label": "Potwierdź tłumaczenie", @@ -341,9 +353,9 @@ "tux-editor-need-more-help": "Potrzebujesz pomocy?", "tux-editor-ask-help": "Zapytaj o więcej informacji", "tux-editor-tm-match": "pasuje $1%", - "tux-warnings-more": "{{PLURAL:$1|$1 więcej}}", - "tux-warnings-hide": "ukryj", - "tux-editor-save-failed": "Zapisywanie tłumaczenia nie powiodło się: $1", + "tux-notices-more": "{{PLURAL:$1|$1 więcej}}", + "tux-notices-hide": "ukryj", + "tux-editor-save-failed": "Publikowanie tłumaczenia nie powiodło się: $1", "tux-editor-n-uses": "użyte $1 {{PLURAL:$1|raz|razy}}", "tux-editor-message-desc-more": "Zobacz więcej", "tux-editor-message-desc-less": "Pokaż mniej", @@ -355,10 +367,10 @@ "tux-proofread-action-tooltip": "Oznacz jako przejrzane", "tux-proofread-edit-label": "Edytuj", "tux-editor-page-mode": "Strona", - "tux-editor-outdated-warning": "To tłumaczenie może wymagać aktualizacji.", - "tux-editor-outdated-warning-diff-link": "Pokaż różnice", + "tux-editor-outdated-notice": "To tłumaczenie może wymagać aktualizacji.", + "tux-editor-outdated-notice-diff-link": "Pokaż różnice", "tux-editor-doc-editor-placeholder": "Dokumentacja komunikatu", - "tux-editor-doc-editor-save": "Zapisz dokumentację", + "tux-editor-doc-editor-save": "Opublikuj dokumentację", "tux-editor-doc-editor-cancel": "Anuluj", "tux-messagetable-more-messages": "$1 {{PLURAL:$1|kolejny komunikat|kolejne komunikaty|kolejnych komunikatów}}", "tux-messagetable-loading-messages": "Ładowanie {{PLURAL:$1|komunikatu|komunikatów}}...", @@ -370,7 +382,7 @@ "tux-empty-list-all": "Ta grupa komunikatów jest pusta", "tux-empty-list-all-guide": "Wybierz inną grupę komunikatów do przetłumaczenia", "tux-translate-page-no-such-group": "Ta grupa nie istnieje. Wybierz inną grupę komunikatów.", - "tux-empty-list-translated": "Brak przetłumaczonych wiadomości", + "tux-empty-list-translated": "Brak przetłumaczonych komunikatów", "tux-empty-list-translated-guide": "Możesz pomóc tłumaczyć", "tux-empty-list-translated-action": "Przetłumacz", "tux-empty-no-messages-to-display": "Nie ma komunikatów do wyświetlenia.", @@ -394,12 +406,13 @@ "tux-editor-message-tools-translations": "Wszystkie tłumaczenia", "tux-editor-message-tools-linktothis": "Link do tego komunikatu", "tux-editor-loading": "Ładowanie...", + "tux-editor-loading-failed": "Nie udało się załadować informacji pomocniczych dla tego tłumaczenia: $1", "translate-search-more-languages-info": "$1 {{PLURAL:$1|język|języków}} więcej", "translate-statsbar-tooltip": "$1% przetłumaczono, $2% przejrzano", "translate-statsbar-tooltip-with-fuzzy": "$1% przetłumaczonych, $2% przejrzanych, $3% nieaktualnych", "translate-search-more-groups-info": "$1 więcej {{PLURAL:$1|grupa|grup}}", - "translate-ulsdep-title": "Błąd konfiguracji", - "translate-ulsdep-body": "Rozszerzenie tłumaczeń jest zależne od [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector rozszerzenia Uniwersalny Selektor Języka].", + "translate-syntax-error": "Tłumaczenie zawiera błąd składni", "tux-session-expired": "Nie jesteś już zalogowany. Zaloguj się w osobnej karcie. Alternatywnie, możesz wykonać kopię niezapisanych tłumaczeń, zalogować się i powrócić do tej strony, a następnie ponownie wprowadzić tłumaczenia.", - "tux-nojs": "To narzędzie nie działa, jeżeli nie działa obsługa JavaScript. Jest u ciebie wyłączona, nie działa lub ta przeglądarka nie jest wspierana." + "tux-nojs": "To narzędzie nie działa, jeżeli nie działa obsługa JavaScript. Jest u ciebie wyłączona, nie działa lub ta przeglądarka nie jest wspierana.", + "specialpages-group-translation": "Tłumaczenie" } diff --git a/MLEB/Translate/i18n/core/pms.json b/MLEB/Translate/i18n/core/pms.json index 0274a99e..98676ec7 100644 --- a/MLEB/Translate/i18n/core/pms.json +++ b/MLEB/Translate/i18n/core/pms.json @@ -51,31 +51,11 @@ "translate-use-suggestion": "Rampiassé la tradussion corenta con cost sugeriment.", "translate-edit-nopermission": "It l'has dabzògn dij përmess për volté ij mëssagi.", "translate-edit-askpermission": "Ciamé ël përmess", - "translate-magic-pagename": "Viragi estèis ëd MediaWiki", - "translate-magic-help": "A peul volté j'àlias dle pàgine speciaj, le paròle màgiche e ij nòm ëd jë spassi nominaj.\n\nJ'àlias dle pàgine speciaj e le paròle màgiche a peulo avèj pì che na tradussion.\nLe tradussion a son separà da na vìrgola (,).\nIj nòm ëd jë spassi nominaj a peulo avèj mach na tradussion.\n\nVolté lë spassi nominal ëd discussion dël proget $1 talk a peul esse complicà.\n$1 a l'é rampiassà col nòm dël sit dël proget (pr'esempi {{ns:project_talk}}).\nSe an soa lenga as peul nen rivé a n'espression bon-a sensa cambié ël nòm dël sit, për piasì, ch'as buta an contat con noi dzora a [[Support]].\n\nA venta ch'a sia ant la partìa dij tradutor për podèj salvé le modìfiche.\nLe modìfiche as salvo nen fin ch'a-i da nen un colp ëd rat ansima al boton sì-sota.", - "translate-magic-module": "Mòdol:", - "translate-magic-submit": "Smon-e", - "translate-magic-cm-export": "Esporté", - "translate-magic-nothing-to-export": "A-i é gnente da esporté.", - "translate-magic-cm-to-be": "da esse", - "translate-magic-cm-current": "Corent", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Coment:", - "translate-magic-cm-save": "Salvé", - "translate-magic-cm-updatedusing": "Agiornà ën dovrand [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Salvatagi falì", - "translate-magic-special": "Àlias dle pàgine speciaj", - "translate-magic-words": "Paròle màgiche", - "translate-magic-namespace": "Nòm djë spassi nominaj", - "translate-magic-notsaved": "Soa modìfica a l'é pa stàita salvà!", - "translate-magic-errors": "Për piasì, ch'a rangia {{PLURAL:$1|l'eror|j'eror}} si-dapress ant le tradussion:", - "translate-magic-saved": "Ij sò cambi a son ëstàit salvà con sucess.", - "translate-checks-parameters": "{{PLURAL:$2|Ël paràmetr sota a l'é|Ij paràmetr sota a son}} pa dovrà:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|Ël paràmetr sota a l'é|Ij paràmetr sota a son}} pa conossù:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|Ël paràmetr sì-sota a l'é|Ij paràmetr sì-sota a son}} pa dovrà:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|Ël paràmetr sì-sota a l'é|Ij paràmetr sì-sota a son}} pa conossù:\n$1", "translate-checks-balance": "A-i é un nùmer dëscobi ëd {{PLURAL:$2|paréntesi|paréntesi}}:\n$1", "translate-checks-links": "{{PLURAL:$2|Ël colegament sota a l'é|Ij $2 colegament sota a son}} problemàtich:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|L'anliura dì-dapress a a l'é|Le $2 anliure sì-dapress a son}} mancante:\n$1", - "translate-checks-xhtml": "Për piasì rimpiassa {{PLURAL:$2|la tichëtta|le tichëtte}} sì-dapress con cole giuste:\n$1", "translate-checks-plural": "La definission a deuvra {{PLURAL:}} ma pa la tradussion.", "translate-checks-plural-forms": "{{PLURAL:}} a l'é stàit dovrà ant {{PLURAL:$1|na forma|$1 forme}} ma {{PLURAL:$2|mach na forma a l'é|$2 forme a son}} mantnùe (an gavand le forme 0= e 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} a l'ha dle forme duplicà a la fin. {{PLURAL:$1|fèja|fèja}} a dovrìa esse scrivù com {{PLURAL:$1|fèje}}.", @@ -85,7 +65,6 @@ "translate-checks-parametersnotequal": "Ël conteur dij paràmetr a l'é {{PLURAL:$1|$1}}; a dovrìa esse {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 a va nen bin.", "translate-checks-fudforum-syntax": "Dovré $1 nopà ëd $2 an cost proget-sì.", - "translate-pref-nonewsletter": "Mandeme nen ij mëssagi d'anformassion an pòsta eletrònica", "translate-pref-editassistlang": "Lenghe dl'assistent:", "prefs-translate": "Opsion ëd tradussion", "translate-pref-editassistlang-help": "Lista dij còdes ëd le lenghe separà da na vìrgola.\nLa tradussion d'un mëssagi an ste lenghe-sì a l'é mostrà quand ch'a l'é an camin a fé la tradussion.\nLa lista dle lenghe dë stàndard a dipend da soa lenga.", @@ -213,7 +192,6 @@ "translate-import-err-no-such-file": "L'archivi $1 a esist pa o a l'é pa stàit carià localment.", "translate-import-err-stale-group": "La partìa ëd mëssagi anté ch'a ponta s'archivi a esist pa.", "translate-import-err-no-headers": "L'archivi a l'é pa n'archivi Gettext bin formà ant ël formà dl'estension Translate:\nAs peul pa determinesse la partìa e la lenga da l'antestassion dl'archivi.", - "translate-import-err-warnings": "L'archivi a l'é pa bin formà.\nCh'as sigura che sò editor a gava pa ij camp msgctxt.\nDetaj: $1", "translate-js-summary": "Resumé:", "translate-js-save": "Salva", "translate-js-next": "Salvé e duverté col apress", @@ -278,14 +256,14 @@ "tux-editor-need-more-help": "Dabzògn ëd pi d'agiut?", "tux-editor-ask-help": "Ciama për savèjne ëd pi", "tux-editor-tm-match": "corëspondensa ëd $1%", - "tux-warnings-more": "{{PLURAL:$1|$1 pi}}", - "tux-warnings-hide": "stërma", + "tux-notices-more": "{{PLURAL:$1|$1 pi}}", + "tux-notices-hide": "stërma", "tux-editor-save-failed": "Falì a salvé la tradussion: $1", "tux-editor-message-desc-more": "Visualisé ëd pi", "tux-editor-message-desc-less": "Vëdde ëd men", "tux-editor-clear-translated": "Stërmé coj voltà", - "tux-editor-outdated-warning": "Costa tradussion a peul avèj dabzògn d'esse agiornà.", - "tux-editor-outdated-warning-diff-link": "Smon-e le diferense", + "tux-editor-outdated-notice": "Costa tradussion a peul avèj dabzògn d'esse agiornà.", + "tux-editor-outdated-notice-diff-link": "Smon-e le diferense", "tux-editor-doc-editor-save": "Salvé la documentassion", "tux-editor-doc-editor-cancel": "Scancela", "tux-messagetable-more-messages": "$1 {{PLURAL:$1|mëssagi}} ëd pi", diff --git a/MLEB/Translate/i18n/core/pnb.json b/MLEB/Translate/i18n/core/pnb.json index 598fb352..d6bd8e3e 100644 --- a/MLEB/Translate/i18n/core/pnb.json +++ b/MLEB/Translate/i18n/core/pnb.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Khalid Mahmood", - "Abbas dhothar" + "Abbas dhothar", + "Khalid Mahmood" ] }, "translate": "ترجمعہ", diff --git a/MLEB/Translate/i18n/core/ps.json b/MLEB/Translate/i18n/core/ps.json index 2288f99b..a2314345 100644 --- a/MLEB/Translate/i18n/core/ps.json +++ b/MLEB/Translate/i18n/core/ps.json @@ -2,9 +2,9 @@ "@metadata": { "authors": [ "Ahmed-Najib-Biabani-Ibrahimkhel", - "Waldir", + "Amjad Khan", "Baloch Khan", - "Amjad Khan" + "Waldir" ] }, "translate": "ژباړل", @@ -45,19 +45,6 @@ "translate-edit-tmmatch-source": "د ژباړې د سرچينې متن: $1", "translate-edit-askpermission": "پرېښه اخيستل", "translate-export-form-format": "بڼه", - "translate-magic-help": "تاسې د ځانگړو مخونو مستعار نومونه، کوډگر وييونه او د نوم-تشيال نومونه ژباړلی شی.\n\nد ځانگړو مخونو مستعار نومونه او کوډگر وييونه گڼ شمېر ژباړې لري.\nژباړې د کامې (,) په کارېدلو سره يو له بل نه بېلې شوي.\nنوم-تشيالونه يواځې يوه ژباړه لرلی شي.\n\nد پروژې د خبرو اترو نوم-تشيال په ژباړو کې $1 talk کېدای شي پېچلی شي. $1 د پروژې وېبځي په نوم ځايناستل کېږي (د بېلگې په توگه {{ns:project_talk}}).\nکه چېرته دا ستاسې په ژبه کې شونی نه وي چې د وېبځي د نوم بدلون نه پرته يوه سمه اصطلاح رامېنځ ته شي، نو لطفاً د يوه پروگرامر سره په [[ملاتړ]] کې اړيکه ونيسۍ.\n\nد بدلونونو د خوندي کولو لپاره پکار ده چې تاسې د ژباړنانو په ډله کې اوسۍ.\nبدلونونه به تر هغه وخت پورې نه خوندي کېږي څو چې تاسې لاندې د خوندي کولو تڼۍ نه وي کېښکاږلې.", - "translate-magic-module": "رغبېلگه:", - "translate-magic-submit": "راغونډول", - "translate-magic-cm-export": "صادرول", - "translate-magic-cm-current": "اوسنی", - "translate-magic-cm-original": "آرنی", - "translate-magic-cm-comment": "تبصره:", - "translate-magic-cm-save": "خوندي کول", - "translate-magic-words": "کوډگريز وييونه", - "translate-magic-namespace": "د نوم-تشيالونو نومونه", - "translate-magic-notsaved": "ستاسې سمون خوندي نه شو!", - "translate-magic-saved": "بدلونونه مو په برياليتوب سره خوندي شول.", - "translate-pref-nonewsletter": "برېښليک کې خبرليکونه مه رالېږه", "translate-pref-editassistlang": "مرستيالې ژبې:", "prefs-translate": "د ژباړې خوښنې", "right-translate-manage": "پيغام ډلې مهارول", @@ -195,8 +182,8 @@ "tux-editor-in-other-languages": "په نورو ژبو کې", "tux-editor-need-more-help": "نوره مرسته غواړې؟", "tux-editor-ask-help": "د نورو مالوماتو غوښتنه", - "tux-warnings-more": "{{PLURAL:$1|$1 نور}}", - "tux-warnings-hide": "پټول", + "tux-notices-more": "{{PLURAL:$1|$1 نور}}", + "tux-notices-hide": "پټول", "tux-editor-n-uses": "$1 {{PLURAL:$1|ځل|ځله}} کارېدلی", "tux-editor-message-desc-more": "نور کتل", "tux-editor-message-desc-less": "لږ کتل", @@ -208,8 +195,8 @@ "tux-proofread-action-tooltip": "بياکتل شوي په توگه په نښه کول", "tux-proofread-edit-label": "سمول", "tux-editor-page-mode": "مخ", - "tux-editor-outdated-warning": "دا ژباړه کېدای شي اوسمهالېدنې ته اړتيا ولري.", - "tux-editor-outdated-warning-diff-link": "توپيرونه ښکاره کول", + "tux-editor-outdated-notice": "دا ژباړه کېدای شي اوسمهالېدنې ته اړتيا ولري.", + "tux-editor-outdated-notice-diff-link": "توپيرونه ښکاره کول", "tux-editor-doc-editor-placeholder": "د پيغام لاسوند", "tux-editor-doc-editor-save": "لاسوند خوندي کول", "tux-editor-doc-editor-cancel": "ناگارل", @@ -245,6 +232,5 @@ "translate-search-more-languages-info": "$1 {{PLURAL:$1|بله ژبه|نورې ژبې}}", "translate-statsbar-tooltip": "$1% ژباړل شوي، $2% مخکتل شوي", "translate-statsbar-tooltip-with-fuzzy": "$1% ژباړل شوي، $2% مخکتل شوي, $3% نېټه اوښتي", - "translate-search-more-groups-info": "$1 {{PLURAL:$1|بله ډله|نورې ډلې}}", - "translate-ulsdep-title": "د تنظيمولو تېروتنه" + "translate-search-more-groups-info": "$1 {{PLURAL:$1|بله ډله|نورې ډلې}}" } diff --git a/MLEB/Translate/i18n/core/pt-br.json b/MLEB/Translate/i18n/core/pt-br.json index be800c73..0e1307de 100644 --- a/MLEB/Translate/i18n/core/pt-br.json +++ b/MLEB/Translate/i18n/core/pt-br.json @@ -2,27 +2,28 @@ "@metadata": { "authors": [ "Cainamarques", + "Caio1478", "Dianakc", + "Dr03ramos", + "Eduardo Addad de Oliveira", "Eduardo.mps", + "Fabsouza1", + "Felipe L. Ewald", "Giro720", "Hamilton Abreu", + "He7d3r", "Helder.wiki", "Luckas", "Luckas Blade", "Opraco", - "555", - "Caio1478", - "Fabsouza1", - "He7d3r", - "Eduardo Addad de Oliveira", - "Felipe L. Ewald", - "TheEduGobi" + "TheEduGobi", + 555 ] }, "translate": "Traduzir", "translate-extensionname": "Traduzir", "translate-desc": "[[Special:Translate|Página especial]] para traduzir o MediaWiki e mais", - "translate-fuzzybot-desc": "Esta é uma conta de sistema especial utilizada pela extensão de [https://www.mediawiki.org/wiki/Extension:Translate/pt-br Tradução] do MediaWiki, para manter as traduções.\nEsta conta faz parte do programa MediaWiki e não pertence a nenhum usuário.", + "translate-fuzzybot-desc": "Esta é uma conta de sistema especial utilizada pela extensão de [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate Tradução] do MediaWiki, para manter as traduções.\nEsta conta faz parte do programa MediaWiki e não pertence a nenhum usuário.", "translate-taskui-export-to-file": "Exportar no formato nativo", "translate-taskui-export-as-po": "Exportar para tradução off-line", "translate-taction-translate": "Traduzir", @@ -72,46 +73,42 @@ "translate-export-invalid-format": "Por favor, especifique um formato válido.", "translate-export-not-supported": "A exportação de tradução não é suportada.", "translate-export-format-notsupported": "O formato de exportação especificado não é suportado pelo grupo de mensagens.", - "translate-magic-pagename": "Tradução avançada do MediaWiki", - "translate-magic-help": "Você pode traduzir nomes alternativos de páginas especiais, palavras mágicas e espaços nominais.\n\nOs nomes alternativos de páginas especiais e palavras mágicas podem receber múltiplas traduções.\nAs traduções são separadas por vírgulas (,).\nNomes de espaços nominais podem receber apenas uma tradução.\n\nAs traduções de espaços nominais de discussão de projeto $1 talk podem ser complexas.\n$1 é substituído pelo nome do site (por exemplo, {{ns:project_talk}}).\nSe no seu idioma não é possível formar expressões válidas sem alterar o nome do site, contate-nos em [[Support]].\n\nÉ necessário pertencer ao grupo de tradutores para conseguir salvar as alterações.\nAs alterações não serão salvas até que você clique no botão de salvar ao final do formulário.", - "translate-magic-module": "Módulo:", - "translate-magic-submit": "Obter", - "translate-magic-cm-export": "Exportar", - "translate-magic-nothing-to-export": "Não há o que exportar.", - "translate-magic-cm-to-be": "Alterações", - "translate-magic-cm-current": "Atual", - "translate-magic-cm-original": "No idioma original", - "translate-magic-cm-comment": "Comentário:", - "translate-magic-cm-save": "Salvar", - "translate-magic-cm-updatedusing": "Atualizado usando [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Erro ao salvar", - "translate-magic-special": "Nomes alternativos de páginas especiais", - "translate-magic-words": "Palavras mágicas", - "translate-magic-namespace": "Nomes de espaços nominais", - "translate-magic-notsaved": "Sua edição não foi salva!", - "translate-magic-errors": "Corrija, na tradução, {{PLURAL:$1|o erro a seguir|os erros a seguir}}:", - "translate-magic-saved": "Suas alterações foram salvas.", - "translate-checks-parameters": "{{PLURAL:$2|O parâmetro|Os parâmetros}} a seguir não {{PLURAL:$2|é usado|são usados}}:\n$1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|O parâmetro|Os parâmetros}} a seguir {{PLURAL:$2|é desconhecido|são desconhecidos}}:\n$1", + "translate-export-group-too-large": "O grupo de mensagens escolhido é muito grande. Escolha um grupo de mensagens com menos de $1 {{PLURAL:$1|mensagem|mensagens}} ou entre em contato com o administrador da tradução para obter orientação.", + "translate-checks-parameters": "{{PLURAL:$2|O parâmetro|Os parâmetros}} a seguir não {{PLURAL:$2|é usado|são usados}}:\n$1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|O parâmetro|Os parâmetros}} a seguir {{PLURAL:$2|é desconhecido|são desconhecidos}}:\n$1", "translate-checks-balance": "Há {{PLURAL:$2|um parênteses irregular|$2 parênteses irregulares}}: $1", "translate-checks-links": "{{PLURAL:$2|O link a seguir é problemático|Os $2 links a seguir são problemáticos}}:\n$1", "translate-checks-links-missing": "{{PLURAL:$2|O seguinte link está|Os $2 seguintes links estão}} faltando:\n$1", - "translate-checks-xhtml": "Corrija {{PLURAL:$2|a seguinte tag pela correta|as seguintes tags}}:\n$1", "translate-checks-plural": "A definição usa {{PLURAL:}}, mas a tradução não.", "translate-checks-plural-forms": "A {{PLURAL:}} foi fornecida em {{PLURAL:$1|uma forma|$1 formas}} mas {{PLURAL:$2|apenas uma forma é suportada|$2 formas são suportadas}} (excluindo formas 0= e 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} tem formas duplicadas. {{PLURAL:$1|pastel|pastel}} deve ser escrito como {{PLURAL:$1|pastel}}.", + "translate-checks-gettext-plural-missing": "Esta tradução deve ter {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "Esta mensagem não suporta {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} aceita exatamente $1 {{PLURAL:$1|forma plural|formas plurais}}. Atualmente $2 {{PLURAL:$2|forma plural é|formas plurais são}} dado.", + "translate-checks-smartformat-plural-missing": "Esta tradução deve ter plural na variável $1.", + "translate-checks-smartformat-plural-unsupported": "Esta mensagem não suporta plural na variável $1.", + "translate-checks-smartformat-plural-count": "Número incorreto de formas plurais em $3. Deve ter $1 {{PLURAL:$1|forma plural|formas plurais}}. Atualmente $2 {{PLURAL:$2|forma plural é|formas plurais são}} dado.", + "translate-checks-unicode-plural-missing": "Esta tradução deve ter {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "Esta mensagem não suporta {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "Formas plurais devem ser definidas como $1. Esta tradução contém $2.", "translate-checks-pagename": "Espaço nominal diferente do da definição", "translate-checks-format": "Esta tradução não segue a definição ou tem uma sintaxe inválida: $1", - "translate-checks-escape": "As seguintes sequências de escape podem ter sido acidentais: $1", + "translate-checks-escape": "{{PLURAL:$2|O seguinte carácter de escape pode ter sido acidental|Os seguintes caráteres de escape podem ter sido acidentais}}: $1. {{PLURAL:$4|Um carácter de escape válido seria|Entre os caráteres de escape válidos incluem-se os seguintes:}} $3.", "translate-checks-parametersnotequal": "A contagem de parâmetros detectou {{PLURAL:$1|$1}}. É necessário que sejam {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 está formatado incorretamente.", "translate-checks-fudforum-syntax": "Use, neste projeto, $1 ao invés de $2.", - "translate-pref-nonewsletter": "Não quero receber newsletters por e-mail", + "translate-checks-newline-missing-start": "{{PLURAL:$1|Falta $1 carácter|Faltam $1 caracteres}} de nova linha em falta no início da tradução.", + "translate-checks-newline-missing-end": "{{PLURAL:$1|Falta $1 carácter|Faltam $1 caracteres}} de nova linha em falta no fim da tradução.", + "translate-checks-newline-extra-start": "Há $1 {{PLURAL:$1|carácter|caracteres}} de nova linha a mais no início da tradução.", + "translate-checks-newline-extra-end": "Há $1 {{PLURAL:$1|carácter|caracteres}} de nova linha a mais no fim da tradução.", + "translate-checks-value-not-present": "A tradução deve ser igual a {{PLURAL:$1|1=|um dos seguintes valores:}} $1.", + "translate-checks-replacement": "Use $2 em vez de $1.", "translate-pref-editassistlang": "Idiomas auxiliares:", "prefs-translate": "Opções de tradução", "translate-pref-editassistlang-help": "Liste os idiomas, separados por vírgulas.\nQuando você estiver traduzindo, as traduções nos idiomas aqui definidos também serão exibidas.\nOs idiomas padrão deste recurso variam de acordo com a língua de sua interface.", "translate-pref-editassistlang-bad": "A listagem possui códigos de idioma inválidos:\n$1.", "right-translate": "Editar usando a interface de tradução", + "action-translate": "editar usando a interface de tradução", "right-translate-manage": "Gerenciar grupos de mensagens", "action-translate-manage": "gerenciar grupos de mensagens", "right-translate-import": "Importar traduções offline", @@ -213,17 +210,30 @@ "supportedlanguages-recenttranslations": "traduções recentes", "supportedlanguages-count": "$1 {{PLURAL:$1|idioma|idiomas}} ao todo.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|edição|edições}} - a última edição foi há $3 {{PLURAL:$3|dia|dias}}", + "translate-supportedlanguages-cached": "Esta informação foi armazenada em cache em $1 atrás.", "abusefilter-edit-builder-vars-translate-source-text": "Texto original da unidade de tradução", - "translate-save": "Salvar ($1)", + "abusefilter-edit-builder-vars-translate-target-language": "Idioma alvo para tradução", + "translate-save": "Publicar ($1)", "translate-jssti-add": "Adicionar à lista", "managemessagegroups": "Gerenciamento de grupos de mensagens", "translate-smg-notallowed": "Você não tem os privilégios necessários para executar esta ação.", "translate-smg-nochanges": "Não há alterações a processar.", "translate-smg-submit": "Enviar alterações para processamento", "translate-smg-submitted": "As definições de mensagens foram atualizadas. As alterações estão sendo processadas em segundo plano.", + "translate-smg-submitted-with-failure": "Atualizando {{PLURAL:$1|definição|definições}} de mensagem falhou pelo seguinte {{PLURAL:$1|grupo|grupos}} - $2. $3", + "translate-smg-submitted-others-processing": "As definições de mensagens para outros grupos estão sendo processadas em segundo plano.", "translate-smg-more": "Haverá mais mudanças para processar depois de submeter estas mudanças.", "translate-smg-left": "Mensagem no wiki", "translate-smg-right": "Alterações de entrada", + "translate-smg-rename-select": "Selecionar", + "translate-smg-rename-cancel": "Cancelar", + "translate-smg-rename-search": "Pesquisar mensagem correspondente...", + "translate-smg-rename-select-err": "Selecione uma mensagem para renomear", + "translate-smg-rename-no-msg": "Nenhuma mensagem encontrada.", + "translate-smg-rename-new": "Adicionar como novo...", + "translate-smg-rename-rename": "Adicionar como renomear de...", + "translate-smg-rename-dialog-title": "Selecione renomear correspondente para $1", + "translate-smg-changeset-modified": "O conjunto de alterações foi modificado por outro usuário ou processo. Suas alterações não podem ser publicadas, pois podem substituir as alterações. Atualize a página para ver as alterações mais recentes.", "translate-manage-import-diff": "Mensagem $1 | Ações: $2", "translate-manage-import-new": "Nova mensagem $1", "translate-manage-import-deleted": "Mensagem apagada $1", @@ -231,11 +241,15 @@ "translate-manage-action-conflict": "Importar e marcar traduções para revisão", "translate-manage-action-ignore": "Ignorar", "translate-manage-action-fuzzy": "Importar e marcar traduções para revisão", + "translate-manage-action-rename-fuzzy": "Renomear e traduções difusas", + "translate-manage-action-rename": "Renomear", + "translate-manage-action-ignore-change": "Ignorar alteração de tradução", "translate-manage-nochanges": "Não há alterações nas definições das mensagens deste grupo.", "translate-manage-nochanges-other": "Não houve alterações para este idioma.\nUse o link abaixo para retornar à visualização de detalhes do grupo.", "translate-manage-inconsistent": "Detectada inconsistência na solicitação.\nConfira as alterações e tente novamente.\nDetalhes: $1.", "translate-manage-toolong": "Foi excedido o tempo máximo de $1 {{PLURAL:$1|segundo|segundos}} de processamento.\nReenvie o formulário para continuar processando.", "translate-manage-import-summary": "Importando uma nova versão a partir de fonte externa", + "translate-manage-import-rename-summary": "Renomeado na fonte externa", "translate-manage-conflict-summary": "Importando uma nova versão a partir de fonte externa.\nVerifique-a, por favor.", "translate-manage-submit": "Executar", "translate-manage-intro-other": "Abaixo está a lista de mudanças de tradução no idioma $1.\nPor favor, revise essas mudanças e escolha uma ação para cada atualização.\nSe optar por ignorar as alterações, esta ação é apenas temporária.", @@ -250,15 +264,14 @@ "translate-import-err-no-such-file": "O arquivo $1 não existe ou não foi enviado.", "translate-import-err-stale-group": "O grupo de mensagens a que este arquivo pertence não existe.", "translate-import-err-no-headers": "Este não é um arquivo Gettext compatível com o formato da extensão Translate:\nNão foi possível determinar o grupo e a língua a partir dos cabeçalhos.", - "translate-import-err-warnings": "Arquivo incompatível.\nCertifique-se de que o seu editor não remove os campos msgctxt.\nDetalhes: $1", "translate-js-summary": "Sumário:", - "translate-js-save": "Salvar", - "translate-js-next": "Salvar e abrir a próxima", + "translate-js-save": "Publicar", + "translate-js-next": "Publicar e abrir a próxima", "translate-js-skip": "Pular para próxima", "translate-js-history": "Histórico de traduções", "translate-js-support": "Fazer uma pergunta", "translate-js-support-title": "Peça ajuda se não existir informação suficiente para traduzir esta mensagem de forma correta.", - "translate-js-support-unsaved-warning": "Você possui traduções não salvas.", + "translate-js-support-unsaved-warning": "Você possui traduções não publicadas.", "translate-gs-pos": "Lugar", "translate-gs-code": "Código", "translate-gs-continent": "Continente", @@ -311,14 +324,14 @@ "tux-status-fuzzy": "Desatualizadas", "tux-status-proofread": "Revisada", "tux-status-translated": "Traduzido", - "tux-status-saving": "Salvando…", - "tux-status-unsaved": "Não salvo", + "tux-status-saving": "Publicando…", + "tux-status-unsaved": "Não publicado", "tux-save-unknown-error": "Ocorreu um erro desconhecido.", "tux-editor-placeholder": "Sua tradução", "tux-editor-editsummary-placeholder": "Resumo opcional", "tux-editor-paste-original-button-label": "Colar texto da fonte", "tux-editor-discard-changes-button-label": "Descartar alterações", - "tux-editor-save-button-label": "Salvar tradução", + "tux-editor-save-button-label": "Publicar tradução", "tux-editor-skip-button-label": "Pular para próxima", "tux-editor-cancel-button-label": "Cancelar", "tux-editor-confirm-button-label": "Confirmar tradução", @@ -327,13 +340,13 @@ "tux-editor-edit-desc": "Editar documentação", "tux-editor-add-desc": "Adicionar documentação", "tux-editor-suggestions-title": "Sugestões", - "tux-editor-in-other-languages": "Em outras línguas", + "tux-editor-in-other-languages": "Em outros idiomas", "tux-editor-need-more-help": "Precisa de mais ajuda?", "tux-editor-ask-help": "Peça mais informações", "tux-editor-tm-match": "$1% coincidente", - "tux-warnings-more": "{{PLURAL:$1|$1 mais}}", - "tux-warnings-hide": "ocultar", - "tux-editor-save-failed": "O salvamento da tradução falhou: $1", + "tux-notices-more": "{{PLURAL:$1|$1 mais}}", + "tux-notices-hide": "ocultar", + "tux-editor-save-failed": "A publicação da tradução falhou: $1", "tux-editor-n-uses": "usada $1 {{PLURAL:$1|vez|vezes}}", "tux-editor-message-desc-more": "Ver mais", "tux-editor-message-desc-less": "Ver menos", @@ -345,10 +358,10 @@ "tux-proofread-action-tooltip": "Marcar como revisado", "tux-proofread-edit-label": "Editar", "tux-editor-page-mode": "Página", - "tux-editor-outdated-warning": "Esta tradução pode precisar de atualização.", - "tux-editor-outdated-warning-diff-link": "Mostrar diferenças", + "tux-editor-outdated-notice": "Esta tradução pode precisar de atualização.", + "tux-editor-outdated-notice-diff-link": "Mostrar diferenças", "tux-editor-doc-editor-placeholder": "Documentação da mensagem", - "tux-editor-doc-editor-save": "Salvar documentação", + "tux-editor-doc-editor-save": "Publicar documentação", "tux-editor-doc-editor-cancel": "Cancelar", "tux-messagetable-more-messages": "mais $1 {{PLURAL:$1|mensagem|mensagens}}", "tux-messagetable-loading-messages": "Carregando {{PLURAL:$1|mensagem|mensagens}}.", @@ -384,12 +397,13 @@ "tux-editor-message-tools-translations": "Todas as traduções", "tux-editor-message-tools-linktothis": "Ligação para essa mensagem", "tux-editor-loading": "Carregando...", + "tux-editor-loading-failed": "Falha ao carregar os auxílios de tradução: $1", "translate-search-more-languages-info": "mais $1 {{PLURAL:$1|idioma|idiomas}}", "translate-statsbar-tooltip": "$1% traduzido, $2% revisado", "translate-statsbar-tooltip-with-fuzzy": "$1% traduzido, $2% revisado, $3% desatualizado", "translate-search-more-groups-info": "mais $1 {{PLURAL:$1|grupo|grupos}}", - "translate-ulsdep-title": "Ero de configuração", - "translate-ulsdep-body": "A extensão Translate depende da extensão [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UniversalLanguageSelector Universal Language Selector].", + "translate-syntax-error": "Tradução contém erros de sintaxe", "tux-session-expired": "Você não está logado. Por favor entre em uma aba separada. Alternativamente, faça uma cópia das traduções não salvos, faça o login, retorne a esta página e inserir as traduções novamente.", - "tux-nojs": "Esta ferramenta não funciona sem o JavaScript. Ou o JavaScript está desativado, ou não funcionou, ou este browser não é suportado." + "tux-nojs": "Esta ferramenta não funciona sem o JavaScript. Ou o JavaScript está desativado, ou não funcionou, ou este browser não é suportado.", + "specialpages-group-translation": "Tradução" } diff --git a/MLEB/Translate/i18n/core/pt.json b/MLEB/Translate/i18n/core/pt.json index fc3bb3e1..6cc47840 100644 --- a/MLEB/Translate/i18n/core/pt.json +++ b/MLEB/Translate/i18n/core/pt.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Athena in Wonderland", "Cainamarques", "Crazymadlover", "Fúlvio", @@ -9,16 +10,17 @@ "Lijealso", "Luckas", "Malafaya", + "Mansil alfalb", "SandroHc", - "Waldir", - "555", "Vitorvicentevalente", - "Athena in Wonderland" + "Waldir", + "Waldyrious", + 555 ] }, "translate": "Traduzir", "translate-desc": "[[Special:Translate|Página especial]] para traduzir o MediaWiki e outras aplicações", - "translate-fuzzybot-desc": "Esta é uma conta de sistema especial utilizada pela extensão de [https://www.mediawiki.org/wiki/Extension:Translate/pt Tradução] do MediaWiki, para manter as traduções.\nEsta conta faz parte do programa MediaWiki e não pertence a nenhum utilizador.", + "translate-fuzzybot-desc": "Esta é uma conta de sistema especial usada pela [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Translate extensão Translate] do MediaWiki, que é utilizada para manter as traduções. A conta faz parte do ''software'' MediaWiki e não pertence a nenhum utilizador.", "translate-taskui-export-to-file": "Exportar no formato original", "translate-taskui-export-as-po": "Exportar para tradução ''off-line''", "translate-taction-translate": "Traduzir", @@ -67,46 +69,40 @@ "translate-export-invalid-format": "Por favor, especifique um formato válido.", "translate-export-not-supported": "A exportação de traduções não é suportada.", "translate-export-format-notsupported": "O formato de exportação especificado não é suportado pelo grupo de mensagens.", - "translate-magic-pagename": "Tradução extra do MediaWiki", - "translate-magic-help": "Pode traduzir nomes alternativos de páginas especiais, palavras mágicas e nomes de espaços nominais.\n\nOs nomes alternativos de páginas especiais e as palavras mágicas podem ter várias traduções.\nAs traduções são separadas por vírgulas (,).\nOs nomes de espaços nominais só podem ter uma tradução.\n\nNas traduções de espaços nominais, a partícula $1 talk é especial. $1 é substituído pelo nome do sítio (por exemplo, {{ns:project_talk}}).\nSe não é possível formar na sua língua expressões válidas sem alterar o nome do sítio, por favor, informe-nos em [[Support|Suporte]].\n\nÉ necessário pertencer ao grupo de tradutores para conseguir gravar as alterações.\nAs alterações não serão gravadas até clicar no botão de gravar abaixo.", - "translate-magic-module": "Módulo:", - "translate-magic-submit": "Obter", - "translate-magic-cm-export": "Exportar", - "translate-magic-nothing-to-export": "Não há nada para exportar.", - "translate-magic-cm-to-be": "Novo", - "translate-magic-cm-current": "Atual", - "translate-magic-cm-original": "Original", - "translate-magic-cm-comment": "Comentário:", - "translate-magic-cm-save": "Gravar", - "translate-magic-cm-updatedusing": "Atualizado usando [[Special:AdvancedTranslate|{{int:Translate-magic-pagename}}]]", - "translate-magic-cm-savefailed": "Erro ao gravar", - "translate-magic-special": "Nomes alternativos de páginas especiais", - "translate-magic-words": "Palavras mágicas", - "translate-magic-namespace": "Nomes de domínios", - "translate-magic-notsaved": "A sua edição não foi gravada!", - "translate-magic-errors": "Por favor, corrija {{PLURAL:$1|o seguinte erro|os seguintes erros}} na tradução:", - "translate-magic-saved": "As suas alterações foram gravadas.", - "translate-checks-parameters": "{{PLURAL:$2|O seguinte parâmetro não é usado|Os seguintes parâmetros não são usados}}: $1", - "translate-checks-parameters-unknown": "{{PLURAL:$2|O seguinte parâmetro é desconhecido|Os seguintes parâmetros são desconhecidos}}:\n$1", + "translate-checks-parameters": "{{PLURAL:$2|O seguinte parâmetro não é usado|Os seguintes parâmetros não são usados}}: $1", + "translate-checks-parameters-unknown": "{{PLURAL:$2|O seguinte parâmetro é desconhecido|Os seguintes parâmetros são desconhecidos}}:\n$1", "translate-checks-balance": "Há {{PLURAL:$2|um parêntese irregular|$2 parênteses irregulares}}: $1", "translate-checks-links": "{{PLURAL:$2|A seguinte hiperligação tem|As seguintes $2 hiperligações têm}} problemas: $1", "translate-checks-links-missing": "{{PLURAL:$2|Falta a seguinte hiperligação|Faltam as seguintes $2 hiperligações}}:\n$1", - "translate-checks-xhtml": "Por favor, corrija {{PLURAL:$2|a seguinte marcação|as seguintes marcações}}:\n$1", "translate-checks-plural": "A definição usa {{PLURAL:}}, mas a tradução não.", "translate-checks-plural-forms": "{{PLURAL:}} recebeu {{PLURAL:$1|uma grafia|$1 grafias}}, mas {{PLURAL:$2|só é permitida uma grafia|são permitidas $2 grafias}} (excluindo as formas 0= e 1=).", "translate-checks-plural-dupe": "{{PLURAL:}} tem grafias duplicadas. Quando o singular e o plural têm a mesma grafia, por exemplo em {{PLURAL:$1|URL|URL}} deve usar-se {{PLURAL:$1|URL}}.", + "translate-checks-gettext-plural-missing": "Esta tradução tem de ter {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-unsupported": "Esta mensagem não suporta {{PLURAL:GETTEXT|}}.", + "translate-checks-gettext-plural-count": "{{PLURAL:GETTEXT|}} aceita exatamente $1 {{PLURAL:$1|forma plural|formas plurais}}. Neste momento, {{PLURAL:$2|é fornecida $2 forma plural|são fornecidas $2 formas plurais}}.", + "translate-checks-smartformat-plural-missing": "Esta tradução tem de ter plural na variável $1.", + "translate-checks-smartformat-plural-unsupported": "Esta mensagem não suporta plural na variável $1.", + "translate-checks-smartformat-plural-count": "Número incorreto de formas plurais em $3. Tem de ter $1 {{PLURAL:$1|forma plural|formas plurais}}. Neste momento {{PLURAL:$2|é dada $2 forma plural|são dadas $2 formas plurais}}.", + "translate-checks-unicode-plural-missing": "Esta tradução tem de ter {{PLURAL|}}.", + "translate-checks-unicode-plural-unsupported": "Esta mensagem não suporta {{PLURAL|}}.", + "translate-checks-unicode-plural-invalid": "As formas plurais devem ser definidas como $1. Esta tradução contém $2.", "translate-checks-pagename": "Domínio modificado relativamente à definição", "translate-checks-format": "Esta tradução não segue a definição ou tem uma sintaxe inválida: $1", - "translate-checks-escape": "As seguintes sequências de escape podem ter sido acidentais: $1", + "translate-checks-escape": "{{PLURAL:$2|O seguinte carácter de escape pode ter sido acidental|Os seguintes carateres de escape podem ter sido acidentais}}: $1. {{PLURAL:$4|Um carácter de escape válido seria|Entre os caracteres de escape válidos incluem-se os seguintes:}} $3.", "translate-checks-parametersnotequal": "O número de parâmetros é {{PLURAL:$1|$1}} mas devia ser {{PLURAL:$2|$2}}.", "translate-checks-malformed": "$1 está incorreto.", "translate-checks-fudforum-syntax": "Use $1 em vez de $2 neste projeto.", - "translate-pref-nonewsletter": "Não me enviar ''newsletters'' por correio eletrónico", + "translate-checks-newline-missing-start": "{{PLURAL:$1|Falta $1 carácter|Faltam $1 caracteres}} de nova linha em falta no início da tradução.", + "translate-checks-newline-missing-end": "{{PLURAL:$1|Falta $1 carácter|Faltam $1 caracteres}} de nova linha em falta no fim da tradução.", + "translate-checks-newline-extra-start": "Há $1 {{PLURAL:$1|carácter|caracteres}} de nova linha a mais no início da tradução.", + "translate-checks-newline-extra-end": "Há $1 {{PLURAL:$1|carácter|caracteres}} de nova linha a mais no fim da tradução.", + "translate-checks-value-not-present": "A tradução tem de ser igual a {{PLURAL:$1|1=|um dos seguintes valores: }}$1.", "translate-pref-editassistlang": "Línguas de auxílio:", "prefs-translate": "Opções de tradução", "translate-pref-editassistlang-help": "Lista de códigos de língua separados por vírgulas.\nQuando estiver a traduzir, ser-lhe-ão também apresentadas as traduções para estas línguas.\nA lista por omissão depende da sua língua.", "translate-pref-editassistlang-bad": "Código de língua inválido na lista:\n$1.", "right-translate": "Editar usando a interface de tradução", + "action-translate": "editar usando a interface de tradução", "right-translate-manage": "Gerir grupos de mensagens", "action-translate-manage": "gerir grupos de mensagens", "right-translate-import": "Importar traduções ''off-line''", @@ -207,6 +203,7 @@ "supportedlanguages-count": "$1 {{PLURAL:$1|língua|línguas}} no total.", "supportedlanguages-activity": "$1: $2 {{PLURAL:$2|edição|edições}} - a última edição foi há $3 {{PLURAL:$3|dia|dias}}", "abusefilter-edit-builder-vars-translate-source-text": "Texto de origem da unidade de tradução", + "abusefilter-edit-builder-vars-translate-target-language": "Língua alvo da tradução", "translate-save": "Gravar ($1)", "translate-jssti-add": "Adicionar à lista", "managemessagegroups": "Administração de grupos de mensagens", @@ -214,9 +211,20 @@ "translate-smg-nochanges": "Não há alterações para processar.", "translate-smg-submit": "Enviar alterações para processamento", "translate-smg-submitted": "Foram atualizadas definições de mensagens. As alterações estão a ser processadas em segundo plano.", + "translate-smg-submitted-with-failure": "A atualização {{PLURAL:$1|da definição da mensagem|das definições das mensagens}} falhou para {{PLURAL:$1|o seguinte grupo|os seguintes grupos}}: $2. $3", + "translate-smg-submitted-others-processing": "As definições de mensagens para outros grupos estão a ser processadas em segundo plano.", "translate-smg-more": "Haverá mais mudanças no processo depois de enviar estas alterações.", "translate-smg-left": "Conteúdo da mensagem na wiki", "translate-smg-right": "Alterações recebidas", + "translate-smg-rename-select": "Selecionar", + "translate-smg-rename-cancel": "Cancelar", + "translate-smg-rename-search": "Pesquisar uma mensagem correspondente...", + "translate-smg-rename-select-err": "Selecione uma mensagem para se alterar o nome", + "translate-smg-rename-no-msg": "Não foi encontrada nenhuma mensagem.", + "translate-smg-rename-new": "Adicionar como nova...", + "translate-smg-rename-rename": "Adicionar como alteração do nome de...", + "translate-smg-rename-dialog-title": "Selecionar alteração de nome correspondente para $1", + "translate-smg-changeset-modified": "O conjunto de alterações foi modificado por outro utilizador ou processo. As suas mudanças não podem ser gravadas porque podem substituir as alterações do mesmo. Atualize a página para ver as alterações mais recentes, por favor.", "translate-manage-import-diff": "Mensagem $1 | Ações: $2", "translate-manage-import-new": "Nova mensagem $1", "translate-manage-import-deleted": "Mensagem eliminada $1", @@ -224,11 +232,15 @@ "translate-manage-action-conflict": "Importar e marcar", "translate-manage-action-ignore": "Ignorar", "translate-manage-action-fuzzy": "Importar e marcar para revisão", + "translate-manage-action-rename-fuzzy": "Alterar nome e marcar traduções como \"fuzzy\"", + "translate-manage-action-rename": "Alterar nome", + "translate-manage-action-ignore-change": "Ignorar alteração da tradução", "translate-manage-nochanges": "Não há alterações nas definições das mensagens deste grupo.", "translate-manage-nochanges-other": "Não houve alterações para esta língua.\nUse a hiperligação abaixo para voltar aos detalhes do grupo.", "translate-manage-inconsistent": "Foi detetada uma inconsistência no pedido.\nPor favor, verifique se houve alterações e tente novamente.\nDetalhes: $1.", "translate-manage-toolong": "O tempo máximo de $1 {{PLURAL:$1|segundo|segundos}} de processamento foi excedido.\nPor favor, reenvie o formulário para continuar o processamento.", "translate-manage-import-summary": "Importando uma nova versão de fonte externa", + "translate-manage-import-rename-summary": "Nome alterado na fonte externa", "translate-manage-conflict-summary": "Importando uma nova versão de fonte externa.\nVerifique-a, por favor.", "translate-manage-submit": "Executar", "translate-manage-intro-other": "Abaixo está uma lista de alterações de traduções na língua $1.\nPor favor, reveja as alterações e escolha a ação que quer tomar para cada atualização.\nSe escolher ignorar as alterações, esta ação será somente temporária.", @@ -243,7 +255,6 @@ "translate-import-err-no-such-file": "O ficheiro $1 não existe ou não foi carregado localmente.", "translate-import-err-stale-group": "O grupo de mensagens a que este ficheiro pertence não existe.", "translate-import-err-no-headers": "O ficheiro não é um ficheiro Gettext válido, com o formato da extensão Translate:\nNão foi possível determinar o grupo e a língua a partir dos cabeçalhos.", - "translate-import-err-warnings": "Este ficheiro não é válido.\nCertifique-se de que o seu editor não remove os campos msgctxt.\nDetalhes: $1", "translate-js-summary": "Resumo:", "translate-js-save": "Gravar", "translate-js-next": "Gravar e abrir a seguinte", @@ -324,8 +335,8 @@ "tux-editor-need-more-help": "Precisa de mais ajuda?", "tux-editor-ask-help": "Peça mais informação", "tux-editor-tm-match": "$1% coincidente", - "tux-warnings-more": "{{PLURAL:$1|mais $1}}", - "tux-warnings-hide": "ocultar", + "tux-notices-more": "{{PLURAL:$1|mais $1}}", + "tux-notices-hide": "ocultar", "tux-editor-save-failed": "Erro ao gravar a tradução: $1", "tux-editor-n-uses": "usada $1 {{PLURAL:$1|vez|vezes}}", "tux-editor-message-desc-more": "Ver mais", @@ -338,8 +349,8 @@ "tux-proofread-action-tooltip": "Marcar como revista", "tux-proofread-edit-label": "Editar", "tux-editor-page-mode": "Página", - "tux-editor-outdated-warning": "Esta tradução pode precisar de ser atualizada.", - "tux-editor-outdated-warning-diff-link": "Mostrar diferenças", + "tux-editor-outdated-notice": "Esta tradução pode precisar de ser atualizada.", + "tux-editor-outdated-notice-diff-link": "Mostrar diferenças", "tux-editor-doc-editor-placeholder": "Documentação da mensagem", "tux-editor-doc-editor-save": "Gravar documentação", "tux-editor-doc-editor-cancel": "Cancelar", @@ -377,12 +388,13 @@ "tux-editor-message-tools-translations": "Todas as traduções", "tux-editor-message-tools-linktothis": "Hiperligação para esta mensagem", "tux-editor-loading": "A carregar…", + "tux-editor-loading-failed": "Não foi possível carregar os auxiliares de tradução: $1", "translate-search-more-languages-info": "mais $1 {{PLURAL:$1|língua|línguas}}", "translate-statsbar-tooltip": "$1% traduzidas, $2% revistas", "translate-statsbar-tooltip-with-fuzzy": "$1% traduzidas, $2% revistas, $3% desatualizadas", "translate-search-more-groups-info": "mais $1 {{PLURAL:$1|grupo|grupos}}", - "translate-ulsdep-title": "Erro de configuração", - "translate-ulsdep-body": "A extensão de tradução depende da [https://www.mediawiki.org/wiki/Extension:UniversalLanguageSelector extensão Universal Language Selector].", + "translate-syntax-error": "A tradução contém erros de sintaxe", "tux-session-expired": "Não está mais autenticado. Por favor, inicie a sessão num outro separador. Em alternativa, faça uma cópia das traduções que não foram gravadas, inicie sessão e regresse a esta página para inserir as suas traduções novamente.", - "tux-nojs": "Esta ferramenta não funciona sem o JavaScript. Ou o JavaScript está desativado, ou não funcionou, ou este browser não é suportado." + "tux-nojs": "Esta ferramenta não funciona sem o JavaScript. Ou o JavaScript está desativado, ou não funcionou, ou este browser não é suportado.", + "specialpages-group-translation": "Tradução" } diff --git a/MLEB/Translate/i18n/core/qqq.json b/MLEB/Translate/i18n/core/qqq.json index e23357be..1ae1b264 100644 --- a/MLEB/Translate/i18n/core/qqq.json +++ b/MLEB/Translate/i18n/core/qqq.json @@ -15,7 +15,11 @@ "Jon Harald Søby", "Kghbln", "Lejonel", + "Liuxinyu970226", "Lloffiwr", + "Mar(c)", + "MarcoAurelio", + "Matma Rex", "McDutchie", "Meno25", "Mormegil", @@ -23,23 +27,20 @@ "Nike", "Purodha", "Raymond", + "Robby", "SPQRobin", "Sanbec", "Shirayuki", "Siebrand", + "Tacsipacsi", "The Evil IP address", "Toliño", "Umherirrender", + "Verdy p", "Wizardist", "פוילישער", "아라", - "555", - "Liuxinyu970226", - "Tacsipacsi", - "Matma Rex", - "Robby", - "Mar(c)", - "MarcoAurelio" + 555 ] }, "translate": "{{doc-special|Translate}}\nIt is the verb \"to translate\".\n{{Identical|Translate}}", @@ -95,46 +96,42 @@ "translate-export-invalid-format": "Validation error shown on [[Special:ExportTranslations]].", "translate-export-not-supported": "Validation error shown on [[Special:ExportTranslations]]", "translate-export-format-notsupported": "Validation error shown on [[Special:ExportTranslations]]", - "translate-magic-pagename": "\"Extended\" can as well be understood as \"Extra\" or \"Special\" or \"Advanced\". It refers to the translations of pieces of text such as names of namespaces or special pages, which are not part of normal message or wiki page translation.\n\nUsed in {{msg-mw|Translate-magic-cm-updatedusing}}.", - "translate-magic-help": "Description of [[Special:AdvancedTranslate]].\n\n$1 is not a parameter; appears as is.", - "translate-magic-module": "Label on drop-down box on [[Special:AdvancedTranslate]].\n{{Identical|Module}}", - "translate-magic-submit": "Button text in [[Special:AdvancedTranslate]].\n\n{{Identical|Fetch}}", - "translate-magic-cm-export": "Button text in [[Special:AdvancedTranslate]].\n\n{{Identical|Export}}", - "translate-magic-nothing-to-export": "Error message on [[Special:AdvancedTranslate]].", - "translate-magic-cm-to-be": "Column header on [[Special:AdvancedTranslate]].", - "translate-magic-cm-current": "Column header on [[Special:AdvancedTranslate]].\n\n{{Identical|Current}}", - "translate-magic-cm-original": "Column header on [[Special:AdvancedTranslate]].\n{{Identical|Original}}", - "translate-magic-cm-comment": "On [[Special:AdvancedTranslate]].\n\n{{Identical|Comment}}", - "translate-magic-cm-save": "Button text on [[Special:AdvancedTranslate]].\n\n{{Identical|Save}}", - "translate-magic-cm-updatedusing": "Used as comment(?).\n\nRefers to {{msg-mw|Translate-magic-pagename}}.", - "translate-magic-cm-savefailed": "Error message on [[Special:AdvancedTranslate]] when saving changes fails.", - "translate-magic-special": "Appears on [[Special:AdvancedTranslate]]", - "translate-magic-words": "Used as title and as an item on ' ) .attr( { type: 'button', - 'class': 'tp-aggregategroup-update' + class: 'tp-aggregategroup-update' } ) .val( mw.msg( 'tpt-aggregategroup-update' ) ); $cancelButton = $( '' ) .attr( { type: 'button', - 'class': 'tp-aggregategroup-update-cancel' + class: 'tp-aggregategroup-update-cancel' } ) .val( mw.msg( 'tpt-aggregategroup-update-cancel' ) ); $divEdit = $( '
' ) @@ -287,16 +286,19 @@ .text( mw.msg( 'tpt-aggregategroup-edit-name' ) ) ) .append( $( '' ) .attr( { - 'class': 'tp-aggregategroup-edit-name', + class: 'tp-aggregategroup-edit-name', id: 'tp-agg-name' } ) .val( aggregateGroupName ) ) - .append( $( '