Merge "Fix off-by-one error in the "previous 200" link in category listings with...
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 24 Jul 2014 02:12:29 +0000 (02:12 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 24 Jul 2014 02:12:29 +0000 (02:12 +0000)
393 files changed:
.jscsrc
CREDITS
RELEASE-NOTES-1.24
api.php
docs/hooks.txt
img_auth.php
includes/AutoLoader.php
includes/Block.php
includes/CacheHelper.php [deleted file]
includes/CategoryViewer.php
includes/Collation.php
includes/DefaultSettings.php
includes/EditPage.php
includes/Export.php
includes/Fallback.php
includes/GlobalFunctions.php
includes/Html.php
includes/HtmlFormatter.php
includes/Import.php
includes/Linker.php
includes/MediaWiki.php
includes/OutputPage.php
includes/Pager.php
includes/Preferences.php
includes/ProtectionForm.php
includes/Revision.php
includes/Skin.php
includes/SkinTemplate.php
includes/StubObject.php
includes/Title.php
includes/User.php
includes/UserMailer.php
includes/WebRequest.php
includes/WebStart.php
includes/actions/CachedAction.php
includes/actions/HistoryAction.php
includes/actions/RawAction.php
includes/api/ApiExpandTemplates.php
includes/api/ApiParse.php
includes/api/ApiQuery.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryFilearchive.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryWatchlist.php
includes/api/ApiResult.php
includes/cache/CacheHelper.php [new file with mode: 0644]
includes/cache/LocalisationCache.php
includes/config/ConfigException.php
includes/content/ContentHandler.php
includes/context/ContextSource.php
includes/context/RequestContext.php
includes/db/Database.php
includes/db/DatabasePostgres.php
includes/db/DatabaseSqlite.php
includes/db/LoadBalancer.php
includes/deferred/LinksUpdate.php
includes/deferred/ViewCountUpdate.php
includes/diff/DifferenceEngine.php
includes/filebackend/FSFileBackend.php
includes/filebackend/FileBackendStore.php
includes/filebackend/lockmanager/DBLockManager.php
includes/filerepo/file/LocalFile.php
includes/htmlform/HTMLSelectField.php
includes/installer/DatabaseUpdater.php
includes/installer/Installer.php
includes/installer/LocalSettingsGenerator.php
includes/installer/MysqlInstaller.php
includes/installer/MysqlUpdater.php
includes/installer/PostgresInstaller.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteUpdater.php
includes/installer/WebInstaller.php
includes/installer/WebInstallerOutput.php
includes/installer/WebInstallerPage.php
includes/installer/i18n/be-tarask.json
includes/installer/i18n/br.json
includes/installer/i18n/ca.json
includes/installer/i18n/cs.json
includes/installer/i18n/de.json
includes/installer/i18n/en.json
includes/installer/i18n/es.json
includes/installer/i18n/fa.json
includes/installer/i18n/fi.json
includes/installer/i18n/fr.json
includes/installer/i18n/he.json
includes/installer/i18n/ia.json
includes/installer/i18n/ja.json
includes/installer/i18n/lb.json
includes/installer/i18n/mk.json
includes/installer/i18n/ms.json
includes/installer/i18n/pl.json
includes/installer/i18n/pt.json
includes/installer/i18n/qqq.json
includes/installer/i18n/ru.json
includes/installer/i18n/uk.json
includes/installer/i18n/zh-hans.json
includes/installer/i18n/zh-hant.json
includes/jobqueue/Job.php
includes/jobqueue/aggregator/JobQueueAggregatorRedis.php
includes/logging/LogEventsList.php
includes/logging/LogPager.php
includes/media/Bitmap.php
includes/media/DjVu.php
includes/media/Exif.php
includes/media/XCF.php
includes/normal/UtfNormalBench.php
includes/normal/UtfNormalMemStress.php
includes/objectcache/BagOStuff.php
includes/objectcache/SqlBagOStuff.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/parser/Parser.php
includes/poolcounter/PoolCounterRedis.php
includes/profiler/Profiler.php
includes/resourceloader/DerivativeResourceLoaderContext.php [new file with mode: 0644]
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderContext.php
includes/resourceloader/ResourceLoaderModule.php
includes/site/MediaWikiSite.php
includes/site/Site.php
includes/site/SiteList.php
includes/site/SiteSQLStore.php
includes/specialpage/ChangesListSpecialPage.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialActiveusers.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialContributions.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialListusers.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialMyLanguage.php [new file with mode: 0644]
includes/specials/SpecialPageLanguage.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRevisiondelete.php
includes/specials/SpecialTrackingCategories.php
includes/specials/SpecialWantedfiles.php
includes/specials/SpecialWatchlist.php
includes/specials/SpecialWhatlinkshere.php
includes/utils/Cdb.php
includes/utils/CdbPHP.php
includes/utils/IP.php
includes/utils/MWCryptHKDF.php
includes/utils/MWCryptRand.php
includes/utils/MWFunction.php
includes/utils/StringUtils.php
includes/utils/UIDGenerator.php
includes/utils/ZipDirectoryReader.php
languages/Language.php
languages/i18n/ar.json
languages/i18n/arq.json
languages/i18n/ast.json
languages/i18n/az.json
languages/i18n/ba.json
languages/i18n/bar.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/br.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/gan-hant.json
languages/i18n/gl.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hr.json
languages/i18n/ia.json
languages/i18n/ilo.json
languages/i18n/is.json
languages/i18n/ja.json
languages/i18n/kk-cyrl.json
languages/i18n/ko.json
languages/i18n/ku-latn.json
languages/i18n/lb.json
languages/i18n/lrc.json
languages/i18n/lv.json
languages/i18n/lzz.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/ms.json
languages/i18n/mt.json
languages/i18n/mzn.json
languages/i18n/nb.json
languages/i18n/nl.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/qu.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/th.json
languages/i18n/uk.json
languages/i18n/vi.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesCrh_cyrl.php
languages/messages/MessagesCrh_latn.php
languages/messages/MessagesCs.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEn.php
languages/messages/MessagesFa.php
languages/messages/MessagesFrp.php
languages/messages/MessagesHsb.php
languages/messages/MessagesKk_arab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKk_latn.php
languages/messages/MessagesKsh.php
languages/messages/MessagesLzh.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesOs.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSv.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTt_latn.php
maintenance/README
maintenance/archives/patch-il_from_namespace.sql [new file with mode: 0644]
maintenance/archives/patch-pl_from_namespace.sql [new file with mode: 0644]
maintenance/archives/patch-tl_from_namespace.sql [new file with mode: 0644]
maintenance/compareParserCache.php
maintenance/convertLinks.php
maintenance/dictionary/mediawiki.dic
maintenance/doMaintenance.php
maintenance/edit.php
maintenance/eraseArchivedFile.php
maintenance/fixDoubleRedirects.php
maintenance/importDump.php
maintenance/importTextFile.php [deleted file]
maintenance/language/generateCollationData.php
maintenance/mctest.php
maintenance/nextJobDB.php [deleted file]
maintenance/populateBacklinkNamespace.php [new file with mode: 0644]
maintenance/postgres/tables.sql
maintenance/purgeChangedPages.php
maintenance/resources/update-oojs-ui.sh
maintenance/resources/update-oojs.sh
maintenance/runJobs.php
maintenance/tables.sql
mw-config/index.php
resources/Resources.php
resources/lib/oojs-ui/i18n/ast.json
resources/lib/oojs-ui/i18n/es.json
resources/lib/oojs-ui/i18n/ilo.json
resources/lib/oojs-ui/i18n/ms.json
resources/lib/oojs-ui/i18n/om.json
resources/lib/oojs-ui/i18n/qqq.json
resources/lib/oojs-ui/i18n/yi.json
resources/lib/oojs-ui/i18n/zh-hant.json
resources/lib/oojs-ui/oojs-ui-agora.css
resources/lib/oojs-ui/oojs-ui-agora.rtl.css [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-apex.css
resources/lib/oojs-ui/oojs-ui-apex.rtl.css [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/oojs-ui.rtl.css [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui.svg.css
resources/lib/oojs-ui/oojs-ui.svg.rtl.css [new file with mode: 0644]
resources/lib/oojs/oojs.jquery.js [new file with mode: 0644]
resources/lib/oojs/oojs.js [deleted file]
resources/src/jquery.ui-themes/vector/images/ui-bg_flat_15_cd0a0a_40x100.png
resources/src/jquery.ui-themes/vector/images/ui-bg_flat_70_000000_40x100.png
resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png
resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-hard_80_d7ebf9_1x100.png
resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-soft_100_e4f1fb_1x100.png
resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-soft_100_ffffff_1x100.png
resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-soft_25_ffef8f_1x100.png
resources/src/jquery.ui-themes/vector/images/ui-bg_inset-hard_100_f0f0f0_1x100.png
resources/src/jquery.ui-themes/vector/images/ui-icons_2694e8_256x240.png
resources/src/jquery.ui-themes/vector/images/ui-icons_2e83ff_256x240.png
resources/src/jquery.ui-themes/vector/images/ui-icons_3d80b3_256x240.png
resources/src/jquery.ui-themes/vector/images/ui-icons_666666_256x240.png
resources/src/jquery.ui-themes/vector/images/ui-icons_72a7cf_256x240.png
resources/src/jquery.ui-themes/vector/images/ui-icons_ffffff_256x240.png
resources/src/jquery.ui-themes/vector/jquery.ui.accordion.css
resources/src/jquery.ui-themes/vector/jquery.ui.autocomplete.css
resources/src/jquery.ui-themes/vector/jquery.ui.button.css
resources/src/jquery.ui-themes/vector/jquery.ui.core.css
resources/src/jquery.ui-themes/vector/jquery.ui.datepicker.css
resources/src/jquery.ui-themes/vector/jquery.ui.dialog.css
resources/src/jquery.ui-themes/vector/jquery.ui.menu.css [new file with mode: 0644]
resources/src/jquery.ui-themes/vector/jquery.ui.progressbar.css
resources/src/jquery.ui-themes/vector/jquery.ui.resizable.css
resources/src/jquery.ui-themes/vector/jquery.ui.selectable.css
resources/src/jquery.ui-themes/vector/jquery.ui.slider.css
resources/src/jquery.ui-themes/vector/jquery.ui.spinner.css [new file with mode: 0644]
resources/src/jquery.ui-themes/vector/jquery.ui.tabs.css
resources/src/jquery.ui-themes/vector/jquery.ui.theme.css
resources/src/jquery.ui-themes/vector/jquery.ui.tooltip.css [new file with mode: 0644]
resources/src/jquery/jquery.accessKeyLabel.js
resources/src/jquery/jquery.colorUtil.js
resources/src/jquery/jquery.makeCollapsible.js
resources/src/mediawiki.language/languages/la.js
resources/src/mediawiki.less/mediawiki.ui/mixins.less
resources/src/mediawiki.less/mediawiki.ui/variables.less
resources/src/mediawiki.page/mediawiki.page.ready.js
resources/src/mediawiki.ui/components/buttons.less
resources/src/mediawiki/mediawiki.feedback.js
resources/src/mediawiki/mediawiki.htmlform.js
resources/src/mediawiki/mediawiki.js
resources/src/mediawiki/mediawiki.user.js
skins/MonoBook/i18n/ast.json
skins/MonoBook/i18n/da.json
skins/MonoBook/i18n/hi.json
skins/MonoBook/i18n/ilo.json [new file with mode: 0644]
skins/MonoBook/i18n/ms.json
skins/MonoBook/main.css
skins/Vector/VectorTemplate.php
skins/Vector/components/tabs.less
skins/Vector/i18n/ast.json
skins/Vector/i18n/bs.json
skins/Vector/i18n/da.json
skins/Vector/i18n/hi.json
skins/Vector/i18n/ilo.json
skins/Vector/i18n/lv.json
skins/Vector/i18n/ms.json
skins/Vector/i18n/mt.json
skins/common/config.css
skins/common/shared.css
skins/common/wikibits.js
tests/frontend/Gruntfile.js
tests/frontend/package.json
tests/parser/parserTest.inc
tests/parser/parserTests.txt
tests/phpunit/LessFileCompilationTest.php
tests/phpunit/includes/ArrayUtilsTest.php
tests/phpunit/includes/EditPageTest.php
tests/phpunit/includes/GlobalFunctions/GlobalTest.php
tests/phpunit/includes/GlobalFunctions/GlobalWithDBTest.php
tests/phpunit/includes/GlobalFunctions/wfAssembleUrlTest.php
tests/phpunit/includes/GlobalFunctions/wfBCP47Test.php
tests/phpunit/includes/GlobalFunctions/wfBaseConvertTest.php
tests/phpunit/includes/GlobalFunctions/wfBaseNameTest.php
tests/phpunit/includes/GlobalFunctions/wfExpandUrlTest.php
tests/phpunit/includes/GlobalFunctions/wfGetCallerTest.php
tests/phpunit/includes/GlobalFunctions/wfParseUrlTest.php
tests/phpunit/includes/GlobalFunctions/wfRemoveDotSegmentsTest.php
tests/phpunit/includes/GlobalFunctions/wfShellExecTest.php [new file with mode: 0644]
tests/phpunit/includes/GlobalFunctions/wfShorthandToIntegerTest.php
tests/phpunit/includes/GlobalFunctions/wfTimestampTest.php
tests/phpunit/includes/GlobalFunctions/wfUrlencodeTest.php
tests/phpunit/includes/HtmlFormatterTest.php
tests/phpunit/includes/ImportTest.php
tests/phpunit/includes/LinksUpdateTest.php
tests/phpunit/includes/MWNamespaceTest.php
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/SanitizerValidateEmailTest.php
tests/phpunit/includes/StatusTest.php
tests/phpunit/includes/TimeAdjustTest.php
tests/phpunit/includes/TitleTest.php
tests/phpunit/includes/WebRequestTest.php
tests/phpunit/includes/actions/ActionTest.php [new file with mode: 0644]
tests/phpunit/includes/config/ConfigFactoryTest.php
tests/phpunit/includes/db/DatabaseSqliteTest.php
tests/phpunit/includes/debug/MWDebugTest.php
tests/phpunit/includes/diff/ArrayDiffFormatterTest.php
tests/phpunit/includes/filerepo/RepoGroupTest.php
tests/phpunit/includes/filerepo/file/FileTest.php
tests/phpunit/includes/filerepo/files/FileTest.php [deleted file]
tests/phpunit/includes/media/MediaWikiMediaTestCase.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/parser/ParserMethodsTest.php
tests/phpunit/includes/poolcounter/PoolCounterTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
tests/phpunit/includes/specials/SpecialListFilesTest.php
tests/phpunit/includes/specials/SpecialMyLanguageTest.php [new file with mode: 0644]
tests/phpunit/includes/title/MediaWikiPageLinkRendererTest.php
tests/phpunit/includes/title/MediaWikiTitleCodecTest.php
tests/phpunit/languages/LanguageTest.php
tests/phpunit/maintenance/DumpTestCase.php
tests/phpunit/maintenance/fetchTextTest.php
tests/phpunit/phpunit.php
tests/phpunit/suites/UploadFromUrlTestSuite.php
thumb.php

diff --git a/.jscsrc b/.jscsrc
index 0da9aa5..b9139b2 100644 (file)
--- a/.jscsrc
+++ b/.jscsrc
@@ -1,94 +1,10 @@
 {
-    "requireCurlyBraces": [
-        "if",
-        "else",
-        "for",
-        "while",
-        "do",
-        "try",
-        "catch"
-    ],
-    "requireSpaceAfterKeywords": [
-        "if",
-        "else",
-        "for",
-        "while",
-        "do",
-        "switch",
-        "return",
-        "try",
-        "catch",
-        "function"
-    ],
-    "requireSpaceBeforeBlockStatements": true,
-    "requireParenthesesAroundIIFE": true,
-    "requireSpacesInConditionalExpression": true,
-    "disallowSpacesInNamedFunctionExpression": {
-        "beforeOpeningRoundBrace": true
-    },
-    "disallowSpacesInFunctionDeclaration": {
-        "beforeOpeningRoundBrace": true
-    },
-    "requireMultipleVarDecl": "onevar",
-    "requireBlocksOnNewline": 1,
-    "disallowEmptyBlocks": true,
-    "requireSpacesInsideObjectBrackets": "all",
-    "disallowSpaceAfterObjectKeys": true,
-    "requireCommaBeforeLineBreak": true,
-    "disallowSpaceAfterPrefixUnaryOperators": [
-        "++",
-        "--",
-        "+",
-        "-",
-        "~",
-        "!"
-    ],
-    "disallowSpaceBeforePostfixUnaryOperators": [
-        "++",
-        "--"
-    ],
-    "disallowSpaceBeforeBinaryOperators": [
-        ","
-    ],
-    "requireSpaceBeforeBinaryOperators": [
-        "=",
-        "+",
-        "-",
-        "/",
-        "*",
-        "==",
-        "===",
-        "!=",
-        "!==",
-        ">",
-        ">=",
-        "<",
-        "<="
-    ],
-    "requireSpaceAfterBinaryOperators": [
-        "=",
-        "+",
-        "-",
-        "/",
-        "*",
-        "==",
-        "===",
-        "!=",
-        "!==",
-        ">",
-        ">=",
-        "<",
-        "<="
-    ],
-    "disallowKeywords": [ "with" ],
-    "disallowMultipleLineBreaks": true,
-    "validateLineBreaks": "LF",
-    "validateQuoteMarks": "'",
-    "disallowMixedSpacesAndTabs": true,
-    "disallowTrailingWhitespace": true,
-    "disallowTrailingComma": true,
-    "requireLineFeedAtFileEnd": true,
-    "requireCapitalizedConstructors": true,
-    "requireDotNotation": true,
-    "disallowYodaConditions": true
+       "preset": "wikimedia",
+
+       "disallowDanglingUnderscores": null,
+       "disallowKeywordsOnNewLine": null,
+       "disallowQuotedKeysInObjects": null,
+       "requireCamelCaseOrUpperCaseIdentifiers": null,
+       "requireSpacesInsideArrayBrackets": null,
+       "validateIndentation": null
 }
diff --git a/CREDITS b/CREDITS
index cf222a0..fde6b78 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -157,6 +157,7 @@ following names for their contribution to the product.
 * Kim Hyun-Joon
 * Lee Worden
 * Lejonel
+* Leon Liesener
 * liangent
 * Louperivois
 * Lucas Garczewski
index 9abbb77..2e9aaaf 100644 (file)
@@ -12,6 +12,11 @@ production.
 * MediaWiki will no longer run if register_globals is enabled. It has been
   deprecated for 5 years now, and was removed in PHP 5.4. For more information
   about why, see <https://www.mediawiki.org/wiki/register_globals>.
+* MediaWiki now requires PHP's iconv extension. openSUSE users may need to
+  install the php5-iconv package. Users of other systems may need to add
+  extension=iconv.so to php.ini or recompile PHP without --without-iconv.
+* MediaWiki will no longer function if magic quotes are enabled. It has
+  been deprecated for 5 years now, and was removed in PHP 5.4.
 * The server's canonical hostname is available as $wgServerName, which is
   exposed in both mw.config and ApiQuerySiteInfo.
 * Introduced $wgPagePropsHaveSortkey as a backwards-compatibility switch,
@@ -116,6 +121,18 @@ production.
 * Upgrade Sinon.JS to 1.10.3.
 * Added the es5-shim polyfill for older or non-compliant javascript engines.
 * Upgrade jQuery Cookie to v1.2.0.
+* (bug 20476) Add a "viewsuppressed" user right to be able to view
+  suppressed content but not suppress it ("suppressrevision" right).
+* Added a new hook, "OutputPageScriptsForBottomQueue", to add modules to the
+  bottom queue that should be requested in a dedicated <script> request.
+* (bug 66440) The MediaWiki web installer will now allow you to choose the skins
+  to enable (from the ones included in download tarball) and decide which one
+  should be the default.
+* (bug 68085) Links of the form [[localInterwikiPrefix:languageCode:pageTitle]],
+  where localInterwikiPrefix is a member of the $wgLocalInterwikis array, will
+  no longer be displayed in the sidebar when $wgInterwikiMagic is true.
+* New special page, MyLanguages, to redirect users to subpages with localised
+  versions of a page. (Integrated from Extension:Translate)
 
 === Bug fixes in 1.24 ===
 * (bug 49116) Footer copyright notice is now always displayed in user language
@@ -142,6 +159,7 @@ production.
 * (bug 65757) MSSQL: Update script drops unnamed constraints to be prepared
   for future updates. Because it's doing so heuristically, it may fail or drop
   wrong constraints.
+* (bug 67870) wfShellExec() cuts off stdout at multiples of 8192 bytes.
 
 === Web API changes in 1.24 ===
 * action=parse API now supports prop=modules, which provides the list of
@@ -248,6 +266,13 @@ changes to languages because of Bugzilla reports.
 * Removed Action::execute().
 * Removed AjaxAddScript which has been obsolete since ResourceLoader and
   is unused by any modern extension.
+* Removed maintenance/nextJobDB.php; no longer in use.
+* Removed global function wfViewPrevNext(). (deprecated since 1.19)
+* Removed global function xmlsafe() from Export.php. (moved to OAIRepo extension)
+* Removed Title::userCanRead(). (deprecated since 1.19)
+* Removed maintenance script importTextFile.php. Use edit.php script instead.
+* A _from_namespace field has been added to the templatelinks, pagelinks,
+  and filelinks tables. Run update.php to apply this change to the schema.
 
 ==== Renamed classes ====
 * CLDRPluralRuleConverter_Expression to CLDRPluralRuleConverterExpression
@@ -292,6 +317,9 @@ changes to languages because of Bugzilla reports.
 * WatchlistEditor - Use SpecialEditWatchlist directly
 * FormatExif - Use FormatMetadata directly
 * RevertFileAction - Use RevertAction directly
+* HistoryPage - Use HistoryAction directly
+* RawPage - Use RawAction directly
+* StubContLang - Use Language::factory() instead
 
 == Compatibility ==
 
diff --git a/api.php b/api.php
index e8a911e..80abc35 100644 (file)
--- a/api.php
+++ b/api.php
@@ -104,7 +104,7 @@ if ( $wgAPIRequestLog ) {
                wfTimestamp( TS_MW ),
                $endtime - $starttime,
                $wgRequest->getIP(),
-               $_SERVER['HTTP_USER_AGENT']
+               $wgRequest->getHeader( 'User-agent' )
        );
        $items[] = $wgRequest->wasPosted() ? 'POST' : 'GET';
        if ( $processor ) {
index 065c7d3..3ee1221 100644 (file)
@@ -1871,6 +1871,14 @@ $categories: associative array, keys are category names, values are category
 $links: array, intended to hold the result. Must be an associative array with
   category types as keys and arrays of HTML links as values.
 
+'OutputPageScriptsForBottomQueue': Allows adding modules to the bottom queue
+that should be requested in a dedicated <script> request. In most cases you'll
+want to use OutputPage::addModules instead (from another hook) which allows
+ResourceLoader to better combine requests and allows the module load requests
+to be cached better. Typically you'd only use this for user-specific modules.
+$out: OutputPage instance
+&$modules: Array of modules names to add to the bottom queue
+
 'PageContentInsertComplete': After a new article is created.
 $wikiPage: WikiPage created
 $user: User creating the article
index 6f449c6..55f17ac 100644 (file)
@@ -114,7 +114,7 @@ function wfImageAuthMain() {
        // be under a folder that has the source file name.
        if ( $zone === 'thumb' || $zone === 'transcoded' ) {
                $name = wfBaseName( dirname( $path ) );
-               $filename = $repo->getZonePath( $zone ) . substr( $path, strlen( "/".$zone ) );
+               $filename = $repo->getZonePath( $zone ) . substr( $path, strlen( "/" . $zone ) );
                // Check to see if the file exists
                if ( !$repo->fileExists( $filename ) ) {
                        wfForbidden( 'img-auth-accessdenied', 'img-auth-nofile', $filename );
index 016886b..413fce8 100644 (file)
@@ -38,7 +38,6 @@ $wgAutoloadLocalClasses = array(
        'Autopromote' => 'includes/Autopromote.php',
        'BaseTemplate' => 'includes/SkinTemplate.php',
        'Block' => 'includes/Block.php',
-       'CacheHelper' => 'includes/CacheHelper.php',
        'Category' => 'includes/Category.php',
        'Categoryfinder' => 'includes/Categoryfinder.php',
        'CategoryViewer' => 'includes/CategoryViewer.php',
@@ -46,6 +45,7 @@ $wgAutoloadLocalClasses = array(
        'ChannelFeed' => 'includes/Feed.php',
        'Collation' => 'includes/Collation.php',
        'CollationCkb' => 'includes/Collation.php',
+       'CollationEt' => 'includes/Collation.php',
        'ConcatenatedGzipHistoryBlob' => 'includes/HistoryBlob.php',
        'Cookie' => 'includes/Cookie.php',
        'CookieJar' => 'includes/Cookie.php',
@@ -106,7 +106,6 @@ $wgAutoloadLocalClasses = array(
        'HTMLTextAreaField' => 'includes/htmlform/HTMLTextAreaField.php',
        'HTMLTextField' => 'includes/htmlform/HTMLTextField.php',
        'Http' => 'includes/HttpFunctions.php',
-       'ICacheHelper' => 'includes/CacheHelper.php',
        'IcuCollation' => 'includes/Collation.php',
        'IdentityCollation' => 'includes/Collation.php',
        'ImportStreamSource' => 'includes/Import.php',
@@ -166,7 +165,6 @@ $wgAutoloadLocalClasses = array(
        'Status' => 'includes/Status.php',
        'StreamFile' => 'includes/StreamFile.php',
        'StringPrefixSearch' => 'includes/PrefixSearch.php',
-       'StubContLang' => 'includes/StubObject.php',
        'StubObject' => 'includes/StubObject.php',
        'StubUserLang' => 'includes/StubObject.php',
        'TablePager' => 'includes/Pager.php',
@@ -207,14 +205,12 @@ $wgAutoloadLocalClasses = array(
        'FormlessAction' => 'includes/actions/FormlessAction.php',
        'FormAction' => 'includes/actions/FormAction.php',
        'HistoryAction' => 'includes/actions/HistoryAction.php',
-       'HistoryPage' => 'includes/actions/HistoryAction.php',
        'HistoryPager' => 'includes/actions/HistoryAction.php',
        'InfoAction' => 'includes/actions/InfoAction.php',
        'MarkpatrolledAction' => 'includes/actions/MarkpatrolledAction.php',
        'ProtectAction' => 'includes/actions/ProtectAction.php',
        'PurgeAction' => 'includes/actions/PurgeAction.php',
        'RawAction' => 'includes/actions/RawAction.php',
-       'RawPage' => 'includes/actions/RawAction.php',
        'RenderAction' => 'includes/actions/RenderAction.php',
        'RevertAction' => 'includes/actions/RevertAction.php',
        'RevisiondeleteAction' => 'includes/actions/RevisiondeleteAction.php',
@@ -336,6 +332,7 @@ $wgAutoloadLocalClasses = array(
        # includes/cache
        'BacklinkCache' => 'includes/cache/BacklinkCache.php',
        'CacheDependency' => 'includes/cache/CacheDependency.php',
+       'CacheHelper' => 'includes/cache/CacheHelper.php',
        'ConstantDependency' => 'includes/cache/CacheDependency.php',
        'DependencyWrapper' => 'includes/cache/CacheDependency.php',
        'FileCacheBase' => 'includes/cache/FileCacheBase.php',
@@ -343,6 +340,7 @@ $wgAutoloadLocalClasses = array(
        'GenderCache' => 'includes/cache/GenderCache.php',
        'GlobalDependency' => 'includes/cache/CacheDependency.php',
        'HTMLFileCache' => 'includes/cache/HTMLFileCache.php',
+       'ICacheHelper' => 'includes/cache/CacheHelper.php',
        'LCStore' => 'includes/cache/LocalisationCache.php',
        'LCStoreAccel' => 'includes/cache/LocalisationCache.php',
        'LCStoreCDB' => 'includes/cache/LocalisationCache.php',
@@ -853,6 +851,8 @@ $wgAutoloadLocalClasses = array(
        'MachineReadableRCFeedFormatter' => 'includes/rcfeed/MachineReadableRCFeedFormatter.php',
 
        # includes/resourceloader
+       'DerivativeResourceLoaderContext' =>
+               'includes/resourceloader/DerivativeResourceLoaderContext.php',
        'ResourceLoader' => 'includes/resourceloader/ResourceLoader.php',
        'ResourceLoaderContext' => 'includes/resourceloader/ResourceLoaderContext.php',
        'ResourceLoaderFileModule' => 'includes/resourceloader/ResourceLoaderFileModule.php',
@@ -1010,6 +1010,7 @@ $wgAutoloadLocalClasses = array(
        'SpecialLog' => 'includes/specials/SpecialLog.php',
        'SpecialMergeHistory' => 'includes/specials/SpecialMergeHistory.php',
        'SpecialMycontributions' => 'includes/specials/SpecialMyRedirectPages.php',
+       'SpecialMyLanguage' => 'includes/specials/SpecialMyLanguage.php',
        'SpecialMypage' => 'includes/specials/SpecialMyRedirectPages.php',
        'SpecialMytalk' => 'includes/specials/SpecialMyRedirectPages.php',
        'SpecialMyuploads' => 'includes/specials/SpecialMyRedirectPages.php',
@@ -1148,6 +1149,7 @@ $wgAutoloadLocalClasses = array(
        'FixExtLinksProtocolRelative' => 'maintenance/fixExtLinksProtocolRelative.php',
        'LoggedUpdateMaintenance' => 'maintenance/Maintenance.php',
        'Maintenance' => 'maintenance/Maintenance.php',
+       'PopulateBacklinkNamespace' => 'maintenance/populateBacklinkNamespace.php',
        'PopulateCategory' => 'maintenance/populateCategory.php',
        'PopulateImageSha1' => 'maintenance/populateImageSha1.php',
        'PopulateFilearchiveSha1' => 'maintenance/populateFilearchiveSha1.php',
index c393a79..aaabec9 100644 (file)
@@ -347,7 +347,7 @@ class Block {
        /**
         * Given a database row from the ipblocks table, initialize
         * member variables
-        * @param ResultWrapper $row A row from the ipblocks table
+        * @param stdClass $row A row from the ipblocks table
         */
        protected function initFromRow( $row ) {
                $this->setTarget( $row->ipb_address );
@@ -382,7 +382,7 @@ class Block {
 
        /**
         * Create a new Block object from a database row
-        * @param ResultWrapper $row Row from the ipblocks table
+        * @param stdClass $row Row from the ipblocks table
         * @return Block
         */
        public static function newFromRow( $row ) {
@@ -967,7 +967,7 @@ class Block {
 
                $method = __METHOD__;
                $dbw = wfGetDB( DB_MASTER );
-               $dbw->onTransactionIdle( function() use ( $dbw, $method ) {
+               $dbw->onTransactionIdle( function () use ( $dbw, $method ) {
                        $dbw->delete( 'ipblocks',
                                array( 'ipb_expiry < ' . $dbw->addQuotes( $dbw->timestamp() ) ), $method );
                } );
@@ -1123,7 +1123,7 @@ class Block {
 
                // Sort hard blocks before soft ones and secondarily sort blocks
                // that disable account creation before those that don't.
-               usort( $blocks, function( Block $a, Block $b ) {
+               usort( $blocks, function ( Block $a, Block $b ) {
                        $aWeight = (int)$a->isHardblock() . (int)$a->prevents( 'createaccount' );
                        $bWeight = (int)$b->isHardblock() . (int)$b->prevents( 'createaccount' );
                        return strcmp( $bWeight, $aWeight ); // highest weight first
diff --git a/includes/CacheHelper.php b/includes/CacheHelper.php
deleted file mode 100644 (file)
index 695eac3..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-<?php
-/**
- * Cache of various elements in a single cache entry.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @license GNU GPL v2 or later
- * @author Jeroen De Dauw < jeroendedauw@gmail.com >
- */
-
-/**
- * Interface for all classes implementing CacheHelper functionality.
- *
- * @since 1.20
- */
-interface ICacheHelper {
-       /**
-        * Sets if the cache should be enabled or not.
-        *
-        * @since 1.20
-        * @param bool $cacheEnabled
-        */
-       function setCacheEnabled( $cacheEnabled );
-
-       /**
-        * Initializes the caching.
-        * Should be called before the first time anything is added via addCachedHTML.
-        *
-        * @since 1.20
-        *
-        * @param int|null $cacheExpiry Sets the cache expiry, either ttl in seconds or unix timestamp.
-        * @param bool|null $cacheEnabled Sets if the cache should be enabled or not.
-        */
-       function startCache( $cacheExpiry = null, $cacheEnabled = null );
-
-       /**
-        * Get a cached value if available or compute it if not and then cache it if possible.
-        * The provided $computeFunction is only called when the computation needs to happen
-        * and should return a result value. $args are arguments that will be passed to the
-        * compute function when called.
-        *
-        * @since 1.20
-        *
-        * @param {function} $computeFunction
-        * @param array|mixed $args
-        * @param string|null $key
-        *
-        * @return mixed
-        */
-       function getCachedValue( $computeFunction, $args = array(), $key = null );
-
-       /**
-        * Saves the HTML to the cache in case it got recomputed.
-        * Should be called after the last time anything is added via addCachedHTML.
-        *
-        * @since 1.20
-        */
-       function saveCache();
-
-       /**
-        * Sets the time to live for the cache, in seconds or a unix timestamp
-        * indicating the point of expiry...
-        *
-        * @since 1.20
-        *
-        * @param int $cacheExpiry
-        */
-       function setExpiry( $cacheExpiry );
-}
-
-/**
- * Helper class for caching various elements in a single cache entry.
- *
- * To get a cached value or compute it, use getCachedValue like this:
- * $this->getCachedValue( $callback );
- *
- * To add HTML that should be cached, use addCachedHTML like this:
- * $this->addCachedHTML( $callback );
- *
- * The callback function is only called when needed, so do all your expensive
- * computations here. This function should returns the HTML to be cached.
- * It should not add anything to the PageOutput object!
- *
- * Before the first addCachedHTML call, you should call $this->startCache();
- * After adding the last HTML that should be cached, call $this->saveCache();
- *
- * @since 1.20
- */
-class CacheHelper implements ICacheHelper {
-       /**
-        * The time to live for the cache, in seconds or a unix timestamp indicating the point of expiry.
-        *
-        * @since 1.20
-        * @var int
-        */
-       protected $cacheExpiry = 3600;
-
-       /**
-        * List of HTML chunks to be cached (if !hasCached) or that where cached (of hasCached).
-        * If not cached already, then the newly computed chunks are added here,
-        * if it as cached already, chunks are removed from this list as they are needed.
-        *
-        * @since 1.20
-        * @var array
-        */
-       protected $cachedChunks;
-
-       /**
-        * Indicates if the to be cached content was already cached.
-        * Null if this information is not available yet.
-        *
-        * @since 1.20
-        * @var bool|null
-        */
-       protected $hasCached = null;
-
-       /**
-        * If the cache is enabled or not.
-        *
-        * @since 1.20
-        * @var bool
-        */
-       protected $cacheEnabled = true;
-
-       /**
-        * Function that gets called when initialization is done.
-        *
-        * @since 1.20
-        * @var callable
-        */
-       protected $onInitHandler = false;
-
-       /**
-        * Elements to build a cache key with.
-        *
-        * @since 1.20
-        * @var array
-        */
-       protected $cacheKey = array();
-
-       /**
-        * Sets if the cache should be enabled or not.
-        *
-        * @since 1.20
-        * @param bool $cacheEnabled
-        */
-       public function setCacheEnabled( $cacheEnabled ) {
-               $this->cacheEnabled = $cacheEnabled;
-       }
-
-       /**
-        * Initializes the caching.
-        * Should be called before the first time anything is added via addCachedHTML.
-        *
-        * @since 1.20
-        *
-        * @param int|null $cacheExpiry Sets the cache expiry, either ttl in seconds or unix timestamp.
-        * @param bool|null $cacheEnabled Sets if the cache should be enabled or not.
-        */
-       public function startCache( $cacheExpiry = null, $cacheEnabled = null ) {
-               if ( is_null( $this->hasCached ) ) {
-                       if ( !is_null( $cacheExpiry ) ) {
-                               $this->cacheExpiry = $cacheExpiry;
-                       }
-
-                       if ( !is_null( $cacheEnabled ) ) {
-                               $this->setCacheEnabled( $cacheEnabled );
-                       }
-
-                       $this->initCaching();
-               }
-       }
-
-       /**
-        * Returns a message that notifies the user he/she is looking at
-        * a cached version of the page, including a refresh link.
-        *
-        * @since 1.20
-        *
-        * @param IContextSource $context
-        * @param bool $includePurgeLink
-        *
-        * @return string
-        */
-       public function getCachedNotice( IContextSource $context, $includePurgeLink = true ) {
-               if ( $this->cacheExpiry < 86400 * 3650 ) {
-                       $message = $context->msg(
-                               'cachedspecial-viewing-cached-ttl',
-                               $context->getLanguage()->formatDuration( $this->cacheExpiry )
-                       )->escaped();
-               } else {
-                       $message = $context->msg(
-                               'cachedspecial-viewing-cached-ts'
-                       )->escaped();
-               }
-
-               if ( $includePurgeLink ) {
-                       $refreshArgs = $context->getRequest()->getQueryValues();
-                       unset( $refreshArgs['title'] );
-                       $refreshArgs['action'] = 'purge';
-
-                       $subPage = $context->getTitle()->getFullText();
-                       $subPage = explode( '/', $subPage, 2 );
-                       $subPage = count( $subPage ) > 1 ? $subPage[1] : false;
-
-                       $message .= ' ' . Linker::link(
-                               $context->getTitle( $subPage ),
-                               $context->msg( 'cachedspecial-refresh-now' )->escaped(),
-                               array(),
-                               $refreshArgs
-                       );
-               }
-
-               return $message;
-       }
-
-       /**
-        * Initializes the caching if not already done so.
-        * Should be called before any of the caching functionality is used.
-        *
-        * @since 1.20
-        */
-       protected function initCaching() {
-               if ( $this->cacheEnabled && is_null( $this->hasCached ) ) {
-                       $cachedChunks = wfGetCache( CACHE_ANYTHING )->get( $this->getCacheKeyString() );
-
-                       $this->hasCached = is_array( $cachedChunks );
-                       $this->cachedChunks = $this->hasCached ? $cachedChunks : array();
-
-                       if ( $this->onInitHandler !== false ) {
-                               call_user_func( $this->onInitHandler, $this->hasCached );
-                       }
-               }
-       }
-
-       /**
-        * Get a cached value if available or compute it if not and then cache it if possible.
-        * The provided $computeFunction is only called when the computation needs to happen
-        * and should return a result value. $args are arguments that will be passed to the
-        * compute function when called.
-        *
-        * @since 1.20
-        *
-        * @param {function} $computeFunction
-        * @param array|mixed $args
-        * @param string|null $key
-        *
-        * @return mixed
-        */
-       public function getCachedValue( $computeFunction, $args = array(), $key = null ) {
-               $this->initCaching();
-
-               if ( $this->cacheEnabled && $this->hasCached ) {
-                       $value = null;
-
-                       if ( is_null( $key ) ) {
-                               $itemKey = array_keys( array_slice( $this->cachedChunks, 0, 1 ) );
-                               $itemKey = array_shift( $itemKey );
-
-                               if ( !is_integer( $itemKey ) ) {
-                                       wfWarn( "Attempted to get item with non-numeric key while " .
-                                               "the next item in the queue has a key ($itemKey) in " . __METHOD__ );
-                               } elseif ( is_null( $itemKey ) ) {
-                                       wfWarn( "Attempted to get an item while the queue is empty in " . __METHOD__ );
-                               } else {
-                                       $value = array_shift( $this->cachedChunks );
-                               }
-                       } else {
-                               if ( array_key_exists( $key, $this->cachedChunks ) ) {
-                                       $value = $this->cachedChunks[$key];
-                                       unset( $this->cachedChunks[$key] );
-                               } else {
-                                       wfWarn( "There is no item with key '$key' in this->cachedChunks in " . __METHOD__ );
-                               }
-                       }
-               } else {
-                       if ( !is_array( $args ) ) {
-                               $args = array( $args );
-                       }
-
-                       $value = call_user_func_array( $computeFunction, $args );
-
-                       if ( $this->cacheEnabled ) {
-                               if ( is_null( $key ) ) {
-                                       $this->cachedChunks[] = $value;
-                               } else {
-                                       $this->cachedChunks[$key] = $value;
-                               }
-                       }
-               }
-
-               return $value;
-       }
-
-       /**
-        * Saves the HTML to the cache in case it got recomputed.
-        * Should be called after the last time anything is added via addCachedHTML.
-        *
-        * @since 1.20
-        */
-       public function saveCache() {
-               if ( $this->cacheEnabled && $this->hasCached === false && !empty( $this->cachedChunks ) ) {
-                       wfGetCache( CACHE_ANYTHING )->set(
-                               $this->getCacheKeyString(),
-                               $this->cachedChunks,
-                               $this->cacheExpiry
-                       );
-               }
-       }
-
-       /**
-        * Sets the time to live for the cache, in seconds or a unix timestamp
-        * indicating the point of expiry...
-        *
-        * @since 1.20
-        *
-        * @param int $cacheExpiry
-        */
-       public function setExpiry( $cacheExpiry ) {
-               $this->cacheExpiry = $cacheExpiry;
-       }
-
-       /**
-        * Returns the cache key to use to cache this page's HTML output.
-        * Is constructed from the special page name and language code.
-        *
-        * @since 1.20
-        *
-        * @return string
-        * @throws MWException
-        */
-       protected function getCacheKeyString() {
-               if ( $this->cacheKey === array() ) {
-                       throw new MWException( 'No cache key set, so cannot obtain or save the CacheHelper values.' );
-               }
-
-               return call_user_func_array( 'wfMemcKey', $this->cacheKey );
-       }
-
-       /**
-        * Sets the cache key that should be used.
-        *
-        * @since 1.20
-        *
-        * @param array $cacheKey
-        */
-       public function setCacheKey( array $cacheKey ) {
-               $this->cacheKey = $cacheKey;
-       }
-
-       /**
-        * Rebuild the content, even if it's already cached.
-        * This effectively has the same effect as purging the cache,
-        * since it will be overridden with the new value on the next request.
-        *
-        * @since 1.20
-        */
-       public function rebuildOnDemand() {
-               $this->hasCached = false;
-       }
-
-       /**
-        * Sets a function that gets called when initialization of the cache is done.
-        *
-        * @since 1.20
-        *
-        * @param callable $handlerFunction
-        */
-       public function setOnInitializedHandler( $handlerFunction ) {
-               $this->onInitHandler = $handlerFunction;
-       }
-}
index 1c7e604..22eb3d1 100644 (file)
@@ -730,7 +730,7 @@ class CategoryViewer extends ContextSource {
                        // quick due to the small number of entries.
                        $totalcnt = $rescnt;
                        $category = $this->cat;
-                       wfGetDB( DB_MASTER )->onTransactionIdle( function() use ( $category ) {
+                       wfGetDB( DB_MASTER )->onTransactionIdle( function () use ( $category ) {
                                $category->refreshCounts();
                        } );
                } else {
index 71adb09..106c161 100644 (file)
@@ -49,6 +49,8 @@ abstract class Collation {
                                return new IcuCollation( 'root' );
                        case 'xx-uca-ckb':
                                return new CollationCkb;
+                       case 'xx-uca-et':
+                               return new CollationEt;
                        default:
                                $match = array();
                                if ( preg_match( '/^uca-([a-z@=-]+)$/', $collationName, $match ) ) {
@@ -253,7 +255,7 @@ class IcuCollation extends Collation {
                'el' => array(),
                'eo' => array( "Ĉ", "Ĝ", "Ĥ", "Ĵ", "Ŝ", "Ŭ" ),
                'es' => array( "Ñ" ),
-               'et' => array( "Š", "Ž", "Õ", "Ä", "Ö", "Ü" ),
+               'et' => array( "Š", "Ž", "Õ", "Ä", "Ö", "Ü", "W" ), // added W for CollationEt (xx-uca-et)
                'eu' => array( "Ñ" ),
                'fo' => array( "Á", "Ð", "Í", "Ó", "Ú", "Ý", "Æ", "Ø", "Å" ),
                'fur' => array( "À", "Á", "Â", "È", "Ì", "Ò", "Ù" ),
@@ -365,7 +367,12 @@ class IcuCollation extends Collation {
                }
 
                $cache = wfGetCache( CACHE_ANYTHING );
-               $cacheKey = wfMemcKey( 'first-letters', $this->locale, $this->digitTransformLanguage->getCode() );
+               $cacheKey = wfMemcKey(
+                       'first-letters',
+                       $this->locale,
+                       $this->digitTransformLanguage->getCode(),
+                       self::getICUVersion()
+               );
                $cacheEntry = $cache->get( $cacheKey );
 
                if ( $cacheEntry && isset( $cacheEntry['version'] )
@@ -597,3 +604,42 @@ class CollationCkb extends IcuCollation {
                $this->digitTransformLanguage = Language::factory( 'ckb' );
        }
 }
+
+/**
+ * Workaround for incorrect collation of Estonian language ('et') in ICU (bug 54168).
+ *
+ * 'W' and 'V' should not be considered the same letter for the purposes of collation in modern
+ * Estonian. We work around this by replacing 'W' and 'w' with 'ᴡ' U+1D21 'LATIN LETTER SMALL
+ * CAPITAL W' for sortkey generation, which is collated like 'W' and is not tailored to have the
+ * same primary weight as 'V' in Estonian.
+ */
+class CollationEt extends IcuCollation {
+       function __construct() {
+               parent::__construct( 'et' );
+       }
+
+       private static function mangle( $string ) {
+               return str_replace(
+                       array( 'w', 'W' ),
+                       'ᴡ', // U+1D21 'LATIN LETTER SMALL CAPITAL W'
+                       $string
+               );
+       }
+
+       private static function unmangle( $string ) {
+               // Casing data is lost…
+               return str_replace(
+                       'ᴡ', // U+1D21 'LATIN LETTER SMALL CAPITAL W'
+                       'W',
+                       $string
+               );
+       }
+
+       function getSortKey( $string ) {
+               return parent::getSortKey( self::mangle( $string ) );
+       }
+
+       function getFirstLetter( $string ) {
+               return self::unmangle( parent::getFirstLetter( self::mangle( $string ) ) );
+       }
+}
index 7c81294..3ef59b3 100644 (file)
@@ -1224,9 +1224,10 @@ $wgThumbLimits = array(
 $wgThumbnailBuckets = null;
 
 /**
- * When using thumbnail buckets as defined above, this sets the minimum distance with the bucket
- * above the requested size. The distance represents how pany extra pixels of width the bucket needs
- * in order to be used as the reference for a given thumbnail. For example, with the following buckets:
+ * When using thumbnail buckets as defined above, this sets the minimum distance to the bucket
+ * above the requested size. The distance represents how many extra pixels of width the bucket
+ * needs in order to be used as the reference for a given thumbnail. For example, with the
+ * following buckets:
  *
  * $wgThumbnailBuckets = array ( 128, 256, 512 );
  *
@@ -1237,7 +1238,7 @@ $wgThumbnailBuckets = null;
  * If we want to render a thumbnail of width 220px, the 512px bucket will be used,
  * because 220 + 50 = 270 and the closest bucket bigger than 270px is 512.
  */
-$wgThumbnailMinimumBucketDistance = 0;
+$wgThumbnailMinimumBucketDistance = 50;
 
 /**
  * Default parameters for the "<gallery>" tag
@@ -2959,24 +2960,20 @@ $wgValidateAllHtml = false;
 /**
  * Default skin, for new users and anonymous visitors. Registered users may
  * change this to any one of the other available skins in their preferences.
- * This has to be completely lowercase; see the "skins" directory for the list
- * of available skins.
  */
 $wgDefaultSkin = 'vector';
 
 /**
- * Specify the name of a skin that should not be presented in the list of
- * available skins.  Use for blacklisting a skin which you do not want to
- * remove from the .../skins/ directory
- *
- * @deprecated since 1.23; use $wgSkipSkins instead
+ * Specify the names of skins that should not be presented in the list of
+ * available skins in user preferences. If you want to remove a skin entirely,
+ * remove it from the skins/ directory and its entry from LocalSettings.php.
  */
-$wgSkipSkin = '';
+$wgSkipSkins = array();
 
 /**
- * Array for more like $wgSkipSkin.
+ * @deprecated since 1.23; use $wgSkipSkins instead
  */
-$wgSkipSkins = array();
+$wgSkipSkin = '';
 
 /**
  * Allow user Javascript page?
@@ -4399,6 +4396,8 @@ $wgGroupPermissions['bureaucrat']['noratelimit'] = true;
 #$wgGroupPermissions['suppress']['hideuser'] = true;
 // To hide revisions/log items from users and Sysops
 #$wgGroupPermissions['suppress']['suppressrevision'] = true;
+// To view revisions/log items hidden from users and Sysops
+#$wgGroupPermissions['suppress']['viewsuppressed'] = true;
 // For private suppression log access
 #$wgGroupPermissions['suppress']['suppressionlog'] = true;
 
@@ -4997,6 +4996,13 @@ $wgDebugDBTransactions = false;
  */
 $wgDebugDumpSql = false;
 
+/**
+ * Trim logged SQL queries to this many bytes. Set 0/false/null to do no
+ * trimming.
+ * @since 1.24
+ */
+$wgDebugDumpSqlLength = 500;
+
 /**
  * Map of string log group names to log destinations.
  *
@@ -6046,13 +6052,12 @@ $wgParserOutputHooks = array();
 $wgEnableParserLimitReporting = true;
 
 /**
- * List of valid skin names.
+ * List of valid skin names
+ *
  * The key should be the name in all lower case, the value should be a properly
- * cased name for the skin. This value will be prefixed with "Skin" to create the
- * class name of the skin to load, and if the skin's class cannot be found through
- * the autoloader it will be used to load a .php file by that name in the skins directory.
- * The default skins will be added later, by Skin::getSkinNames(). Use
- * Skin::getSkinNames() as an accessor if you wish to have access to the full list.
+ * cased name for the skin. This value will be prefixed with "Skin" to create
+ * the class name of the skin to load. Use Skin::getSkinNames() as an accessor
+ * if you wish to have access to the full list.
  */
 $wgValidSkinNames = array();
 
@@ -6881,12 +6886,12 @@ $wgShellLocale = 'en_US.utf8';
  */
 
 /**
- * Timeout for HTTP requests done internally
+ * Timeout for HTTP requests done internally, in seconds.
  */
 $wgHTTPTimeout = 25;
 
 /**
- * Timeout for Asynchronous (background) HTTP requests
+ * Timeout for Asynchronous (background) HTTP requests, in seconds.
  */
 $wgAsyncHTTPTimeout = 25;
 
@@ -7121,6 +7126,14 @@ $wgHKDFAlgorithm = 'sha256';
  */
 $wgPageLanguageUseDB = false;
 
+/**
+ * Enable use of the *_namespace fields of the pagelinks, redirect, and templatelinks tables.
+ * Set this only if the fields are fully populated. This may be removed in 1.25.
+ * @var bool
+ * @since 1.24
+ */
+$wgUseLinkNamespaceDBFields = false;
+
 /**
  * For really cool vim folding this needs to be at the end:
  * vim: foldmarker=@{,@} foldmethod=marker
index 88c49a7..9d512ab 100644 (file)
@@ -66,11 +66,6 @@ class EditPage {
         */
        const AS_CONTENT_TOO_BIG = 216;
 
-       /**
-        * Status: User cannot edit? (not used)
-        */
-       const AS_USER_CANNOT_EDIT = 217;
-
        /**
         * Status: this anonymous user is not allowed to edit this page
         */
@@ -129,11 +124,6 @@ class EditPage {
         */
        const AS_MAX_ARTICLE_SIZE_EXCEEDED = 229;
 
-       /**
-        * not used
-        */
-       const AS_OK = 230;
-
        /**
         * Status: WikiPage::doEdit() was unsuccessful
         */
@@ -2017,7 +2007,7 @@ class EditPage {
 
                        // Do this in its own transaction to reduce contention...
                        $dbw = wfGetDB( DB_MASTER );
-                       $dbw->onTransactionIdle( function() use ( $dbw, $title, $watch, $wgUser, $fname ) {
+                       $dbw->onTransactionIdle( function () use ( $dbw, $title, $watch, $wgUser, $fname ) {
                                $dbw->begin( $fname );
                                WatchAction::doWatchOrUnwatch( $watch, $title, $wgUser );
                                $dbw->commit( $fname );
index 21fcd5a..e57fe7f 100644 (file)
@@ -1552,23 +1552,3 @@ class DumpMultiWriter {
                return $filenames;
        }
 }
-
-/**
- * @param string $string
- * @return string
- * @todo FIXME: Only used in OAI extension. Move over there.
- */
-function xmlsafe( $string ) {
-       wfProfileIn( __FUNCTION__ );
-
-       /**
-        * The page may contain old data which has not been properly normalized.
-        * Invalid UTF-8 sequences or forbidden control characters will make our
-        * XML output invalid, so be sure to strip them out.
-        */
-       $string = UtfNormal::cleanUp( $string );
-
-       $string = htmlspecialchars( $string );
-       wfProfileOut( __FUNCTION__ );
-       return $string;
-}
index e38bdf1..c4b22f5 100644 (file)
  */
 class Fallback {
 
-       /**
-        * @param string $from
-        * @param string $to
-        * @param string $string
-        * @return string
-        */
-       public static function iconv( $from, $to, $string ) {
-               if ( substr( $to, -8 ) == '//IGNORE' ) {
-                       $to = substr( $to, 0, strlen( $to ) - 8 );
-               }
-               if ( strcasecmp( $from, $to ) == 0 ) {
-                       return $string;
-               }
-               if ( strcasecmp( $from, 'utf-8' ) == 0 ) {
-                       return utf8_decode( $string );
-               }
-               if ( strcasecmp( $to, 'utf-8' ) == 0 ) {
-                       return utf8_encode( $string );
-               }
-               return $string;
-       }
-
        /**
         * Fallback implementation for mb_substr, hardcoded to UTF-8.
         * Attempts to be at least _moderately_ efficient; best optimized
index cb5b7fd..fe12a07 100644 (file)
@@ -35,16 +35,6 @@ if ( !defined( 'MEDIAWIKI' ) ) {
  * PHP extensions may be included here.
  */
 
-if ( !function_exists( 'iconv' ) ) {
-       /**
-        * @codeCoverageIgnore
-        * @return string
-        */
-       function iconv( $from, $to, $string ) {
-               return Fallback::iconv( $from, $to, $string );
-       }
-}
-
 if ( !function_exists( 'mb_substr' ) ) {
        /**
         * @codeCoverageIgnore
@@ -2028,36 +2018,6 @@ function wfShowingResults( $offset, $limit ) {
        return wfMessage( 'showingresults' )->numParams( $limit, $offset + 1 )->parse();
 }
 
-/**
- * Generate (prev x| next x) (20|50|100...) type links for paging
- *
- * @param string $offset
- * @param int $limit
- * @param string $link
- * @param string $query Optional URL query parameter string
- * @param bool $atend Optional param for specified if this is the last page
- * @return string
- * @deprecated since 1.19; use Language::viewPrevNext() instead
- */
-function wfViewPrevNext( $offset, $limit, $link, $query = '', $atend = false ) {
-       wfDeprecated( __METHOD__, '1.19' );
-
-       global $wgLang;
-
-       $query = wfCgiToArray( $query );
-
-       if ( is_object( $link ) ) {
-               $title = $link;
-       } else {
-               $title = Title::newFromText( $link );
-               if ( is_null( $title ) ) {
-                       return false;
-               }
-       }
-
-       return $wgLang->viewPrevNext( $title, $offset, $limit, $query, $atend );
-}
-
 /**
  * @todo document
  * @todo FIXME: We may want to blacklist some broken browsers
@@ -2950,19 +2910,28 @@ function wfShellExec( $cmd, &$retval = null, $environ = array(),
                $fds[(int)$pipe] = $fd;
        }
 
-       while ( true ) {
-               $status = proc_get_status( $proc );
-               if ( !$status['running'] ) {
-                       break;
+       $running = true;
+       $timeout = null;
+       $numReadyPipes = 0;
+
+       while ( $running === true || $numReadyPipes !== 0 ) {
+               if ( $running ) {
+                       $status = proc_get_status( $proc );
+                       // If the process has terminated, switch to nonblocking selects
+                       // for getting any data still waiting to be read.
+                       if ( !$status['running'] ) {
+                               $running = false;
+                               $timeout = 0;
+                       }
                }
-               $status = false;
 
                $readyPipes = $pipes;
 
                // Clear last error
                // @codingStandardsIgnoreStart Generic.PHP.NoSilencedErrors.Discouraged
                @trigger_error( '' );
-               if ( @stream_select( $readyPipes, $emptyArray, $emptyArray, null ) === false ) {
+               $numReadyPipes = @stream_select( $readyPipes, $emptyArray, $emptyArray, $timeout );
+               if ( $numReadyPipes === false ) {
                        // @codingStandardsIgnoreEnd
                        $error = error_get_last();
                        if ( strncmp( $error['message'], $eintrMessage, strlen( $eintrMessage ) ) == 0 ) {
@@ -3010,7 +2979,7 @@ function wfShellExec( $cmd, &$retval = null, $environ = array(),
 
        // Use the status previously collected if possible, since proc_get_status()
        // just calls waitpid() which will not return anything useful the second time.
-       if ( $status === false ) {
+       if ( $running ) {
                $status = proc_get_status( $proc );
        }
 
@@ -3828,11 +3797,14 @@ function wfGetNull() {
  * in maintenance scripts, to avoid causing too much lag.  Of course, this is
  * a no-op if there are no slaves.
  *
- * @param int|bool $maxLag (deprecated)
+ * @param float|null $ifWritesSince Only wait if writes were done since this UNIX timestamp
  * @param string|bool $wiki Wiki identifier accepted by wfGetLB
  * @param string|bool $cluster Cluster name accepted by LBFactory. Default: false.
  */
-function wfWaitForSlaves( $maxLag = false, $wiki = false, $cluster = false ) {
+function wfWaitForSlaves( $ifWritesSince = false, $wiki = false, $cluster = false ) {
+       // B/C: first argument used to be "max seconds of lag"; ignore such values
+       $ifWritesSince = ( $ifWritesSince > 1e9 ) ? $ifWritesSince : false;
+
        if ( $cluster !== false ) {
                $lb = wfGetLBFactory()->getExternalLB( $cluster );
        } else {
@@ -3842,7 +3814,13 @@ function wfWaitForSlaves( $maxLag = false, $wiki = false, $cluster = false ) {
        // bug 27975 - Don't try to wait for slaves if there are none
        // Prevents permission error when getting master position
        if ( $lb->getServerCount() > 1 ) {
+               if ( $ifWritesSince && !$lb->hasMasterConnection() ) {
+                       return; // assume no writes done
+               }
                $dbw = $lb->getConnection( DB_MASTER, array(), $wiki );
+               if ( $ifWritesSince && $dbw->lastDoneWrites() < $ifWritesSince ) {
+                       return; // no writes since the last wait
+               }
                $pos = $dbw->getMasterPos();
                // The DBMS may not support getMasterPos() or the whole
                // load balancer might be fake (e.g. $wgAllDBsAreLocalhost).
index 5f4655c..dbabbae 100644 (file)
@@ -502,7 +502,7 @@ class Html {
 
                                // Remove duplicates and create the string
                                $value = implode( ' ', array_unique( $value ) );
-                       } else if ( is_array( $value ) ) {
+                       } elseif ( is_array( $value ) ) {
                                throw new MWException( "HTML attribute $key can not contain a list of values" );
                        }
 
index 38aa392..ebced70 100644 (file)
@@ -138,7 +138,7 @@ class HtmlFormatter {
 
                // Bail out early if nothing to do
                if ( array_reduce( $removals,
-                       function( $carry, $item ) {
+                       function ( $carry, $item ) {
                                return $carry && !$item;
                        },
                        true
index 177d023..6aab157 100644 (file)
@@ -45,7 +45,7 @@ class WikiImporter {
        function __construct( ImportStreamSource $source ) {
                $this->reader = new XMLReader();
 
-               if ( !in_array(  'uploadsource', stream_get_wrappers() ) ) {
+               if ( !in_array( 'uploadsource', stream_get_wrappers() ) ) {
                        stream_wrapper_register( 'uploadsource', 'UploadSourceAdapter' );
                }
                $id = UploadSourceAdapter::registerSource( $source );
index 7d88f25..1991694 100644 (file)
@@ -1379,7 +1379,7 @@ class Linker {
                                                . '<span dir="auto">' . $auto . $post . '</span>';
                                }
                                return $comment;
-               },
+                       },
                        $comment
                );
        }
@@ -1418,7 +1418,11 @@ class Linker {
 
                                # fix up urlencoded title texts (copied from Parser::replaceInternalLinks)
                                if ( strpos( $match[1], '%' ) !== false ) {
-                                       $match[1] = str_replace( array( '<', '>' ), array( '&lt;', '&gt;' ), rawurldecode( $match[1] ) );
+                                       $match[1] = str_replace(
+                                               array( '<', '>' ),
+                                               array( '&lt;', '&gt;' ),
+                                               rawurldecode( $match[1] )
+                                       );
                                }
 
                                # Handle link renaming [[foo|text]] will show link as "text"
index a8bafa3..1c245c1 100644 (file)
@@ -558,7 +558,7 @@ class MediaWiki {
                                        // to fail due to post data being lost, but let's try anyway
                                        // and just log the instance.
                                        //
-                                       // @todo @fixme See if we could issue a 307 or 308 here, need
+                                       // @todo FIXME: See if we could issue a 307 or 308 here, need
                                        // to see how clients (automated & browser) behave when we do
                                        wfDebugLog( 'RedirectedPosts', "Redirected from HTTP to HTTPS: $oldUrl" );
                                }
index 6163a8d..fbdde64 100644 (file)
@@ -1287,6 +1287,9 @@ class OutputPage extends ContextSource {
                        foreach ( $categories as $category => $type ) {
                                $origcategory = $category;
                                $title = Title::makeTitleSafe( NS_CATEGORY, $category );
+                               if ( !$title ) {
+                                       continue;
+                               }
                                $wgContLang->findVariantLink( $category, $title, true );
                                if ( $category != $origcategory ) {
                                        if ( array_key_exists( $category, $categories ) ) {
@@ -2714,8 +2717,8 @@ $templates
                        $extraQuery['target'] = $this->mTarget;
                }
 
-               // Create keyed-by-group list of module objects from modules list
-               $groups = array();
+               // Create keyed-by-source and then keyed-by-group list of module objects from modules list
+               $sortedModules = array();
                $resourceLoader = $this->getResourceLoader();
                foreach ( $modules as $name ) {
                        $module = $resourceLoader->getModule( $name );
@@ -2730,136 +2733,126 @@ $templates
                                continue;
                        }
 
-                       $group = $module->getGroup();
-                       if ( !isset( $groups[$group] ) ) {
-                               $groups[$group] = array();
-                       }
-                       $groups[$group][$name] = $module;
+                       $sortedModules[$module->getSource()][$module->getGroup()][$name] = $module;
                }
 
-               foreach ( $groups as $group => $grpModules ) {
-                       // Special handling for user-specific groups
-                       $user = null;
-                       if ( ( $group === 'user' || $group === 'private' ) && $this->getUser()->isLoggedIn() ) {
-                               $user = $this->getUser()->getName();
-                       }
+               foreach ( $sortedModules as $source => $groups ) {
+                       foreach ( $groups as $group => $grpModules ) {
+                               // Special handling for user-specific groups
+                               $user = null;
+                               if ( ( $group === 'user' || $group === 'private' ) && $this->getUser()->isLoggedIn() ) {
+                                       $user = $this->getUser()->getName();
+                               }
 
-                       // Create a fake request based on the one we are about to make so modules return
-                       // correct timestamp and emptiness data
-                       $query = ResourceLoader::makeLoaderQuery(
-                               array(), // modules; not determined yet
-                               $this->getLanguage()->getCode(),
-                               $this->getSkin()->getSkinName(),
-                               $user,
-                               null, // version; not determined yet
-                               ResourceLoader::inDebugMode(),
-                               $only === ResourceLoaderModule::TYPE_COMBINED ? null : $only,
-                               $this->isPrintable(),
-                               $this->getRequest()->getBool( 'handheld' ),
-                               $extraQuery
-                       );
-                       $context = new ResourceLoaderContext( $resourceLoader, new FauxRequest( $query ) );
-
-                       // Extract modules that know they're empty
-                       foreach ( $grpModules as $key => $module ) {
-                               // Inline empty modules: since they're empty, just mark them as 'ready' (bug 46857)
-                               // If we're only getting the styles, we don't need to do anything for empty modules.
-                               if ( $module->isKnownEmpty( $context ) ) {
-                                       unset( $grpModules[$key] );
-                                       if ( $only !== ResourceLoaderModule::TYPE_STYLES ) {
-                                               $links['states'][$key] = 'ready';
+                               // Create a fake request based on the one we are about to make so modules return
+                               // correct timestamp and emptiness data
+                               $query = ResourceLoader::makeLoaderQuery(
+                                       array(), // modules; not determined yet
+                                       $this->getLanguage()->getCode(),
+                                       $this->getSkin()->getSkinName(),
+                                       $user,
+                                       null, // version; not determined yet
+                                       ResourceLoader::inDebugMode(),
+                                       $only === ResourceLoaderModule::TYPE_COMBINED ? null : $only,
+                                       $this->isPrintable(),
+                                       $this->getRequest()->getBool( 'handheld' ),
+                                       $extraQuery
+                               );
+                               $context = new ResourceLoaderContext( $resourceLoader, new FauxRequest( $query ) );
+
+                               // Extract modules that know they're empty
+                               foreach ( $grpModules as $key => $module ) {
+                                       // Inline empty modules: since they're empty, just mark them as 'ready' (bug 46857)
+                                       // If we're only getting the styles, we don't need to do anything for empty modules.
+                                       if ( $module->isKnownEmpty( $context ) ) {
+                                               unset( $grpModules[$key] );
+                                               if ( $only !== ResourceLoaderModule::TYPE_STYLES ) {
+                                                       $links['states'][$key] = 'ready';
+                                               }
                                        }
                                }
-                       }
 
-                       // If there are no non-empty modules, skip this group
-                       if ( count( $grpModules ) === 0 ) {
-                               continue;
-                       }
+                               // If there are no non-empty modules, skip this group
+                               if ( count( $grpModules ) === 0 ) {
+                                       continue;
+                               }
 
-                       // Inline private modules. These can't be loaded through load.php for security
-                       // reasons, see bug 34907. Note that these modules should be loaded from
-                       // getHeadScripts() before the first loader call. Otherwise other modules can't
-                       // properly use them as dependencies (bug 30914)
-                       if ( $group === 'private' ) {
-                               if ( $only == ResourceLoaderModule::TYPE_STYLES ) {
-                                       $links['html'] .= Html::inlineStyle(
-                                               $resourceLoader->makeModuleResponse( $context, $grpModules )
-                                       );
-                               } else {
-                                       $links['html'] .= Html::inlineScript(
-                                               ResourceLoader::makeLoaderConditionalScript(
+                               // Inline private modules. These can't be loaded through load.php for security
+                               // reasons, see bug 34907. Note that these modules should be loaded from
+                               // getHeadScripts() before the first loader call. Otherwise other modules can't
+                               // properly use them as dependencies (bug 30914)
+                               if ( $group === 'private' ) {
+                                       if ( $only == ResourceLoaderModule::TYPE_STYLES ) {
+                                               $links['html'] .= Html::inlineStyle(
                                                        $resourceLoader->makeModuleResponse( $context, $grpModules )
-                                               )
-                                       );
+                                               );
+                                       } else {
+                                               $links['html'] .= Html::inlineScript(
+                                                       ResourceLoader::makeLoaderConditionalScript(
+                                                               $resourceLoader->makeModuleResponse( $context, $grpModules )
+                                                       )
+                                               );
+                                       }
+                                       $links['html'] .= "\n";
+                                       continue;
                                }
-                               $links['html'] .= "\n";
-                               continue;
-                       }
 
-                       // Special handling for the user group; because users might change their stuff
-                       // on-wiki like user pages, or user preferences; we need to find the highest
-                       // timestamp of these user-changeable modules so we can ensure cache misses on change
-                       // This should NOT be done for the site group (bug 27564) because anons get that too
-                       // and we shouldn't be putting timestamps in Squid-cached HTML
-                       $version = null;
-                       if ( $group === 'user' ) {
-                               // Get the maximum timestamp
-                               $timestamp = 1;
-                               foreach ( $grpModules as $module ) {
-                                       $timestamp = max( $timestamp, $module->getModifiedTime( $context ) );
+                               // Special handling for the user group; because users might change their stuff
+                               // on-wiki like user pages, or user preferences; we need to find the highest
+                               // timestamp of these user-changeable modules so we can ensure cache misses on change
+                               // This should NOT be done for the site group (bug 27564) because anons get that too
+                               // and we shouldn't be putting timestamps in Squid-cached HTML
+                               $version = null;
+                               if ( $group === 'user' ) {
+                                       // Get the maximum timestamp
+                                       $timestamp = 1;
+                                       foreach ( $grpModules as $module ) {
+                                               $timestamp = max( $timestamp, $module->getModifiedTime( $context ) );
+                                       }
+                                       // Add a version parameter so cache will break when things change
+                                       $query['version'] = wfTimestamp( TS_ISO_8601_BASIC, $timestamp );
                                }
-                               // Add a version parameter so cache will break when things change
-                               $version = wfTimestamp( TS_ISO_8601_BASIC, $timestamp );
-                       }
 
-                       $url = ResourceLoader::makeLoaderURL(
-                               array_keys( $grpModules ),
-                               $this->getLanguage()->getCode(),
-                               $this->getSkin()->getSkinName(),
-                               $user,
-                               $version,
-                               ResourceLoader::inDebugMode(),
-                               $only === ResourceLoaderModule::TYPE_COMBINED ? null : $only,
-                               $this->isPrintable(),
-                               $this->getRequest()->getBool( 'handheld' ),
-                               $extraQuery
-                       );
-                       if ( $useESI && $wgResourceLoaderUseESI ) {
-                               $esi = Xml::element( 'esi:include', array( 'src' => $url ) );
-                               if ( $only == ResourceLoaderModule::TYPE_STYLES ) {
-                                       $link = Html::inlineStyle( $esi );
-                               } else {
-                                       $link = Html::inlineScript( $esi );
-                               }
-                       } else {
-                               // Automatically select style/script elements
-                               if ( $only === ResourceLoaderModule::TYPE_STYLES ) {
-                                       $link = Html::linkedStyle( $url );
-                               } elseif ( $loadCall ) {
-                                       $link = Html::inlineScript(
-                                               ResourceLoader::makeLoaderConditionalScript(
-                                                       Xml::encodeJsCall( 'mw.loader.load', array( $url, 'text/javascript', true ) )
-                                               )
-                                       );
+                               $query['modules'] = ResourceLoader::makePackedModulesString( array_keys( $grpModules ) );
+                               $moduleContext = new ResourceLoaderContext( $resourceLoader, new FauxRequest( $query ) );
+                               $url = $resourceLoader->createLoaderURL( $source, $moduleContext, $extraQuery );
+
+                               if ( $useESI && $wgResourceLoaderUseESI ) {
+                                       $esi = Xml::element( 'esi:include', array( 'src' => $url ) );
+                                       if ( $only == ResourceLoaderModule::TYPE_STYLES ) {
+                                               $link = Html::inlineStyle( $esi );
+                                       } else {
+                                               $link = Html::inlineScript( $esi );
+                                       }
                                } else {
-                                       $link = Html::linkedScript( $url );
-
-                                       // For modules requested directly in the html via <link> or <script>,
-                                       // tell mw.loader they are being loading to prevent duplicate requests.
-                                       foreach ( $grpModules as $key => $module ) {
-                                               // Don't output state=loading for the startup module..
-                                               if ( $key !== 'startup' ) {
-                                                       $links['states'][$key] = 'loading';
+                                       // Automatically select style/script elements
+                                       if ( $only === ResourceLoaderModule::TYPE_STYLES ) {
+                                               $link = Html::linkedStyle( $url );
+                                       } elseif ( $loadCall ) {
+                                               $link = Html::inlineScript(
+                                                       ResourceLoader::makeLoaderConditionalScript(
+                                                               Xml::encodeJsCall( 'mw.loader.load', array( $url, 'text/javascript', true ) )
+                                                       )
+                                               );
+                                       } else {
+                                               $link = Html::linkedScript( $url );
+
+                                               // For modules requested directly in the html via <link> or <script>,
+                                               // tell mw.loader they are being loading to prevent duplicate requests.
+                                               foreach ( $grpModules as $key => $module ) {
+                                                       // Don't output state=loading for the startup module..
+                                                       if ( $key !== 'startup' ) {
+                                                               $links['states'][$key] = 'loading';
+                                                       }
                                                }
                                        }
                                }
-                       }
 
-                       if ( $group == 'noscript' ) {
-                               $links['html'] .= Html::rawElement( 'noscript', array(), $link ) . "\n";
-                       } else {
-                               $links['html'] .= $link . "\n";
+                               if ( $group == 'noscript' ) {
+                                       $links['html'] .= Html::rawElement( 'noscript', array(), $link ) . "\n";
+                               } else {
+                                       $links['html'] .= $link . "\n";
+                               }
                        }
                }
 
@@ -2905,7 +2898,7 @@ $templates
 
                // Startup - this will immediately load jquery and mediawiki modules
                $links = array();
-               $links[] = $this->makeResourceLoaderLink( 'startup', ResourceLoaderModule::TYPE_SCRIPTS, true );
+               $links[] = $this->makeResourceLoaderLink( 'startup', ResourceLoaderModule::TYPE_SCRIPTS, /* $useESI =  */ true );
 
                // Load config before anything else
                $links[] = Html::inlineScript(
@@ -2961,7 +2954,7 @@ $templates
         * @return string
         */
        function getScriptsForBottomQueue( $inHead ) {
-               global $wgUseSiteJs, $wgAllowUserJs;
+               global $wgAllowUserJs;
 
                // Scripts and messages "only" requests marked for bottom inclusion
                // If we're in the <head>, use load() calls rather than <script src="..."> tags
@@ -3027,6 +3020,14 @@ $templates
                        /* $useESI = */ false, /* $extraQuery = */ array(), /* $loadCall = */ $inHead
                );
 
+               $modules = array();
+               wfRunHooks( 'OutputPageScriptsForBottomQueue', array( $this, &$modules ) );
+               if ( $modules ) {
+                       $links[] = $this->makeResourceLoaderLink( $modules, ResourceLoaderModule::TYPE_COMBINED,
+                               /* $useESI = */ false, /* $extraQuery = */ array(), /* $loadCall = */ $inHead
+                       );
+               }
+
                return self::getHtmlFromLoaderLinks( $links );
        }
 
@@ -3524,7 +3525,7 @@ $templates
         * @return string
         */
        public function buildCssLinks() {
-               global $wgUseSiteCss, $wgAllowUserCss, $wgAllowUserCssPrefs, $wgContLang;
+               global $wgAllowUserCss, $wgContLang;
 
                $this->getSkin()->setupSkinUserCss( $this );
 
index 5f05460..c7de8c1 100644 (file)
@@ -69,7 +69,7 @@ interface Pager {
  *      last page depending on the dir parameter.
  *
  *  Subclassing the pager to implement concrete functionality should be fairly
- *  simple, please see the examples in HistoryPage.php and
+ *  simple, please see the examples in HistoryAction.php and
  *  SpecialBlockList.php. You just need to override formatRow(),
  *  getQueryInfo() and getIndexField(). Don't forget to call the parent
  *  constructor if you override it.
index fdb1a9d..b4bb6de 100644 (file)
@@ -207,7 +207,7 @@ class Preferences {
         * @return void
         */
        static function profilePreferences( $user, IContextSource $context, &$defaultPreferences ) {
-               global $wgAuth, $wgContLang, $wgParser, $wgCookieExpiration, $wgLanguageCode,
+               global $wgAuth, $wgContLang, $wgParser, $wgLanguageCode,
                        $wgDisableLangConversion, $wgMaxSigChars,
                        $wgEnableEmail, $wgEmailConfirmToEdit, $wgEnableUserEmail, $wgEmailAuthentication,
                        $wgEnotifWatchlist, $wgEnotifUserTalk, $wgEnotifRevealEditorAddress,
@@ -750,7 +750,6 @@ class Preferences {
                        'type' => 'select',
                        'section' => 'rendering/advancedrendering',
                        'options' => $stubThresholdOptions,
-                       'size' => 20,
                        'label-raw' => $context->msg( 'stub-threshold' )->text(), // Raw HTML message. Yay?
                );
 
index 456e4e6..853e2cc 100644 (file)
@@ -338,20 +338,12 @@ class ProtectionForm {
         * @return string HTML form
         */
        function buildForm() {
-               global $wgUser, $wgLang, $wgOut;
-
-               $mProtectreasonother = Xml::label(
-                       wfMessage( 'protectcomment' )->text(),
-                       'wpProtectReasonSelection'
-               );
-               $mProtectreason = Xml::label(
-                       wfMessage( 'protect-otherreason' )->text(),
-                       'mwProtect-reason'
-               );
+               global $wgUser, $wgLang, $wgOut, $wgCascadingRestrictionLevels;
 
                $out = '';
                if ( !$this->disabled ) {
                        $wgOut->addModules( 'mediawiki.legacy.protect' );
+                       $wgOut->addJsConfigVars( 'wgCascadeableLevels', $wgCascadingRestrictionLevels );
                        $out .= Xml::openElement( 'form', array( 'method' => 'post',
                                'action' => $this->mTitle->getLocalURL( 'action=protect' ),
                                'id' => 'mw-Protect-Form', 'onsubmit' => 'ProtectionForm.enableUnchainedInputs(true)' ) );
@@ -362,6 +354,9 @@ class ProtectionForm {
                        Xml::openElement( 'table', array( 'id' => 'mwProtectSet' ) ) .
                        Xml::openElement( 'tbody' );
 
+               $scExpiryOptions = wfMessage( 'protect-expiry-options' )->inContentLanguage()->text();
+               $showProtectOptions = $scExpiryOptions !== '-' && !$this->disabled;
+
                // Not all languages have V_x <-> N_x relation
                foreach ( $this->mRestrictions as $action => $selected ) {
                        // Messages:
@@ -373,15 +368,6 @@ class ProtectionForm {
                        Xml::openElement( 'table', array( 'id' => "mw-protect-table-$action" ) ) .
                                "<tr><td>" . $this->buildSelector( $action, $selected ) . "</td></tr><tr><td>";
 
-                       $reasonDropDown = Xml::listDropDown( 'wpProtectReasonSelection',
-                               wfMessage( 'protect-dropdown' )->inContentLanguage()->text(),
-                               wfMessage( 'protect-otherreason-op' )->inContentLanguage()->text(),
-                               $this->mReasonSelection,
-                               'mwProtect-reason', 4 );
-                       $scExpiryOptions = wfMessage( 'protect-expiry-options' )->inContentLanguage()->text();
-
-                       $showProtectOptions = $scExpiryOptions !== '-' && !$this->disabled;
-
                        $mProtectexpiry = Xml::label(
                                wfMessage( 'protectexpiry' )->text(),
                                "mwProtectExpirySelection-$action"
@@ -482,6 +468,22 @@ class ProtectionForm {
 
                # Add manual and custom reason field/selects as well as submit
                if ( !$this->disabled ) {
+                       $mProtectreasonother = Xml::label(
+                               wfMessage( 'protectcomment' )->text(),
+                               'wpProtectReasonSelection'
+                       );
+
+                       $mProtectreason = Xml::label(
+                               wfMessage( 'protect-otherreason' )->text(),
+                               'mwProtect-reason'
+                       );
+
+                       $reasonDropDown = Xml::listDropDown( 'wpProtectReasonSelection',
+                               wfMessage( 'protect-dropdown' )->inContentLanguage()->text(),
+                               wfMessage( 'protect-otherreason-op' )->inContentLanguage()->text(),
+                               $this->mReasonSelection,
+                               'mwProtect-reason', 4 );
+
                        $out .= Xml::openElement( 'table', array( 'id' => 'mw-protect-table3' ) ) .
                                Xml::openElement( 'tbody' );
                        $out .= "
@@ -606,9 +608,6 @@ class ProtectionForm {
        }
 
        function buildCleanupScript() {
-               global $wgCascadingRestrictionLevels, $wgOut;
-
-               $cascadeableLevels = $wgCascadingRestrictionLevels;
                $options = array(
                        'tableId' => 'mwProtectSet',
                        'labelText' => wfMessage( 'protect-unchain-permissions' )->plain(),
@@ -616,8 +615,8 @@ class ProtectionForm {
                        'existingMatch' => count( array_unique( $this->mExistingExpiry ) ) === 1,
                );
 
-               $wgOut->addJsConfigVars( 'wgCascadeableLevels', $cascadeableLevels );
                $script = Xml::encodeJsCall( 'ProtectionForm.init', array( $options ) );
+
                return Html::inlineScript( ResourceLoader::makeLoaderConditionalScript( $script ) );
        }
 
index de69827..bcd3fd8 100644 (file)
@@ -1658,19 +1658,20 @@ class Revision implements IDBAccessObject {
         */
        public static function userCanBitfield( $bitfield, $field, User $user = null ) {
                if ( $bitfield & $field ) { // aspect is deleted
-                       if ( $bitfield & self::DELETED_RESTRICTED ) {
-                               $permission = 'suppressrevision';
-                       } elseif ( $field & self::DELETED_TEXT ) {
-                               $permission = 'deletedtext';
-                       } else {
-                               $permission = 'deletedhistory';
-                       }
-                       wfDebug( "Checking for $permission due to $field match on $bitfield\n" );
                        if ( $user === null ) {
                                global $wgUser;
                                $user = $wgUser;
                        }
-                       return $user->isAllowed( $permission );
+                       if ( $bitfield & self::DELETED_RESTRICTED ) {
+                               $permissions = array( 'suppressrevision', 'viewsuppressed' );
+                       } elseif ( $field & self::DELETED_TEXT ) {
+                               $permissions = array( 'deletedtext' );
+                       } else {
+                               $permissions = array( 'deletedhistory' );
+                       }
+                       $permissionlist = implode( ', ', $permissions );
+                       wfDebug( "Checking for $permissionlist due to $field match on $bitfield\n" );
+                       return call_user_func_array( array( $user, 'isAllowedAny' ), $permissions );
                } else {
                        return true;
                }
index 35e1ef8..f493b7b 100644 (file)
@@ -815,7 +815,7 @@ abstract class Skin extends ContextSource {
         * @return string
         */
        function getCopyright( $type = 'detect' ) {
-               global $wgRightsPage, $wgRightsUrl, $wgRightsText, $wgContLang;
+               global $wgRightsPage, $wgRightsUrl, $wgRightsText;
 
                if ( $type == 'detect' ) {
                        if ( !$this->isRevisionCurrent()
index 97c0ec4..bcd3532 100644 (file)
@@ -294,8 +294,7 @@ class SkinTemplate extends Skin {
         * @return QuickTemplate The template to be executed by outputPage
         */
        protected function prepareQuickTemplate() {
-               global $wgContLang, $wgScript, $wgStylePath,
-                       $wgMimeType, $wgJsMimeType, $wgXhtmlNamespaces, $wgHtml5Version,
+               global $wgContLang, $wgScript, $wgStylePath, $wgMimeType, $wgJsMimeType,
                        $wgDisableCounters, $wgSitename, $wgLogo, $wgMaxCredits,
                        $wgShowCreditsIfMax, $wgPageShowWatchingUsers, $wgArticlePath,
                        $wgScriptPath, $wgServer;
@@ -359,13 +358,6 @@ class SkinTemplate extends Skin {
                $tpl->set( 'handheld', $request->getBool( 'handheld' ) );
                $tpl->setRef( 'loggedin', $this->loggedin );
                $tpl->set( 'notspecialpage', !$title->isSpecialPage() );
-               /* XXX currently unused, might get useful later
-               $tpl->set( 'editable', ( !$title->isSpecialPage() ) );
-               $tpl->set( 'exists', $title->getArticleID() != 0 );
-               $tpl->set( 'watch', $user->isWatched( $title ) ? 'unwatch' : 'watch' );
-               $tpl->set( 'protect', count( $title->isProtected() ) ? 'unprotect' : 'protect' );
-               $tpl->set( 'helppage', $this->msg( 'helppage' )->text() );
-               */
                $tpl->set( 'searchaction', $this->escapeSearchLink() );
                $tpl->set( 'searchtitle', SpecialPage::getTitleFor( 'Search' )->getPrefixedDBkey() );
                $tpl->set( 'search', trim( $request->getVal( 'search' ) ) );
index fb9b3e4..ee1df29 100644 (file)
@@ -163,35 +163,6 @@ class StubObject {
        }
 }
 
-/**
- * Stub object for the content language of this wiki. This object have to be in
- * $wgContLang global.
- *
- * @deprecated since 1.18
- */
-class StubContLang extends StubObject {
-
-       function __construct() {
-               wfDeprecated( __CLASS__, '1.18' );
-               parent::__construct( 'wgContLang' );
-       }
-
-       function __call( $name, $args ) {
-               return $this->_call( $name, $args );
-       }
-
-       /**
-        * @return Language
-        */
-       function _newObject() {
-               global $wgLanguageCode;
-               $obj = Language::factory( $wgLanguageCode );
-               $obj->initEncoding();
-               $obj->initContLang();
-               return $obj;
-       }
-}
-
 /**
  * Stub object for the user language. It depends of the user preferences and
  * "uselang" parameter that can be passed to index.php. This object have to be
index 746ffab..b7c0a25 100644 (file)
@@ -979,7 +979,7 @@ class Title {
                try {
                        $formatter = self::getTitleFormatter();
                        return $formatter->getNamespaceName( $this->mNamespace, $this->mDbkeyform );
-               } catch ( InvalidArgumentException $ex )  {
+               } catch ( InvalidArgumentException $ex ) {
                        wfDebug( __METHOD__ . ': ' . $ex->getMessage() . "\n" );
                        return false;
                }
@@ -1835,17 +1835,6 @@ class Title {
                return $this->mWatched;
        }
 
-       /**
-        * Can $wgUser read this page?
-        *
-        * @deprecated since 1.19; use userCan(), quickUserCan() or getUserPermissionsErrors() instead
-        * @return bool
-        */
-       public function userCanRead() {
-               wfDeprecated( __METHOD__, '1.19' );
-               return $this->userCan( 'read' );
-       }
-
        /**
         * Can $user perform $action on this page?
         * This skips potentially expensive cascading permission checks
@@ -2983,7 +2972,7 @@ class Title {
 
                $method = __METHOD__;
                $dbw = wfGetDB( DB_MASTER );
-               $dbw->onTransactionIdle( function() use ( $dbw, $method ) {
+               $dbw->onTransactionIdle( function () use ( $dbw, $method ) {
                        $dbw->delete(
                                'page_restrictions',
                                array( 'pr_expiry < ' . $dbw->addQuotes( $dbw->timestamp() ) ),
@@ -3825,13 +3814,31 @@ class Title {
                        $log->addRelations( 'pr_id', $logRelationsValues, $logId );
                }
 
+               // Update *_from_namespace fields as needed
+               if ( $this->getNamespace() != $nt->getNamespace() ) {
+                       $dbw->update( 'pagelinks',
+                               array( 'pl_from_namespace' => $nt->getNamespace() ),
+                               array( 'pl_from' => $pageid ),
+                               __METHOD__
+                       );
+                       $dbw->update( 'templatelinks',
+                               array( 'tl_from_namespace' => $nt->getNamespace() ),
+                               array( 'tl_from' => $pageid ),
+                               __METHOD__
+                       );
+                       $dbw->update( 'imagelinks',
+                               array( 'il_from_namespace' => $nt->getNamespace() ),
+                               array( 'il_from' => $pageid ),
+                               __METHOD__
+                       );
+               }
+
                # Update watchlists
-               $oldnamespace = MWNamespace::getSubject( $this->getNamespace() );
-               $newnamespace = MWNamespace::getSubject( $nt->getNamespace() );
                $oldtitle = $this->getDBkey();
                $newtitle = $nt->getDBkey();
-
-               if ( $oldnamespace != $newnamespace || $oldtitle != $newtitle ) {
+               $oldsnamespace = MWNamespace::getSubject( $this->getNamespace() );
+               $newsnamespace = MWNamespace::getSubject( $nt->getNamespace() );
+               if ( $oldsnamespace != $newsnamespace || $oldtitle != $newtitle ) {
                        WatchedItem::duplicateEntries( $this, $nt );
                }
 
@@ -4667,7 +4674,7 @@ class Title {
                $method = __METHOD__;
                $dbw = wfGetDB( DB_MASTER );
                $conds = $this->pageCond();
-               $dbw->onTransactionIdle( function() use ( $dbw, $conds, $method ) {
+               $dbw->onTransactionIdle( function () use ( $dbw, $conds, $method ) {
                        $dbw->update(
                                'page',
                                array( 'page_touched' => $dbw->timestamp() ),
index fc2b351..9951595 100644 (file)
@@ -175,6 +175,7 @@ class User implements IDBAccessObject {
                'userrights-interwiki',
                'viewmyprivateinfo',
                'viewmywatchlist',
+               'viewsuppressed',
                'writeapi',
        );
 
@@ -368,7 +369,7 @@ class User implements IDBAccessObject {
                // Try cache
                $key = wfMemcKey( 'user', 'id', $this->mId );
                $data = $wgMemc->get( $key );
-               if ( !is_array( $data ) || $data['mVersion'] < MW_USER_VERSION ) {
+               if ( !is_array( $data ) || $data['mVersion'] != MW_USER_VERSION ) {
                        // Object is expired, load from DB
                        $data = false;
                }
@@ -1384,7 +1385,7 @@ class User implements IDBAccessObject {
                foreach ( SearchEngine::searchableNamespaces() as $nsnum => $nsname ) {
                        $defOpt['searchNs' . $nsnum] = !empty( $wgNamespacesToBeSearchedDefault[$nsnum] );
                }
-               $defOpt['skin'] = $wgDefaultSkin;
+               $defOpt['skin'] = Skin::normalizeKey( $wgDefaultSkin );
 
                wfRunHooks( 'UserGetDefaultOptions', array( &$defOpt ) );
 
@@ -2175,7 +2176,7 @@ class User implements IDBAccessObject {
                        $userid = $this->mId;
                        $touched = $this->mTouched;
                        $method = __METHOD__;
-                       $dbw->onTransactionIdle( function() use ( $dbw, $userid, $touched, $method ) {
+                       $dbw->onTransactionIdle( function () use ( $dbw, $userid, $touched, $method ) {
                                // Prevent contention slams by checking user_touched first
                                $encTouched = $dbw->addQuotes( $dbw->timestamp( $touched ) );
                                $needsPurge = $dbw->selectField( 'user', '1',
index c9db90f..25be921 100644 (file)
@@ -151,13 +151,14 @@ class UserMailer {
         * array of parameters. It requires PEAR:Mail to do that.
         * Otherwise it just uses the standard PHP 'mail' function.
         *
-        * @param MailAddress $to Recipient's email (or an array of them)
+        * @param MailAddress|MailAddress[] $to Recipient's email (or an array of them)
         * @param MailAddress $from Sender's email
         * @param string $subject Email's subject.
         * @param string $body Email's text or Array of two strings to be the text and html bodies
         * @param MailAddress $replyto Optional reply-to email (default: null).
         * @param string $contentType Optional custom Content-Type (default: text/plain; charset=UTF-8)
         * @throws MWException
+        * @throws Exception
         * @return Status
         */
        public static function send( $to, $from, $subject, $body, $replyto = null,
@@ -553,7 +554,7 @@ class EmailNotification {
                                // Update wl_notificationtimestamp for all watching users except the editor
                                $fname = __METHOD__;
                                $dbw->onTransactionIdle(
-                                       function() use ( $dbw, $timestamp, $watchers, $title, $fname ) {
+                                       function () use ( $dbw, $timestamp, $watchers, $title, $fname ) {
                                                $dbw->update( 'watchlist',
                                                        array( /* SET */
                                                                'wl_notificationtimestamp' => $dbw->timestamp( $timestamp )
index ce9fecd..4e5fb7a 100644 (file)
@@ -25,8 +25,8 @@
 
 /**
  * The WebRequest class encapsulates getting at data passed in the
- * URL or via a POSTed form, handling remove of "magic quotes" slashes,
- * stripping illegal input characters and normalizing Unicode sequences.
+ * URL or via a POSTed form stripping illegal input characters and
+ * normalizing Unicode sequences.
  *
  * Usually this is used via a global singleton, $wgRequest. You should
  * not create a second WebRequest object; make a FauxRequest object if
@@ -57,10 +57,9 @@ class WebRequest {
        protected $protocol;
 
        public function __construct() {
-               /// @todo FIXME: This preemptive de-quoting can interfere with other web libraries
-               ///        and increases our memory footprint. It would be cleaner to do on
-               ///        demand; but currently we have no wrapper for $_SERVER etc.
-               $this->checkMagicQuotes();
+               if ( function_exists( 'get_magic_quotes_gpc' ) && get_magic_quotes_gpc() ) {
+                       throw new MWException( "MediaWiki does not function when magic quotes are enabled." );
+               }
 
                // POST overrides GET data
                // We don't use $_REQUEST here to avoid interference from cookies...
@@ -271,51 +270,6 @@ class WebRequest {
                return array();
        }
 
-       /**
-        * Recursively strips slashes from the given array;
-        * used for undoing the evil that is magic_quotes_gpc.
-        *
-        * @param array $arr will be modified
-        * @param bool $topLevel Specifies if the array passed is from the top
-        * level of the source. In PHP5 magic_quotes only escapes the first level
-        * of keys that belong to an array.
-        * @return array The original array
-        * @see http://www.php.net/manual/en/function.get-magic-quotes-gpc.php#49612
-        */
-       private function &fix_magic_quotes( &$arr, $topLevel = true ) {
-               $clean = array();
-               foreach ( $arr as $key => $val ) {
-                       if ( is_array( $val ) ) {
-                               $cleanKey = $topLevel ? stripslashes( $key ) : $key;
-                               $clean[$cleanKey] = $this->fix_magic_quotes( $arr[$key], false );
-                       } else {
-                               $cleanKey = stripslashes( $key );
-                               $clean[$cleanKey] = stripslashes( $val );
-                       }
-               }
-               $arr = $clean;
-               return $arr;
-       }
-
-       /**
-        * If magic_quotes_gpc option is on, run the global arrays
-        * through fix_magic_quotes to strip out the stupid slashes.
-        * WARNING: This should only be done once! Running a second
-        * time could damage the values.
-        */
-       private function checkMagicQuotes() {
-               $mustFixQuotes = function_exists( 'get_magic_quotes_gpc' )
-                       && get_magic_quotes_gpc();
-               if ( $mustFixQuotes ) {
-                       $this->fix_magic_quotes( $_COOKIE );
-                       $this->fix_magic_quotes( $_ENV );
-                       $this->fix_magic_quotes( $_GET );
-                       $this->fix_magic_quotes( $_POST );
-                       $this->fix_magic_quotes( $_REQUEST );
-                       $this->fix_magic_quotes( $_SERVER );
-               }
-       }
-
        /**
         * Recursively normalizes UTF-8 strings in the given array.
         *
index 71454f0..e137628 100644 (file)
@@ -41,11 +41,7 @@ header( 'X-Content-Type-Options: nosniff' );
 
 $wgRequestTime = microtime( true );
 # getrusage() does not exist on the Microsoft Windows platforms, catching this
-if ( function_exists ( 'getrusage' ) ) {
-       $wgRUstart = getrusage();
-} else {
-       $wgRUstart = array();
-}
+$wgRUstart = function_exists( 'getrusage' ) ? getrusage() : array();
 unset( $IP );
 
 # Valid web server entry point, enable includes.
@@ -61,11 +57,7 @@ define( 'MEDIAWIKI', true );
 # if we don't have permissions on parent directories.
 $IP = getenv( 'MW_INSTALL_PATH' );
 if ( $IP === false ) {
-       if ( realpath( '.' ) ) {
-               $IP = realpath( '.' );
-       } else {
-               $IP = dirname( __DIR__ );
-       }
+       $IP = realpath( '.' ) ?: dirname( __DIR__ );
 }
 
 # Start the autoloader, so that extensions can derive classes from core files
index 32efc68..bc4df34 100644 (file)
@@ -110,7 +110,7 @@ abstract class CachedAction extends FormlessAction implements ICacheHelper {
         *
         * @since 1.20
         *
-        * @param {function} $computeFunction
+        * @param callable $computeFunction
         * @param array|mixed $args
         * @param string|null $key
         *
@@ -128,7 +128,7 @@ abstract class CachedAction extends FormlessAction implements ICacheHelper {
         *
         * @since 1.20
         *
-        * @param {function} $computeFunction
+        * @param callable $computeFunction
         * @param array $args
         * @param string|null $key
         */
index c946184..7b3a356 100644 (file)
@@ -214,7 +214,7 @@ class HistoryAction extends FormlessAction {
         *
         * @param int $limit The limit number of revisions to get
         * @param int $offset
-        * @param int $direction Either HistoryPage::DIR_PREV or HistoryPage::DIR_NEXT
+        * @param int $direction Either self::DIR_PREV or self::DIR_NEXT
         * @return ResultWrapper
         */
        function fetchRevisions( $limit, $offset, $direction ) {
@@ -225,9 +225,9 @@ class HistoryAction extends FormlessAction {
 
                $dbr = wfGetDB( DB_SLAVE );
 
-               if ( $direction == HistoryPage::DIR_PREV ) {
+               if ( $direction === self::DIR_PREV ) {
                        list( $dirs, $oper ) = array( "ASC", ">=" );
-               } else { /* $direction == HistoryPage::DIR_NEXT */
+               } else { /* $direction === self::DIR_NEXT */
                        list( $dirs, $oper ) = array( "DESC", "<=" );
                }
 
@@ -273,7 +273,7 @@ class HistoryAction extends FormlessAction {
                $limit = $request->getInt( 'limit', 10 );
                $limit = min( max( $limit, 1 ), $wgFeedLimit );
 
-               $items = $this->fetchRevisions( $limit, 0, HistoryPage::DIR_NEXT );
+               $items = $this->fetchRevisions( $limit, 0, self::DIR_NEXT );
 
                // Generate feed elements enclosed between header and footer.
                $feed->outHeader();
@@ -776,18 +776,21 @@ class HistoryPager extends ReverseChronologicalPager {
        /**
         * Create a diff-to-previous link for this revision for this page.
         *
-        * @param Revision $prevRev The previous revision
-        * @param mixed $next The newer revision
+        * @param Revision $prevRev The revision being displayed
+        * @param stdClass|string|null $next The next revision in list (that is
+        *        the previous one in chronological order).
+        *        May either be a row, "unknown" or null.
         * @return string
         */
        function lastLink( $prevRev, $next ) {
                $last = $this->historyPage->message['last'];
-               # $next may either be a Row, null, or "unknown"
-               $nextRev = is_object( $next ) ? new Revision( $next ) : $next;
-               if ( is_null( $next ) ) {
+
+               if ( $next === null ) {
                        # Probably no next row
                        return $last;
-               } elseif ( $next === 'unknown' ) {
+               }
+
+               if ( $next === 'unknown' ) {
                        # Next row probably exists but is unknown, use an oldid=prev link
                        return Linker::linkKnown(
                                $this->getTitle(),
@@ -798,21 +801,25 @@ class HistoryPager extends ReverseChronologicalPager {
                                        'oldid' => 'prev'
                                )
                        );
-               } elseif ( !$prevRev->userCan( Revision::DELETED_TEXT, $this->getUser() )
+               }
+
+               $nextRev = new Revision( $next );
+
+               if ( !$prevRev->userCan( Revision::DELETED_TEXT, $this->getUser() )
                        || !$nextRev->userCan( Revision::DELETED_TEXT, $this->getUser() )
                ) {
                        return $last;
-               } else {
-                       return Linker::linkKnown(
-                               $this->getTitle(),
-                               $last,
-                               array(),
-                               array(
-                                       'diff' => $prevRev->getId(),
-                                       'oldid' => $next->rev_id
-                               )
-                       );
                }
+
+               return Linker::linkKnown(
+                       $this->getTitle(),
+                       $last,
+                       array(),
+                       array(
+                               'diff' => $prevRev->getId(),
+                               'oldid' => $next->rev_id
+                       )
+               );
        }
 
        /**
@@ -879,18 +886,3 @@ class HistoryPager extends ReverseChronologicalPager {
                return $this->preventClickjacking;
        }
 }
-
-/**
- * Backwards-compatibility alias
- */
-class HistoryPage extends HistoryAction {
-       // @codingStandardsIgnoreStart Needed "useless" override to make it public.
-       public function __construct( Page $article ) {
-               parent::__construct( $article );
-       }
-       // @codingStandardsIgnoreEnd
-
-       public function history() {
-               $this->onView();
-       }
-}
index a212915..4baf7b9 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright © 2004 Gabriel Wicke <wicke@wikidev.net>
  * http://wikidev.net/
  *
- * Based on HistoryPage and SpecialExport
+ * Based on HistoryAction and SpecialExport
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -252,40 +252,3 @@ class RawAction extends FormlessAction {
                return $ctype;
        }
 }
-
-/**
- * Backward compatibility for extensions
- *
- * @deprecated since 1.19
- */
-class RawPage extends RawAction {
-       public $mOldId;
-
-       /**
-        * @param Page $page
-        * @param WebRequest|bool $request The WebRequest (default: false).
-        */
-       function __construct( Page $page, $request = false ) {
-               wfDeprecated( __CLASS__, '1.19' );
-               parent::__construct( $page );
-
-               if ( $request !== false ) {
-                       $context = new DerivativeContext( $this->getContext() );
-                       $context->setRequest( $request );
-                       $this->context = $context;
-               }
-       }
-
-       public function view() {
-               $this->onView();
-       }
-
-       public function getOldId() {
-               # Some extensions like to set $mOldId
-               if ( $this->mOldId !== null ) {
-                       return $this->mOldId;
-               }
-
-               return parent::getOldId();
-       }
-}
index 82d303f..b3a9d83 100644 (file)
@@ -42,8 +42,10 @@ class ApiExpandTemplates extends ApiBase {
                $this->requireMaxOneParameter( $params, 'prop', 'generatexml' );
 
                if ( $params['prop'] === null ) {
-                       $this->setWarning( 'Because no values have been specified for the prop parameter, a legacy format has been used for the output.'
-                                . ' This format is deprecated, and in the future, a default value will be set for the prop parameter, causing the new format to always be used.' );
+                       $this->setWarning( 'Because no values have been specified for the prop parameter, a ' .
+                               'legacy format has been used for the output. This format is deprecated, and in ' .
+                               'the future, a default value will be set for the prop parameter, causing the new' .
+                               'format to always be used.' );
                        $prop = array();
                } else {
                        $prop = array_flip( $params['prop'] );
@@ -159,9 +161,12 @@ class ApiExpandTemplates extends ApiBase {
                        'prop' => array(
                                'Which pieces of information to get',
                                ' wikitext   - The expanded wikitext',
-                               ' categories - Any categories present in the input that are not represented in the wikitext output',
-                               ' volatile   - Whether the output is volatile and should not be reused elsewhere within the page',
-                               ' ttl        - The maximum time after which caches of the result should be invalidated',
+                               ' categories - Any categories present in the input that are not represented in ' .
+                                       'the wikitext output',
+                               ' volatile   - Whether the output is volatile and should not be reused ' .
+                                       'elsewhere within the page',
+                               ' ttl        - The maximum time after which caches of the result should be ' .
+                                       'invalidated',
                                ' parsetree  - The XML parse tree of the input',
                                'Note that if no values are selected, the result will contain the wikitext,',
                                'but the output will be in a deprecated format.',
index b906b59..2e993e3 100644 (file)
@@ -213,7 +213,7 @@ class ApiParse extends ApiBase {
                        }
 
                        if ( $this->section !== false ) {
-                               $this->content = $this->getSectionContent( $this->content, $titleObj->getText() );
+                               $this->content = $this->getSectionContent( $this->content, $titleObj->getPrefixedText() );
                        }
 
                        if ( $params['pst'] || $params['onlypst'] ) {
@@ -450,7 +450,7 @@ class ApiParse extends ApiBase {
                if ( $this->section !== false && $this->content !== null ) {
                        $this->content = $this->getSectionContent(
                                $this->content,
-                               !is_null( $pageId ) ? 'page id ' . $pageId : $page->getTitle()->getText()
+                               !is_null( $pageId ) ? 'page id ' . $pageId : $page->getTitle()->getPrefixedText()
                        );
 
                        // Not cached (save or load)
@@ -470,6 +470,10 @@ class ApiParse extends ApiBase {
                return $pout;
        }
 
+       /**
+        * @param Content $content
+        * @param string $what Identifies the content in error messages, e.g. page title.
+        */
        private function getSectionContent( Content $content, $what ) {
                // Not cached (save or load)
                $section = $content->getSection( $this->section );
index f4b28fa..f955ea6 100644 (file)
@@ -441,7 +441,7 @@ class ApiQuery extends ApiBase {
         * This method is called by the generator base when generator in the smart-continue
         * mode tries to set 'query-continue' value. ApiQuery stores those values separately
         * until the post-processing when it is known if the generation should continue or repeat.
-        * @deprecated @since 1.24
+        * @deprecated since 1.24
         * @param ApiQueryGeneratorBase $module Generator module
         * @param string $paramName
         * @param mixed $paramValue
index fb88201..ebfd8b2 100644 (file)
@@ -610,7 +610,12 @@ abstract class ApiQueryBase extends ApiBase {
         * @return bool
         */
        public function userCanSeeRevDel() {
-               return $this->getUser()->isAllowedAny( 'deletedhistory', 'deletedtext', 'suppressrevision' );
+               return $this->getUser()->isAllowedAny(
+                       'deletedhistory',
+                       'deletedtext',
+                       'suppressrevision',
+                       'viewsuppressed'
+               );
        }
 }
 
index 6994cd4..4f77078 100644 (file)
@@ -210,7 +210,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                        // check it again just in case)
                        if ( !$user->isAllowed( 'deletedhistory' ) ) {
                                $bitmask = Revision::DELETED_USER;
-                       } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                       } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                                $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
                        } else {
                                $bitmask = 0;
index 25e1f38..a94b4fa 100644 (file)
@@ -129,7 +129,7 @@ class ApiQueryFilearchive extends ApiQueryBase {
                // Exclude files this user can't view.
                if ( !$user->isAllowed( 'deletedtext' ) ) {
                        $bitmask = File::DELETED_FILE;
-               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+               } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                        $bitmask = File::DELETED_FILE | File::DELETED_RESTRICTED;
                } else {
                        $bitmask = 0;
index 3aad785..d79deec 100644 (file)
@@ -204,7 +204,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        if ( !$this->getUser()->isAllowed( 'deletedhistory' ) ) {
                                $titleBits = LogPage::DELETED_ACTION;
                                $userBits = LogPage::DELETED_USER;
-                       } elseif ( !$this->getUser()->isAllowed( 'suppressrevision' ) ) {
+                       } elseif ( !$this->getUser()->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                                $titleBits = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
                                $userBits = LogPage::DELETED_USER | LogPage::DELETED_RESTRICTED;
                        } else {
index c35d39b..44d287b 100644 (file)
@@ -329,7 +329,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
                        if ( !$user->isAllowed( 'deletedhistory' ) ) {
                                $bitmask = Revision::DELETED_USER;
-                       } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                       } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                                $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
                        } else {
                                $bitmask = 0;
@@ -342,7 +342,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        // LogPage::DELETED_ACTION hides the affected page, too.
                        if ( !$user->isAllowed( 'deletedhistory' ) ) {
                                $bitmask = LogPage::DELETED_ACTION;
-                       } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                       } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                                $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
                        } else {
                                $bitmask = 0;
index 3ff6805..582f61e 100644 (file)
@@ -318,7 +318,7 @@ class ApiQueryRevisions extends ApiQueryBase {
                                // Paranoia: avoid brute force searches (bug 17342)
                                if ( !$this->getUser()->isAllowed( 'deletedhistory' ) ) {
                                        $bitmask = Revision::DELETED_USER;
-                               } elseif ( !$this->getUser()->isAllowed( 'suppressrevision' ) ) {
+                               } elseif ( !$this->getUser()->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                                        $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
                                } else {
                                        $bitmask = 0;
index 089ce04..30201fc 100644 (file)
@@ -242,7 +242,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                $data['articlepath'] = $config->get( 'ArticlePath' );
                $data['scriptpath'] = $config->get( 'ScriptPath' );
                $data['script'] = $config->get( 'Script' );
-               $data['variantarticlepath'] = $config->get( 'VariantArticlePath'  );
+               $data['variantarticlepath'] = $config->get( 'VariantArticlePath' );
                $data['server'] = $config->get( 'Server' );
                $data['servername'] = $config->get( 'ServerName' );
                $data['wikiid'] = wfWikiID();
@@ -262,8 +262,8 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                        $data['imagelimits'][$k] = array( 'width' => $limit[0], 'height' => $limit[1] );
                }
 
-                $favicon = $config->get( 'Favicon' );
-                if ( !empty( $favicon ) ) {
+               $favicon = $config->get( 'Favicon' );
+               if ( !empty( $favicon ) ) {
                        // wgFavicon can either be a relative or an absolute path
                        // make sure we always return an absolute path
                        $data['favicon'] = wfExpandUrl( $favicon, PROTO_RELATIVE );
@@ -314,7 +314,8 @@ class ApiQuerySiteinfo extends ApiQueryBase {
 
        protected function appendNamespaceAliases( $property ) {
                global $wgContLang;
-               $aliases = array_merge( $this->getConfig()->get( 'NamespaceAliases' ), $wgContLang->getNamespaceAliases() );
+               $aliases = array_merge( $this->getConfig()->get( 'NamespaceAliases' ),
+                       $wgContLang->getNamespaceAliases() );
                $namespaces = $wgContLang->getNamespaces();
                $data = array();
                foreach ( $aliases as $title => $ns ) {
@@ -420,7 +421,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                        }
 
                        $val['url'] = wfExpandUrl( $row['iw_url'], PROTO_CURRENT );
-                       if (substr( $row['iw_url'], 0, 2) == '//') {
+                       if ( substr( $row['iw_url'], 0, 2 ) == '//' ) {
                                $val['protorel'] = '';
                        }
                        if ( isset( $row['iw_wikiid'] ) ) {
index 5f93071..29d0300 100644 (file)
@@ -193,7 +193,7 @@ class ApiQueryContributions extends ApiQueryBase {
                // see the username.
                if ( !$user->isAllowed( 'deletedhistory' ) ) {
                        $bitmask = Revision::DELETED_USER;
-               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+               } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                        $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
                } else {
                        $bitmask = 0;
index 506fb59..b1b84d8 100644 (file)
@@ -224,7 +224,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
                        if ( !$user->isAllowed( 'deletedhistory' ) ) {
                                $bitmask = Revision::DELETED_USER;
-                       } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                       } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                                $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
                        } else {
                                $bitmask = 0;
@@ -238,7 +238,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                // entirely from the watchlist, or someone could guess the title.
                if ( !$user->isAllowed( 'deletedhistory' ) ) {
                        $bitmask = LogPage::DELETED_ACTION;
-               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+               } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                        $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
                } else {
                        $bitmask = 0;
index ac64cf0..97b74e5 100644 (file)
@@ -597,7 +597,7 @@ class ApiResult extends ApiBase {
                                        $this->getMain()->getRequest()->getValues(),
                                        array_flip( $this->generatorParams )
                                );
-                       } else if ( $this->generatorContinuationData ) {
+                       } elseif ( $this->generatorContinuationData ) {
                                // All the generator-using modules are complete, but the
                                // generator isn't. Continue the generator and restart the
                                // generator-using modules
diff --git a/includes/cache/CacheHelper.php b/includes/cache/CacheHelper.php
new file mode 100644 (file)
index 0000000..401c2b9
--- /dev/null
@@ -0,0 +1,386 @@
+<?php
+/**
+ * Cache of various elements in a single cache entry.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GNU GPL v2 or later
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+
+/**
+ * Interface for all classes implementing CacheHelper functionality.
+ *
+ * @since 1.20
+ */
+interface ICacheHelper {
+       /**
+        * Sets if the cache should be enabled or not.
+        *
+        * @since 1.20
+        * @param bool $cacheEnabled
+        */
+       function setCacheEnabled( $cacheEnabled );
+
+       /**
+        * Initializes the caching.
+        * Should be called before the first time anything is added via addCachedHTML.
+        *
+        * @since 1.20
+        *
+        * @param int|null $cacheExpiry Sets the cache expiry, either ttl in seconds or unix timestamp.
+        * @param bool|null $cacheEnabled Sets if the cache should be enabled or not.
+        */
+       function startCache( $cacheExpiry = null, $cacheEnabled = null );
+
+       /**
+        * Get a cached value if available or compute it if not and then cache it if possible.
+        * The provided $computeFunction is only called when the computation needs to happen
+        * and should return a result value. $args are arguments that will be passed to the
+        * compute function when called.
+        *
+        * @since 1.20
+        *
+        * @param callable $computeFunction
+        * @param array|mixed $args
+        * @param string|null $key
+        *
+        * @return mixed
+        */
+       function getCachedValue( $computeFunction, $args = array(), $key = null );
+
+       /**
+        * Saves the HTML to the cache in case it got recomputed.
+        * Should be called after the last time anything is added via addCachedHTML.
+        *
+        * @since 1.20
+        */
+       function saveCache();
+
+       /**
+        * Sets the time to live for the cache, in seconds or a unix timestamp
+        * indicating the point of expiry...
+        *
+        * @since 1.20
+        *
+        * @param int $cacheExpiry
+        */
+       function setExpiry( $cacheExpiry );
+}
+
+/**
+ * Helper class for caching various elements in a single cache entry.
+ *
+ * To get a cached value or compute it, use getCachedValue like this:
+ * $this->getCachedValue( $callback );
+ *
+ * To add HTML that should be cached, use addCachedHTML like this:
+ * $this->addCachedHTML( $callback );
+ *
+ * The callback function is only called when needed, so do all your expensive
+ * computations here. This function should returns the HTML to be cached.
+ * It should not add anything to the PageOutput object!
+ *
+ * Before the first addCachedHTML call, you should call $this->startCache();
+ * After adding the last HTML that should be cached, call $this->saveCache();
+ *
+ * @since 1.20
+ */
+class CacheHelper implements ICacheHelper {
+       /**
+        * The time to live for the cache, in seconds or a unix timestamp indicating the point of expiry.
+        *
+        * @since 1.20
+        * @var int
+        */
+       protected $cacheExpiry = 3600;
+
+       /**
+        * List of HTML chunks to be cached (if !hasCached) or that where cached (of hasCached).
+        * If not cached already, then the newly computed chunks are added here,
+        * if it as cached already, chunks are removed from this list as they are needed.
+        *
+        * @since 1.20
+        * @var array
+        */
+       protected $cachedChunks;
+
+       /**
+        * Indicates if the to be cached content was already cached.
+        * Null if this information is not available yet.
+        *
+        * @since 1.20
+        * @var bool|null
+        */
+       protected $hasCached = null;
+
+       /**
+        * If the cache is enabled or not.
+        *
+        * @since 1.20
+        * @var bool
+        */
+       protected $cacheEnabled = true;
+
+       /**
+        * Function that gets called when initialization is done.
+        *
+        * @since 1.20
+        * @var callable
+        */
+       protected $onInitHandler = false;
+
+       /**
+        * Elements to build a cache key with.
+        *
+        * @since 1.20
+        * @var array
+        */
+       protected $cacheKey = array();
+
+       /**
+        * Sets if the cache should be enabled or not.
+        *
+        * @since 1.20
+        * @param bool $cacheEnabled
+        */
+       public function setCacheEnabled( $cacheEnabled ) {
+               $this->cacheEnabled = $cacheEnabled;
+       }
+
+       /**
+        * Initializes the caching.
+        * Should be called before the first time anything is added via addCachedHTML.
+        *
+        * @since 1.20
+        *
+        * @param int|null $cacheExpiry Sets the cache expiry, either ttl in seconds or unix timestamp.
+        * @param bool|null $cacheEnabled Sets if the cache should be enabled or not.
+        */
+       public function startCache( $cacheExpiry = null, $cacheEnabled = null ) {
+               if ( is_null( $this->hasCached ) ) {
+                       if ( !is_null( $cacheExpiry ) ) {
+                               $this->cacheExpiry = $cacheExpiry;
+                       }
+
+                       if ( !is_null( $cacheEnabled ) ) {
+                               $this->setCacheEnabled( $cacheEnabled );
+                       }
+
+                       $this->initCaching();
+               }
+       }
+
+       /**
+        * Returns a message that notifies the user he/she is looking at
+        * a cached version of the page, including a refresh link.
+        *
+        * @since 1.20
+        *
+        * @param IContextSource $context
+        * @param bool $includePurgeLink
+        *
+        * @return string
+        */
+       public function getCachedNotice( IContextSource $context, $includePurgeLink = true ) {
+               if ( $this->cacheExpiry < 86400 * 3650 ) {
+                       $message = $context->msg(
+                               'cachedspecial-viewing-cached-ttl',
+                               $context->getLanguage()->formatDuration( $this->cacheExpiry )
+                       )->escaped();
+               } else {
+                       $message = $context->msg(
+                               'cachedspecial-viewing-cached-ts'
+                       )->escaped();
+               }
+
+               if ( $includePurgeLink ) {
+                       $refreshArgs = $context->getRequest()->getQueryValues();
+                       unset( $refreshArgs['title'] );
+                       $refreshArgs['action'] = 'purge';
+
+                       $subPage = $context->getTitle()->getFullText();
+                       $subPage = explode( '/', $subPage, 2 );
+                       $subPage = count( $subPage ) > 1 ? $subPage[1] : false;
+
+                       $message .= ' ' . Linker::link(
+                               $context->getTitle( $subPage ),
+                               $context->msg( 'cachedspecial-refresh-now' )->escaped(),
+                               array(),
+                               $refreshArgs
+                       );
+               }
+
+               return $message;
+       }
+
+       /**
+        * Initializes the caching if not already done so.
+        * Should be called before any of the caching functionality is used.
+        *
+        * @since 1.20
+        */
+       protected function initCaching() {
+               if ( $this->cacheEnabled && is_null( $this->hasCached ) ) {
+                       $cachedChunks = wfGetCache( CACHE_ANYTHING )->get( $this->getCacheKeyString() );
+
+                       $this->hasCached = is_array( $cachedChunks );
+                       $this->cachedChunks = $this->hasCached ? $cachedChunks : array();
+
+                       if ( $this->onInitHandler !== false ) {
+                               call_user_func( $this->onInitHandler, $this->hasCached );
+                       }
+               }
+       }
+
+       /**
+        * Get a cached value if available or compute it if not and then cache it if possible.
+        * The provided $computeFunction is only called when the computation needs to happen
+        * and should return a result value. $args are arguments that will be passed to the
+        * compute function when called.
+        *
+        * @since 1.20
+        *
+        * @param callable $computeFunction
+        * @param array|mixed $args
+        * @param string|null $key
+        *
+        * @return mixed
+        */
+       public function getCachedValue( $computeFunction, $args = array(), $key = null ) {
+               $this->initCaching();
+
+               if ( $this->cacheEnabled && $this->hasCached ) {
+                       $value = null;
+
+                       if ( is_null( $key ) ) {
+                               $itemKey = array_keys( array_slice( $this->cachedChunks, 0, 1 ) );
+                               $itemKey = array_shift( $itemKey );
+
+                               if ( !is_integer( $itemKey ) ) {
+                                       wfWarn( "Attempted to get item with non-numeric key while " .
+                                               "the next item in the queue has a key ($itemKey) in " . __METHOD__ );
+                               } elseif ( is_null( $itemKey ) ) {
+                                       wfWarn( "Attempted to get an item while the queue is empty in " . __METHOD__ );
+                               } else {
+                                       $value = array_shift( $this->cachedChunks );
+                               }
+                       } else {
+                               if ( array_key_exists( $key, $this->cachedChunks ) ) {
+                                       $value = $this->cachedChunks[$key];
+                                       unset( $this->cachedChunks[$key] );
+                               } else {
+                                       wfWarn( "There is no item with key '$key' in this->cachedChunks in " . __METHOD__ );
+                               }
+                       }
+               } else {
+                       if ( !is_array( $args ) ) {
+                               $args = array( $args );
+                       }
+
+                       $value = call_user_func_array( $computeFunction, $args );
+
+                       if ( $this->cacheEnabled ) {
+                               if ( is_null( $key ) ) {
+                                       $this->cachedChunks[] = $value;
+                               } else {
+                                       $this->cachedChunks[$key] = $value;
+                               }
+                       }
+               }
+
+               return $value;
+       }
+
+       /**
+        * Saves the HTML to the cache in case it got recomputed.
+        * Should be called after the last time anything is added via addCachedHTML.
+        *
+        * @since 1.20
+        */
+       public function saveCache() {
+               if ( $this->cacheEnabled && $this->hasCached === false && !empty( $this->cachedChunks ) ) {
+                       wfGetCache( CACHE_ANYTHING )->set(
+                               $this->getCacheKeyString(),
+                               $this->cachedChunks,
+                               $this->cacheExpiry
+                       );
+               }
+       }
+
+       /**
+        * Sets the time to live for the cache, in seconds or a unix timestamp
+        * indicating the point of expiry...
+        *
+        * @since 1.20
+        *
+        * @param int $cacheExpiry
+        */
+       public function setExpiry( $cacheExpiry ) {
+               $this->cacheExpiry = $cacheExpiry;
+       }
+
+       /**
+        * Returns the cache key to use to cache this page's HTML output.
+        * Is constructed from the special page name and language code.
+        *
+        * @since 1.20
+        *
+        * @return string
+        * @throws MWException
+        */
+       protected function getCacheKeyString() {
+               if ( $this->cacheKey === array() ) {
+                       throw new MWException( 'No cache key set, so cannot obtain or save the CacheHelper values.' );
+               }
+
+               return call_user_func_array( 'wfMemcKey', $this->cacheKey );
+       }
+
+       /**
+        * Sets the cache key that should be used.
+        *
+        * @since 1.20
+        *
+        * @param array $cacheKey
+        */
+       public function setCacheKey( array $cacheKey ) {
+               $this->cacheKey = $cacheKey;
+       }
+
+       /**
+        * Rebuild the content, even if it's already cached.
+        * This effectively has the same effect as purging the cache,
+        * since it will be overridden with the new value on the next request.
+        *
+        * @since 1.20
+        */
+       public function rebuildOnDemand() {
+               $this->hasCached = false;
+       }
+
+       /**
+        * Sets a function that gets called when initialization of the cache is done.
+        *
+        * @since 1.20
+        *
+        * @param callable $handlerFunction
+        */
+       public function setOnInitializedHandler( $handlerFunction ) {
+               $this->onInitHandler = $handlerFunction;
+       }
+}
index 9dc3dc3..91fb878 100644 (file)
@@ -1186,7 +1186,7 @@ class LCStoreDB implements LCStore {
 
                // We must keep a separate connection to MySQL in order to avoid breaking
                // main transactions. However, SQLite deadlocks when using two connections.
-               // @TODO: get this trick to work on PostgreSQL too
+               // @todo get this trick to work on PostgreSQL too
                if ( wfGetDB( DB_MASTER )->getType() == 'mysql' ) {
                        $lb = wfGetLBFactory()->newMainLB();
                        $this->dbw = $lb->getConnection( DB_MASTER );
index 368ca5a..75cd5ee 100644 (file)
@@ -25,4 +25,5 @@
  *
  * @since 1.23
  */
-class ConfigException extends MWException {}
+class ConfigException extends MWException {
+}
index e077c77..1343858 100644 (file)
@@ -837,7 +837,7 @@ abstract class ContentHandler {
         * @return mixed String containing deletion reason or empty string, or
         *    boolean false if no revision occurred
         *
-        * @XXX &$hasHistory is extremely ugly, it's here because
+        * @todo &$hasHistory is extremely ugly, it's here because
         * WikiPage::getAutoDeleteReason() and Article::generateReason()
         * have it / want it.
         */
index d0c0bdc..076504e 100644 (file)
@@ -34,9 +34,9 @@ abstract class ContextSource implements IContextSource {
        private $context;
 
        /**
-        * Get the RequestContext object
+        * Get the base IContextSource object
         * @since 1.18
-        * @return RequestContext
+        * @return IContextSource
         */
        public function getContext() {
                if ( $this->context === null ) {
index efdc6db..2c051ba 100644 (file)
@@ -154,18 +154,14 @@ class RequestContext implements IContextSource {
         * @return bool
         */
        public function canUseWikiPage() {
-               if ( $this->wikipage !== null ) {
-                       # If there's a WikiPage object set, we can for sure get it
+               if ( $this->wikipage ) {
+                       // If there's a WikiPage object set, we can for sure get it
                        return true;
                }
+               // Only pages with legitimate titles can have WikiPages.
+               // That usually means pages in non-virtual namespaces.
                $title = $this->getTitle();
-               if ( $title === null ) {
-                       # No Title, no WikiPage
-                       return false;
-               } else {
-                       # Only namespaces whose pages are stored in the database can have WikiPage
-                       return $title->canExist();
-               }
+               return $title ? $title->canExist() : false;
        }
 
        /**
@@ -261,7 +257,7 @@ class RequestContext implements IContextSource {
                $code = strtolower( $code );
 
                # Validate $code
-               if ( empty( $code ) || !Language::isValidCode( $code ) || ( $code === 'qqq' ) ) {
+               if ( !$code || !Language::isValidCode( $code ) || $code === 'qqq' ) {
                        wfDebug( "Invalid user language code\n" );
                        $code = $wgLanguageCode;
                }
index 7d8fbe9..e13c053 100644 (file)
@@ -600,7 +600,18 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @return bool
         */
        public function doneWrites() {
-               return $this->mDoneWrites;
+               return (bool)$this->mDoneWrites;
+       }
+
+       /**
+        * Returns the last time the connection may have been used for write queries.
+        * Should return a timestamp if unsure.
+        *
+        * @return int|float UNIX timestamp or false
+        * @since 1.24
+        */
+       public function lastDoneWrites() {
+               return $this->mDoneWrites ?: false;
        }
 
        /**
@@ -1017,13 +1028,13 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *     for a successful read query, or false on failure if $tempIgnore set
         */
        public function query( $sql, $fname = __METHOD__, $tempIgnore = false ) {
-               global $wgUser, $wgDebugDBTransactions;
+               global $wgUser, $wgDebugDBTransactions, $wgDebugDumpSqlLength;
 
                $this->mLastQuery = $sql;
-               if ( !$this->mDoneWrites && $this->isWriteQuery( $sql ) ) {
+               if ( $this->isWriteQuery( $sql ) ) {
                        # Set a flag indicating that writes have been done
                        wfDebug( __METHOD__ . ': Writes done: ' . DatabaseBase::generalizeSQL( $sql ) . "\n" );
-                       $this->mDoneWrites = true;
+                       $this->mDoneWrites = microtime( true );
                }
 
                # Add a comment for easy SHOW PROCESSLIST interpretation
@@ -1091,7 +1102,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        static $cnt = 0;
 
                        $cnt++;
-                       $sqlx = substr( $commentedSql, 0, 500 );
+                       $sqlx = $wgDebugDumpSqlLength ? substr( $commentedSql, 0, $wgDebugDumpSqlLength )
+                               : $commentedSql;
                        $sqlx = strtr( $sqlx, "\t\n", '  ' );
 
                        $master = $isMaster ? 'master' : 'slave';
@@ -1122,7 +1134,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        if ( $this->ping() ) {
                                global $wgRequestTime;
                                wfDebug( "Reconnected\n" );
-                               $sqlx = substr( $commentedSql, 0, 500 );
+                               $sqlx = $wgDebugDumpSqlLength ? substr( $commentedSql, 0, $wgDebugDumpSqlLength )
+                                       : $commentedSql;
                                $sqlx = strtr( $sqlx, "\t\n", '  ' );
                                $elapsed = round( microtime( true ) - $wgRequestTime, 3 );
                                if ( $elapsed < 300 ) {
@@ -1769,9 +1782,10 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                # All newlines, tabs, etc replaced by single space
                $sql = preg_replace( '/\s+/', ' ', $sql );
 
-               # All numbers => N
+               # All numbers => N,
+               # except the ones surrounded by characters, e.g. l10n
                $sql = preg_replace( '/-?\d+(,-?\d+)+/s', 'N,...,N', $sql );
-               $sql = preg_replace( '/-?\d+/s', 'N', $sql );
+               $sql = preg_replace( '/(?<![a-zA-Z])-?\d+(?![a-zA-Z])/s', 'N', $sql );
 
                return $sql;
        }
index fe5fa1f..49dcbc0 100644 (file)
@@ -827,7 +827,7 @@ __INDEXATTR__;
         * In Postgres when using FOR UPDATE, only the main table and tables that are inner joined
         * can be locked. That means tables in an outer join cannot be FOR UPDATE locked. Trying to do
         * so causes a DB error. This wrapper checks which tables can be locked and adjusts it accordingly.
-        * 
+        *
         * MySQL uses "ORDER BY NULL" as an optimization hint, but that syntax is illegal in PostgreSQL.
         */
        function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__,
index 3e063c6..af687b2 100644 (file)
@@ -342,9 +342,9 @@ class DatabaseSqlite extends DatabaseBase {
         */
        function numFields( $res ) {
                $r = $res instanceof ResultWrapper ? $res->result : $res;
-               if ( is_array($r) && count( $r ) > 0 ){
+               if ( is_array( $r ) && count( $r ) > 0 ) {
                        // The size of the result array is twice the number of fields. (Bug: 65578)
-                       return count( $r[0] ) / 2 ;
+                       return count( $r[0] ) / 2;
                } else {
                        // If the result is empty return 0
                        return 0;
index 5353288..01440f4 100644 (file)
@@ -948,6 +948,14 @@ class LoadBalancer {
                }
        }
 
+       /**
+        * @return bool Whether a master connection is already open
+        * @since 1.24
+        */
+       function hasMasterConnection() {
+               return $this->isOpen( $this->getWriterIndex() );
+       }
+
        /**
         * Determine if there are any pending changes that need to be rolled back
         * or committed.
index 0789b21..2c984f7 100644 (file)
@@ -358,6 +358,7 @@ class LinksUpdate extends SqlDataUpdate {
                        foreach ( $diffs as $dbk => $id ) {
                                $arr[] = array(
                                        'pl_from' => $this->mId,
+                                       'pl_from_namespace' => $this->mTitle->getNamespace(),
                                        'pl_namespace' => $ns,
                                        'pl_title' => $dbk
                                );
@@ -379,6 +380,7 @@ class LinksUpdate extends SqlDataUpdate {
                        foreach ( $diffs as $dbk => $id ) {
                                $arr[] = array(
                                        'tl_from' => $this->mId,
+                                       'tl_from_namespace' => $this->mTitle->getNamespace(),
                                        'tl_namespace' => $ns,
                                        'tl_title' => $dbk
                                );
@@ -400,6 +402,7 @@ class LinksUpdate extends SqlDataUpdate {
                foreach ( $diffs as $iname => $dummy ) {
                        $arr[] = array(
                                'il_from' => $this->mId,
+                               'il_from_namespace' => $this->mTitle->getNamespace(),
                                'il_to' => $iname
                        );
                }
index ddd2e09..901ef9f 100644 (file)
@@ -49,23 +49,32 @@ class ViewCountUpdate implements DeferrableUpdate {
                $dbw = wfGetDB( DB_MASTER );
 
                if ( $wgHitcounterUpdateFreq <= 1 || $dbw->getType() == 'sqlite' ) {
-                       $dbw->update(
-                               'page', array( 'page_counter = page_counter + 1' ),
-                               array( 'page_id' => $this->id ),
-                               __METHOD__
-                       );
-
+                       $id = $this->id;
+                       $method = __METHOD__;
+                       $dbw->onTransactionIdle( function() use ( $dbw, $id, $method ) {
+                               try {
+                                       $dbw->update( 'page',
+                                               array( 'page_counter = page_counter + 1' ),
+                                               array( 'page_id' => $id ),
+                                               $method
+                                       );
+                               } catch ( DBError $e ) {
+                                       MWExceptionHandler::logException( $e );
+                               }
+                       } );
                        return;
                }
 
                # Not important enough to warrant an error page in case of failure
                try {
+                       // Since `hitcounter` is non-transactional, the contention is minimal
                        $dbw->insert( 'hitcounter', array( 'hc_id' => $this->id ), __METHOD__ );
                        $checkfreq = intval( $wgHitcounterUpdateFreq / 25 + 1 );
                        if ( rand() % $checkfreq == 0 && $dbw->lastErrno() == 0 ) {
                                $this->collect();
                        }
                } catch ( DBError $e ) {
+                       MWExceptionHandler::logException( $e );
                }
        }
 
@@ -75,7 +84,6 @@ class ViewCountUpdate implements DeferrableUpdate {
                $dbw = wfGetDB( DB_MASTER );
 
                $rown = $dbw->selectField( 'hitcounter', 'COUNT(*)', array(), __METHOD__ );
-
                if ( $rown < $wgHitcounterUpdateFreq ) {
                        return;
                }
@@ -83,14 +91,13 @@ class ViewCountUpdate implements DeferrableUpdate {
                wfProfileIn( __METHOD__ . '-collect' );
                $old_user_abort = ignore_user_abort( true );
 
-               $dbw->lockTables( array(), array( 'hitcounter' ), __METHOD__, false );
-
                $dbType = $dbw->getType();
                $tabletype = $dbType == 'mysql' ? "ENGINE=HEAP " : '';
                $hitcounterTable = $dbw->tableName( 'hitcounter' );
                $acchitsTable = $dbw->tableName( 'acchits' );
                $pageTable = $dbw->tableName( 'page' );
 
+               $dbw->lockTables( array(), array( 'hitcounter' ), __METHOD__, false );
                $dbw->query( "CREATE TEMPORARY TABLE $acchitsTable $tabletype AS " .
                        "SELECT hc_id,COUNT(*) AS hc_n FROM $hitcounterTable " .
                        'GROUP BY hc_id', __METHOD__ );
index 3aad389..61eb760 100644 (file)
@@ -972,7 +972,7 @@ class DifferenceEngine extends ContextSource {
                }
 
                // Sanity: don't show the notice if too many rows must be scanned
-               // @TODO: show some special message for that case
+               // @todo show some special message for that case
                $nEdits = $this->mNewPage->countRevisionsBetween( $oldRev, $newRev, 1000 );
                if ( $nEdits > 0 && $nEdits <= 1000 ) {
                        $limit = 100; // use diff-multi-manyusers if too many users
index e7c1f6f..2b0c3c2 100644 (file)
@@ -213,7 +213,7 @@ class FSFileBackend extends FileBackendStore {
                                wfEscapeShellArg( $this->cleanPathSlashes( $tempFile->getPath() ) ),
                                wfEscapeShellArg( $this->cleanPathSlashes( $dest ) )
                        ) );
-                       $handler = function( $errors, Status $status, array $params, $cmd ) {
+                       $handler = function ( $errors, Status $status, array $params, $cmd ) {
                                if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
                                        $status->fatal( 'backend-fail-create', $params['dst'] );
                                        trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
@@ -252,7 +252,7 @@ class FSFileBackend extends FileBackendStore {
                                wfEscapeShellArg( $this->cleanPathSlashes( $params['src'] ) ),
                                wfEscapeShellArg( $this->cleanPathSlashes( $dest ) )
                        ) );
-                       $handler = function( $errors, Status $status, array $params, $cmd ) {
+                       $handler = function ( $errors, Status $status, array $params, $cmd ) {
                                if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
                                        $status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
                                        trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
@@ -310,7 +310,7 @@ class FSFileBackend extends FileBackendStore {
                                wfEscapeShellArg( $this->cleanPathSlashes( $source ) ),
                                wfEscapeShellArg( $this->cleanPathSlashes( $dest ) )
                        ) );
-                       $handler = function( $errors, Status $status, array $params, $cmd ) {
+                       $handler = function ( $errors, Status $status, array $params, $cmd ) {
                                if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
                                        $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
                                        trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
@@ -370,7 +370,7 @@ class FSFileBackend extends FileBackendStore {
                                wfEscapeShellArg( $this->cleanPathSlashes( $source ) ),
                                wfEscapeShellArg( $this->cleanPathSlashes( $dest ) )
                        ) );
-                       $handler = function( $errors, Status $status, array $params, $cmd ) {
+                       $handler = function ( $errors, Status $status, array $params, $cmd ) {
                                if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
                                        $status->fatal( 'backend-fail-move', $params['src'], $params['dst'] );
                                        trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
@@ -415,7 +415,7 @@ class FSFileBackend extends FileBackendStore {
                                wfIsWindows() ? 'DEL' : 'unlink',
                                wfEscapeShellArg( $this->cleanPathSlashes( $source ) )
                        ) );
-                       $handler = function( $errors, Status $status, array $params, $cmd ) {
+                       $handler = function ( $errors, Status $status, array $params, $cmd ) {
                                if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
                                        $status->fatal( 'backend-fail-delete', $params['src'] );
                                        trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
index ee9a49d..631d949 100644 (file)
@@ -69,7 +69,7 @@ abstract class FileBackendStore extends FileBackend {
                $this->mimeCallback = isset( $config['mimeCallback'] )
                        ? $config['mimeCallback']
                        : function ( $storagePath, $content, $fsPath ) {
-                               // @TODO: handle the case of extension-less files using the contents
+                               // @todo handle the case of extension-less files using the contents
                                return StreamFile::contentTypeFromPath( $storagePath ) ?: 'unknown/unknown';
                        };
                $this->memCache = new EmptyBagOStuff(); // disabled by default
@@ -1696,7 +1696,7 @@ abstract class FileBackendStore extends FileBackend {
                if ( !$this->memCache->add( $key, $val, $ttl ) && !empty( $val['latest'] ) ) {
                        $this->memCache->merge(
                                $key,
-                               function( BagOStuff $cache, $key, $cValue ) use ( $val ) {
+                               function ( BagOStuff $cache, $key, $cValue ) use ( $val ) {
                                        return ( is_array( $cValue ) && empty( $cValue['latest'] ) )
                                                ? $val // update the stat cache with the lastest info
                                                : false; // do nothing (cache is salted or some error happened)
index b58e901..450ccc8 100644 (file)
@@ -108,7 +108,7 @@ abstract class DBLockManager extends QuorumLockManager {
                $this->session = wfRandomString( 31 );
        }
 
-       // @TODO: change this code to work in one batch
+       // @todo change this code to work in one batch
        protected function getLocksOnServer( $lockSrv, array $pathsByType ) {
                $status = Status::newGood();
                foreach ( $pathsByType as $type => $paths ) {
index a01895f..1f2defe 100644 (file)
@@ -1268,6 +1268,7 @@ class LocalFile extends File {
                # Fail now if the file isn't there
                if ( !$this->fileExists ) {
                        wfDebug( __METHOD__ . ": File " . $this->getRel() . " went missing!\n" );
+                       $dbw->rollback( __METHOD__ );
                        wfProfileOut( __METHOD__ );
 
                        return false;
index 2bf9f8b..a198037 100644 (file)
@@ -29,7 +29,7 @@ class HTMLSelectField extends HTMLFormField {
 
                $allowedParams = array( 'tabindex', 'size' );
                $customParams = $this->getAttributes( $allowedParams );
-               foreach( $customParams as $name => $value ) {
+               foreach ( $customParams as $name => $value ) {
                        $select->setAttribute( $name, $value );
                }
 
index 28dac46..b25ea09 100644 (file)
@@ -72,6 +72,7 @@ abstract class DatabaseUpdater {
                'PopulateImageSha1',
                'FixExtLinksProtocolRelative',
                'PopulateFilearchiveSha1',
+               'PopulateBacklinkNamespace'
        );
 
        /**
index 7c67ee8..0294c42 100644 (file)
@@ -119,7 +119,6 @@ abstract class Installer {
                'envCheckRegisterGlobals',
                'envCheckBrokenXML',
                'envCheckMagicQuotes',
-               'envCheckMagicSybase',
                'envCheckMbstring',
                'envCheckSafeMode',
                'envCheckXML',
@@ -137,6 +136,7 @@ abstract class Installer {
                'envCheckLibicu',
                'envCheckSuhosinMaxValueLength',
                'envCheckCtype',
+               'envCheckIconv',
                'envCheckJSON',
        );
 
@@ -218,6 +218,7 @@ abstract class Installer {
                '_LicenseCode' => 'none',
                '_CCDone' => false,
                '_Extensions' => array(),
+               '_Skins' => array(),
                '_MemCachedServers' => '',
                '_UpgradeKeySupplied' => false,
                '_ExistingDBSettings' => false,
@@ -760,31 +761,19 @@ abstract class Installer {
        }
 
        /**
-        * Environment check for magic_quotes_runtime.
+        * Environment check for magic_quotes_(gpc|runtime|sybase).
         * @return bool
         */
        protected function envCheckMagicQuotes() {
-               if ( wfIniGetBool( "magic_quotes_runtime" ) ) {
-                       $this->showError( 'config-magic-quotes-runtime' );
-
-                       return false;
-               }
-
-               return true;
-       }
-
-       /**
-        * Environment check for magic_quotes_sybase.
-        * @return bool
-        */
-       protected function envCheckMagicSybase() {
-               if ( wfIniGetBool( 'magic_quotes_sybase' ) ) {
-                       $this->showError( 'config-magic-quotes-sybase' );
-
-                       return false;
+               $status = true;
+               foreach ( array( 'gpc', 'runtime', 'sybase' ) as $magicJunk ) {
+                       if ( wfIniGetBool( "magic_quotes_$magicJunk" ) ) {
+                               $this->showError( "config-magic-quotes-$magicJunk" );
+                               $status = false;
+                       }
                }
 
-               return true;
+               return $status;
        }
 
        /**
@@ -1206,6 +1195,19 @@ abstract class Installer {
                return true;
        }
 
+       /**
+        * @return bool
+        */
+       protected function envCheckIconv() {
+               if ( !function_exists( 'iconv' ) ) {
+                       $this->showError( 'config-iconv' );
+
+                       return false;
+               }
+
+               return true;
+       }
+
        /**
         * @return bool
         */
@@ -1426,17 +1428,20 @@ abstract class Installer {
        }
 
        /**
-        * Finds extensions that follow the format /extensions/Name/Name.php,
+        * Finds extensions that follow the format /$directory/Name/Name.php,
         * and returns an array containing the value for 'Name' for each found extension.
         *
+        * Reasonable values for $directory include 'extensions' (the default) and 'skins'.
+        *
+        * @param string $directory Directory to search in
         * @return array
         */
-       public function findExtensions() {
+       public function findExtensions( $directory = 'extensions' ) {
                if ( $this->getVar( 'IP' ) === null ) {
                        return array();
                }
 
-               $extDir = $this->getVar( 'IP' ) . '/extensions';
+               $extDir = $this->getVar( 'IP' ) . '/' . $directory;
                if ( !is_readable( $extDir ) || !is_dir( $extDir ) ) {
                        return array();
                }
index 100dd10..c0ba300 100644 (file)
@@ -49,6 +49,7 @@ class LocalSettingsGenerator {
                $this->installer = $installer;
 
                $this->extensions = $installer->getVar( '_Extensions' );
+               $this->skins = $installer->getVar( '_Skins' );
 
                $db = $installer->getDBInstaller( $installer->getVar( 'wgDBtype' ) );
 
@@ -129,13 +130,26 @@ class LocalSettingsGenerator {
 
        /**
         * Return the full text of the generated LocalSettings.php file,
-        * including the extensions
+        * including the extensions and skins.
         *
         * @return string
         */
        public function getText() {
                $localSettings = $this->getDefaultText();
 
+               if ( count( $this->skins ) ) {
+                       $localSettings .= "
+# Enabled skins.
+# The following skins were automatically enabled:\n";
+
+                       foreach ( $this->skins as $skinName ) {
+                               $encSkinName = self::escapePhpString( $skinName );
+                               $localSettings .= "require_once \"\$IP/skins/$encSkinName/$encSkinName.php\";\n";
+                       }
+
+                       $localSettings .= "\n";
+               }
+
                if ( count( $this->extensions ) ) {
                        $localSettings .= "
 # Enabled Extensions. Most extensions are enabled by including the base extension file here
@@ -146,9 +160,12 @@ class LocalSettingsGenerator {
                                $encExtName = self::escapePhpString( $extName );
                                $localSettings .= "require_once \"\$IP/extensions/$encExtName/$encExtName.php\";\n";
                        }
+
+                       $localSettings .= "\n";
                }
 
-               $localSettings .= "\n\n# End of automatically generated settings.
+               $localSettings .= "
+# End of automatically generated settings.
 # Add more configuration options below.\n\n";
 
                return $localSettings;
@@ -220,6 +237,8 @@ class LocalSettingsGenerator {
                                                wfBoolToStr( $perm ) . ";\n";
                                }
                        }
+                       $groupRights .= "\n";
+
                        if ( ( isset( $this->groupPermissions['*']['edit'] ) &&
                                        $this->groupPermissions['*']['edit'] === false )
                                && ( isset( $this->groupPermissions['*']['createaccount'] ) &&
@@ -227,12 +246,12 @@ class LocalSettingsGenerator {
                                && ( isset( $this->groupPermissions['*']['read'] ) &&
                                        $this->groupPermissions['*']['read'] !== false )
                        ) {
-                               $noFollow = "\n# Set \$wgNoFollowLinks to true if you open up your wiki to editing by\n"
+                               $noFollow = "# Set \$wgNoFollowLinks to true if you open up your wiki to editing by\n"
                                        . "# the general public and wish to apply nofollow to external links as a\n"
                                        . "# deterrent to spammers. Nofollow is not a comprehensive anti-spam solution\n"
                                        . "# and open wikis will generally require other anti-spam measures; for more\n"
                                        . "# information, see https://www.mediawiki.org/wiki/Manual:Combating_spam\n"
-                                       . "\$wgNoFollowLinks = false;";
+                                       . "\$wgNoFollowLinks = false;\n\n";
                        }
                }
 
@@ -352,10 +371,6 @@ ${serverSetting}
 # web installer while LocalSettings.php is in place
 \$wgUpgradeKey = \"{$this->values['wgUpgradeKey']}\";
 
-## Default skin: you can change the default skin. Use the internal symbolic
-## names, ie 'vector', 'monobook':
-\$wgDefaultSkin = \"{$this->values['wgDefaultSkin']}\";
-
 ## For attaching licensing metadata to pages, and displaying an
 ## appropriate copyright notice / icon. GNU Free Documentation
 ## License and Creative Commons licenses are supported so far.
@@ -367,6 +382,9 @@ ${serverSetting}
 # Path to the GNU diff3 utility. Used for conflict resolution.
 \$wgDiff3 = \"{$this->values['wgDiff3']}\";
 
-{$groupRights}{$noFollow}";
+{$groupRights}{$noFollow}## Default skin: you can change the default skin. Use the internal symbolic
+## names, ie 'vector', 'monobook':
+\$wgDefaultSkin = \"{$this->values['wgDefaultSkin']}\";
+";
        }
 }
index 10f6692..b82e611 100644 (file)
@@ -120,7 +120,7 @@ class MysqlInstaller extends DatabaseInstaller {
                if ( !strlen( $newValues['_InstallUser'] ) ) {
                        $status->fatal( 'config-db-username-empty' );
                }
-               if (!strlen( $newValues['_InstallPassword'] ) ) {
+               if ( !strlen( $newValues['_InstallPassword'] ) ) {
                        $status->fatal( 'config-db-password-empty', $newValues['_InstallUser'] );
                }
                if ( !$status->isOK() ) {
index 853ee0b..dcf37b6 100644 (file)
@@ -256,6 +256,9 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'dropField', 'recentchanges', 'rc_cur_time', 'patch-drop-rc_cur_time.sql' ),
                        array( 'addIndex', 'watchlist', 'wl_user_notificationtimestamp', 'patch-watchlist-user-notificationtimestamp-index.sql' ),
                        array( 'addField', 'page', 'page_lang', 'patch-page_lang.sql' ),
+                       array( 'addField', 'pagelinks', 'pl_from_namespace', 'patch-pl_from_namespace.sql' ),
+                       array( 'addField', 'templatelinks', 'tl_from_namespace', 'patch-tl_from_namespace.sql' ),
+                       array( 'addField', 'imagelinks', 'il_from_namespace', 'patch-il_from_namespace.sql' ),
                );
        }
 
index 89a6978..4caf902 100644 (file)
@@ -84,7 +84,7 @@ class PostgresInstaller extends DatabaseInstaller {
        function submitConnectForm() {
                // Get variables from the request
                $newValues = $this->setVarsFromRequest( array(
-                       'wgDBserver', 'wgDBport','wgDBname', 'wgDBmwschema',
+                       'wgDBserver', 'wgDBport', 'wgDBname', 'wgDBmwschema',
                        '_InstallUser', '_InstallPassword'
                ) );
 
index 8404c2d..9e8ee94 100644 (file)
@@ -415,6 +415,9 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'addPgIndex', 'page_props', 'pp_propname_sortkey_page',
                                        '( pp_propname, pp_sortkey, pp_page ) WHERE ( pp_sortkey IS NOT NULL )' ),
                        array( 'addPgField', 'page', 'page_lang', 'TEXT default NULL' ),
+                       array( 'addPgField', 'pagelinks', 'pl_from_namespace', 'INTEGER NOT NULL DEFAULT 0' ),
+                       array( 'addPgField', 'templatelinks', 'tl_from_namespace', 'INTEGER NOT NULL DEFAULT 0' ),
+                       array( 'addPgField', 'imagelinks', 'il_from_namespace', 'INTEGER NOT NULL DEFAULT 0' ),
                );
        }
 
@@ -694,7 +697,7 @@ END;
                        $this->output( "...column '$table.$field' is already of type '$newtype'\n" );
                } else {
                        $this->output( "Purging data from cache table '$table'\n" );
-                       $this->db->query("DELETE from $table" );
+                       $this->db->query( "DELETE from $table" );
                        $this->output( "Changing column type of '$table.$field' from '{$fi->type()}' to '$newtype'\n" );
                        $sql = "ALTER TABLE $table ALTER $field TYPE $newtype";
                        if ( strlen( $default ) ) {
index cf3f065..ab5ab7d 100644 (file)
@@ -134,6 +134,9 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'dropField', 'recentchanges', 'rc_cur_time', 'patch-drop-rc_cur_time.sql' ),
                        array( 'addIndex', 'watchlist', 'wl_user_notificationtimestamp', 'patch-watchlist-user-notificationtimestamp-index.sql' ),
                        array( 'addField', 'page', 'page_lang', 'patch-page-page_lang.sql' ),
+                       array( 'addField', 'pagelinks', 'pl_from_namespace', 'patch-pl_from_namespace.sql' ),
+                       array( 'addField', 'templatelinks', 'tl_from_namespace', 'patch-tl_from_namespace.sql' ),
+                       array( 'addField', 'imagelinks', 'il_from_namespace', 'patch-il_from_namespace.sql' ),
                );
        }
 
index ea86231..3515469 100644 (file)
@@ -950,6 +950,7 @@ class WebInstaller extends Installer {
         *      var:             The variable to be configured (required)
         *      label:           The message name for the label (required)
         *      itemLabelPrefix: The message name prefix for the item labels (required)
+        *      itemLabels:      List of message names to use for the item labels instead of itemLabelPrefix, keyed by values
         *      values:          List of allowed values (required)
         *      itemAttribs:     Array of attribute arrays, outer key is the value name (optional)
         *      commonAttribs:   Attribute array applied to all items
@@ -960,23 +961,49 @@ class WebInstaller extends Installer {
         * @return string
         */
        public function getRadioSet( $params ) {
-               if ( !isset( $params['controlName'] ) ) {
-                       $params['controlName'] = 'config_' . $params['var'];
-               }
-
-               if ( !isset( $params['value'] ) ) {
-                       $params['value'] = $this->getVar( $params['var'] );
-               }
+               $items = $this->getRadioElements( $params );
 
                if ( !isset( $params['label'] ) ) {
                        $label = '';
                } else {
                        $label = $params['label'];
                }
+
+               if ( !isset( $params['controlName'] ) ) {
+                       $params['controlName'] = 'config_' . $params['var'];
+               }
+
                if ( !isset( $params['help'] ) ) {
                        $params['help'] = "";
                }
+
                $s = "<ul>\n";
+               foreach ( $items as $value => $item ) {
+                       $s .= "<li>$item</li>\n";
+               }
+               $s .= "</ul>\n";
+
+               return $this->label( $label, $params['controlName'], $s, $params['help'] );
+       }
+
+       /**
+        * Get a set of labelled radio buttons. You probably want to use getRadioSet(), not this.
+        *
+        * @see getRadioSet
+        *
+        * @return array
+        */
+       public function getRadioElements( $params ) {
+               if ( !isset( $params['controlName'] ) ) {
+                       $params['controlName'] = 'config_' . $params['var'];
+               }
+
+               if ( !isset( $params['value'] ) ) {
+                       $params['value'] = $this->getVar( $params['var'] );
+               }
+
+               $items = array();
+
                foreach ( $params['values'] as $value ) {
                        $itemAttribs = array();
 
@@ -993,19 +1020,17 @@ class WebInstaller extends Installer {
                        $itemAttribs['id'] = $id;
                        $itemAttribs['tabindex'] = $this->nextTabIndex();
 
-                       $s .=
-                               '<li>' .
+                       $items[$value] =
                                Xml::radio( $params['controlName'], $value, $checked, $itemAttribs ) .
                                '&#160;' .
                                Xml::tags( 'label', array( 'for' => $id ), $this->parse(
-                                       wfMessage( $params['itemLabelPrefix'] . strtolower( $value ) )->plain()
-                               ) ) .
-                               "</li>\n";
+                                       isset( $params['itemLabels'] ) ?
+                                               wfMessage( $params['itemLabels'][$value] )->plain() :
+                                               wfMessage( $params['itemLabelPrefix'] . strtolower( $value ) )->plain()
+                               ) );
                }
 
-               $s .= "</ul>\n";
-
-               return $this->label( $label, $params['controlName'], $s, $params['help'] );
+               return $items;
        }
 
        /**
@@ -1041,7 +1066,11 @@ class WebInstaller extends Installer {
                $newValues = array();
 
                foreach ( $varNames as $name ) {
-                       $value = trim( $this->request->getVal( $prefix . $name ) );
+                       $value = $this->request->getVal( $prefix . $name );
+                       // bug 30524, do not trim passwords
+                       if ( stripos( $name, 'password' ) === false ) {
+                               $value = trim( $value );
+                       }
                        $newValues[$name] = $value;
 
                        if ( $value === null ) {
index 97f4830..174120f 100644 (file)
@@ -126,7 +126,6 @@ class WebInstallerOutput {
        public function getCSS() {
                // Horrible, horrible hack: the installer is currently hardcoded to use the Vector skin, so load
                // it here. Include instead of require, as this will work without it, it will just look bad.
-               global $wgResourceModules;
                global $wgStyleDirectory;
                include_once "$wgStyleDirectory/Vector/Vector.php";
 
index 677af4f..c26028d 100644 (file)
@@ -145,11 +145,12 @@ abstract class WebInstallerPage {
 
        /**
         * @param string $var
+        * @param mixed $default
         *
         * @return mixed
         */
-       public function getVar( $var ) {
-               return $this->parent->getVar( $var );
+       public function getVar( $var, $default = null ) {
+               return $this->parent->getVar( $var, $default );
        }
 
        /**
@@ -948,6 +949,7 @@ class WebInstallerOptions extends WebInstallerPage {
         */
        public function execute() {
                if ( $this->getVar( '_SkipOptional' ) == 'skip' ) {
+                       $this->submitSkins();
                        return 'skip';
                }
                if ( $this->parent->request->wasPosted() ) {
@@ -1025,6 +1027,38 @@ class WebInstallerOptions extends WebInstallerPage {
                        $this->getFieldSetEnd()
                );
 
+               $skins = $this->parent->findExtensions( 'skins' );
+               $skinHtml = $this->getFieldSetStart( 'config-skins' );
+
+               if ( $skins ) {
+                       $skinNames = array_map( 'strtolower', $skins );
+
+                       $radioButtons = $this->parent->getRadioElements( array(
+                               'var' => 'wgDefaultSkin',
+                               'itemLabels' => array_fill_keys( $skinNames, 'config-skins-use-as-default' ),
+                               'values' => $skinNames,
+                               'value' => $this->getVar( 'wgDefaultSkin', $this->getDefaultSkin( $skinNames ) ),
+                       ) );
+
+                       foreach ( $skins as $skin ) {
+                               $skinHtml .=
+                                       '<div class="config-skins-item">' .
+                                       $this->parent->getCheckBox( array(
+                                               'var' => "skin-$skin",
+                                               'rawtext' => $skin,
+                                               'value' => $this->getVar( "skin-$skin", true ), // all found skins enabled by default
+                                       ) ) .
+                                       '<div class="config-skins-use-as-default">' . $radioButtons[ strtolower( $skin ) ] . '</div>' .
+                                       '</div>';
+                       }
+               } else {
+                       $skinHtml .= $this->parent->getWarningBox( wfMessage( 'config-skins-missing' )->plain() );
+               }
+
+               $skinHtml .= $this->parent->getHelpBox( 'config-skins-help' ) .
+                       $this->getFieldSetEnd();
+               $this->addHTML( $skinHtml );
+
                $extensions = $this->parent->findExtensions();
 
                if ( $extensions ) {
@@ -1220,6 +1254,40 @@ class WebInstallerOptions extends WebInstallerPage {
                $this->addHTML( $this->getCCDoneBox() );
        }
 
+       /**
+        * Returns a default value to be used for $wgDefaultSkin: the preferred skin, if available among
+        * the installed skins, or any other one otherwise.
+        *
+        * @param string[] $skinNames Names of installed skins.
+        * @return string
+        */
+       public function getDefaultSkin( array $skinNames ) {
+               $defaultSkin = $GLOBALS['wgDefaultSkin'];
+               if ( in_array( $defaultSkin, $skinNames ) ) {
+                       return $defaultSkin;
+               } else {
+                       return $skinNames[0];
+               }
+       }
+
+       /**
+        * If the user skips this installer page, we still need to set up the default skins, but ignore
+        * everything else.
+        *
+        * @return bool
+        */
+       public function submitSkins() {
+               $skins = $this->parent->findExtensions( 'skins' );
+               $this->parent->setVar( '_Skins', $skins );
+
+               if ( $skins ) {
+                       $skinNames = array_map( 'strtolower', $skins );
+                       $this->parent->setVar( 'wgDefaultSkin', $this->getDefaultSkin( $skinNames ) );
+               }
+
+               return true;
+       }
+
        /**
         * @return bool
         */
@@ -1228,7 +1296,7 @@ class WebInstallerOptions extends WebInstallerPage {
                        'wgEnableEmail', 'wgPasswordSender', 'wgEnableUploads', 'wgLogo',
                        'wgEnableUserEmail', 'wgEnotifUserTalk', 'wgEnotifWatchlist',
                        'wgEmailAuthentication', 'wgMainCacheType', '_MemCachedServers',
-                       'wgUseInstantCommons' ) );
+                       'wgUseInstantCommons', 'wgDefaultSkin' ) );
 
                $retVal = true;
 
@@ -1263,6 +1331,27 @@ class WebInstallerOptions extends WebInstallerPage {
                        $this->setVar( 'wgRightsIcon', '' );
                }
 
+               $skinsAvailable = $this->parent->findExtensions( 'skins' );
+               $skinsToInstall = array();
+               foreach ( $skinsAvailable as $skin ) {
+                       $this->parent->setVarsFromRequest( array( "skin-$skin" ) );
+                       if ( $this->getVar( "skin-$skin" ) ) {
+                               $skinsToInstall[] = $skin;
+                       }
+               }
+               $this->parent->setVar( '_Skins', $skinsToInstall );
+
+               if ( !$skinsToInstall && $skinsAvailable ) {
+                       $this->parent->showError( 'config-skins-must-enable-some' );
+                       $retVal = false;
+               }
+               $defaultSkin = $this->getVar( 'wgDefaultSkin' );
+               $skinsToInstallLowercase = array_map( 'strtolower', $skinsToInstall );
+               if ( $skinsToInstall && array_search( $defaultSkin, $skinsToInstallLowercase ) === false ) {
+                       $this->parent->showError( 'config-skins-must-enable-default' );
+                       $retVal = false;
+               }
+
                $extsAvailable = $this->parent->findExtensions();
                $extsToInstall = array();
                foreach ( $extsAvailable as $ext ) {
index 376a227..04c18aa 100644 (file)
@@ -51,7 +51,6 @@
        "config-env-good": "Асяродзьдзе было праверанае.\nВы можаце ўсталёўваць MediaWiki.",
        "config-env-bad": "Асяродзьдзе было праверанае.\nУсталяваньне MediaWiki немагчымае.",
        "config-env-php": "Усталяваны PHP $1.",
-       "config-env-php-toolow": "Усталяваны PHP $1.\nАле MediaWiki патрабуе PHP вэрсіі $2 ці навейшай.",
        "config-unicode-using-utf8": "Выкарыстоўваецца бібліятэка Unicode-нармалізацыі Браяна Вібэра",
        "config-unicode-using-intl": "Выкарыстоўваецца [http://pecl.php.net/intl intl пашырэньне з PECL] для Unicode-нармалізацыі",
        "config-unicode-pure-php-warning": "'''Папярэджаньне''': [http://pecl.php.net/intl Пашырэньне intl з PECL] — ня слушнае для Unicode-нармалізацыі, цяпер выкарыстоўваецца марудная PHP-рэалізацыя.\nКалі ў Вас сайт з высокай наведваемасьцю, раім пачытаць пра [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode-нармалізацыю].",
@@ -59,7 +58,7 @@
        "config-no-db": "Немагчыма знайсьці адпаведны драйвэр базы зьвестак. Вам неабходна ўсталяваць драйвэр базы зьвестак для PHP.\nПадтрымліваюцца наступныя тыпы базаў зьвестак: $1.\n\nКалі вы скампілявалі PHP самастойна, зьмяніце канфігурацыю, каб уключыць кліента базы зьвестак, напрыклад, з дапамогай <code>./configure --with-mysqli</code>.\nКалі вы ўсталявалі PHP з пакунку Debian або Ubuntu, тады вам трэба таксама ўсталяваць, напрыклад, пакунак <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Папярэджаньне''': усталяваны SQLite $1, у той час, калі мінімальная сумяшчальная вэрсія — $2. SQLite ня будзе даступны.",
        "config-no-fts3": "'''Папярэджаньне''': SQLite створаны без модуля [//sqlite.org/fts3.html FTS3], для гэтага ўнутранага інтэрфэйсу ня будзе даступная магчымасьць пошуку.",
-       "config-register-globals": "'''Папярэджаньне: уключаная опцыя PHP <code>[http://php.net/register_globals register_globals]</code>.'''\n'''Адключыце яе, калі можаце.'''\nMediaWiki будзе працаваць, але гэта панізіць узровень бясьпекі сэрвэра.",
+       "config-register-globals-error": "<strong>Памылка: парамэтар PHP <code>[http://php.net/register_globals register_globals]</code> уключаны.\nЁн павінен быць адключаны, каб працягнуць усталяваньне.</strong>\nГлядзіце [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] дзеля дапамогі, як зрабіць гэта.",
        "config-magic-quotes-runtime": "'''Фатальная памылка: уключаная опцыя PHP [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]!'''\nГэтая опцыя псуе ўводны паток зьвестак непрадказальным чынам.\nПрацяг усталяваньня альбо выкарыстаньне MediaWiki без адключэньня гэтай опцыі немагчымыя.",
        "config-magic-quotes-sybase": "'''Фатальная памылка: рэжым [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] уключаны!'''\nГэты рэжым шкодзіць уваходныя зьвесткі непрадказальным чынам.\nПрацяг усталяваньня альбо выкарыстаньне MediaWiki немагчымыя, пакуль рэжым ня будзе выключаны.",
        "config-mbstring": "'''Фатальная памылка: рэжым [http://www.php.net/manual/en/ref.info.php#mbstring.overload mbstring.func_overload] уключаны!'''\nГэты рэжым выклікае памылкі і можа шкодзіць зьвесткі непрадказальным чынам.\nПрацяг усталяваньня альбо выкарыстаньне MediaWiki немагчымыя, пакуль рэжым ня будзе выключаны.",
@@ -70,6 +69,7 @@
        "config-memory-raised": "Абмежаваньне на даступную для PHP памяць <code>memory_limit</code> было падвышанае з $1 да $2.",
        "config-memory-bad": "'''Папярэджаньне:''' памер PHP <code>memory_limit</code> складае $1.\nВерагодна, гэта вельмі мала.\nУсталяваньне можа быць няўдалым!",
        "config-ctype": "'''Фатальная памылка''': PHP мусіць быць скампіляваны з падтрымкай [http://www.php.net/manual/en/ctype.installation.php пашырэньня Ctype].",
+       "config-iconv": "<strong>Непапраўная памылка:</strong> PHP мусіць быць скампіляваны з падтрымкай [http://www.php.net/manual/en/iconv.installation.php пашырэньня iconv].",
        "config-json": "<strong>Крытычная памылка:</strong> PHP быў скампіляваны без падтрымкі JSON.\nВы павінныя ўсталяваць або пашырэньне PHP JSON, або пашырэньне [http://pecl.php.net/package/jsonc PECL jsonc] перад усталёўкай MediaWiki.\n* Пашырэньне PHP уваходзіць у Red Hat Enterprise Linux (CentOS) 5 і 6, пры гэтым павінна быць падключана ў <code>/etc/php.ini</code> або <code>/etc/php.d/json.ini</code>.\n* Некаторыя дыстрыбутывы Linux, выдадзеныя пасьля траўня 2013 году, ня маюць пашырэньня PHP, замест яго пакуюць пашырэньне PECL як <code>php5-json</code> або <code>php-pecl-jsonc</code>.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] усталяваны",
        "config-apc": "[http://www.php.net/apc APC] усталяваны",
        "config-license-gfdl": "GNU Free Documentation License 1.3 ці болей позьняя",
        "config-license-pd": "Грамадзкі набытак",
        "config-license-cc-choose": "Выберыце іншую ліцэнзію Creative Commons",
-       "config-license-help": "Шматлікія адкрытыя вікі публікуюць увесь унёсак у праект на ўмовах [http://freedomdefined.org/Definition вольнай ліцэнзіі].\nГэта дазваляе ствараць эфэкт супольнай уласнасьці і садзейнічае доўгатэрміноваму ўнёску.\nДля прыватных і карпаратыўных вікі гэта не зьяўляецца неабходнасьцю.\n\nКалі Вы жадаеце выкарыстоўваць тэкст зь Вікіпэдыі, і жадаеце, каб Вікіпэдыя магла прымаць тэксты, скапіяваныя з Вашай вікі, Вам неабходна выбраць ліцэнзію '''Creative Commons Attribution Share Alike'''.\n\nРаней Вікіпэдыя выкарыстоўвала ліцэнзію GNU Free Documentation.\nЯна ўсё яшчэ дзейнічае, але яна ўтрымлівае некаторыя моманты,\nякія ўскладняюць паўторнае выкарыстоўваньне і інтэрпрэтацыю матэрыялаў.",
+       "config-license-help": "Шматлікія адкрытыя вікі публікуюць увесь унёсак у праект на ўмовах [http://freedomdefined.org/Definition вольнай ліцэнзіі].\nГэта дазваляе ствараць эфэкт супольнай уласнасьці і садзейнічае доўгатэрміноваму ўнёску.\nДля прыватных і карпаратыўных вікі гэта не зьяўляецца неабходнасьцю.\n\nКалі Вы жадаеце выкарыстоўваць тэкст зь Вікіпэдыі, і жадаеце, каб Вікіпэдыя магла прымаць тэксты, скапіяваныя з Вашай вікі, Вам неабходна выбраць ліцэнзію <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nРаней Вікіпэдыя выкарыстоўвала ліцэнзію GNU Free Documentation.\nЯна ўсё яшчэ дзейнічае, але яна ўтрымлівае некаторыя моманты, якія ўскладняюць паўторнае выкарыстаньне і інтэрпрэтацыю матэрыялаў.",
        "config-email-settings": "Налады электроннай пошты",
        "config-enable-email": "Дазволіць выходзячыя электронныя лісты",
        "config-enable-email-help": "Калі Вы жадаеце, каб працавала электронная пошта, неабходна сканфігураваць PHP [http://www.php.net/manual/en/mail.configuration.php адпаведным чынам].\nКалі Вы не жадаеце выкарыстоўваць магчымасьці электроннай пошты, Вы можаце яе адключыць.",
        "config-memcache-badport": "Нумар порту Memcached павінен быць паміж $1 і $2",
        "config-extensions": "Пашырэньні",
        "config-extensions-help": "Пашырэньні пададзеныя вышэй, былі знойдзеныя ў Вашай дырэкторыі <code>./extensions</code>.\n\nЯны могуць патрабаваць дадатковых наладаў, але іх можна ўключыць зараз",
+       "config-skins": "Тэмы афармленьня",
        "config-install-alreadydone": "'''Папярэджаньне:''' здаецца, што Вы ўжо ўсталёўвалі MediaWiki і спрабуеце зрабіць гэтай зноў.\nКалі ласка, перайдзіце на наступную старонку.",
        "config-install-begin": "Пасьля націску кнопкі «{{int:config-continue}}» пачнецца ўсталяваньне MediaWiki.\nКалі Вы жадаеце што-небудзь зьмяніць, націсьніце кнопку «{{int:config-back}}».",
        "config-install-step-done": "зроблена",
index f4b75db..2a92451 100644 (file)
        "config-env-good": "Gwiriet eo bet an endro.\nGallout a rit staliañ MediaWiki.",
        "config-env-bad": "Gwiriet eo bet an endro.\nNe c'hallit ket staliañ MediaWiki.",
        "config-env-php": "Staliet eo PHP $1.",
-       "config-env-php-toolow": "Staliet eo PHP $1.\nNemet eo rekis PHP $2 pe nevesoc'h evit MediaWiki.",
        "config-unicode-using-utf8": "Oc'h implijout utf8_normalize.so gant Brion Vibber evit ar reolata Unicode.",
        "config-unicode-using-intl": "Oc'h implijout [http://pecl.php.net/intl an astenn PECL intl] evit ar reolata Unicode.",
        "config-unicode-pure-php-warning": "'''Diwallit''' : N'haller ket kaout an [http://pecl.php.net/intl intl PECL astenn] evit merañ reoladur Unicode, a zistro d'ar stumm gorrek emplementet e-PHP.\nMa lakait da dreiñ ul lec'hienn darempredet-stank e vo mat deoc'h lenn un tammig bihan diwar-benn se war [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode normalization]. (e saozneg)",
        "config-unicode-update-warning": "'''Diwallit''': ober a ra stumm staliet endalc'her skoueriekaat Unicode gant ur stumm kozh eus [http://site.icu-project.org/ levraoueg meziantoù ar raktres ICU].\nDleout a rafec'h [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations hizivaat] ma seblant deoc'h bezañ pouezus ober gant Unicode.",
        "config-no-db": "N'eus ket bet gallet kavout ur sturier diazoù roadennoù a zere ! Ret eo deoc'h staliañ ur sturier diazoù roadennoù evit PHP.\nSkoret eo an diazoù roadennoù da-heul : $1.\n\nMa rit gant un herberc'hiañ kenrannet, goulennit digant ho herberc'hier staliañ ur sturier diaz roadennoù azas.\nMa kempunit PHP c'hwi hoc'h-unan, adkeflugnit-eñ en ur weredekaat un arval diaz roadennoù, da skouer en ur ober gant <code>./configure --mysql</code>.\nM'hoc'h eus staliet PHP adalek ur pakad Debian pe Ubuntu, eo ret deoc'h staliañ ar vodulenn php5-mysql ivez.",
        "config-no-fts3": "'''Diwallit ''': Kempunet eo SQLite hep ar [//sqlite.org/fts3.html vodulenn FTS3]; ne vo ket posupl ober gant an arc'hwelioù klask er staliadur-mañ",
-       "config-register-globals": "'''Diwallit : Gweredekaet eo dibarzh <code>[http://php.net/register_globals register_globals]</code> PHP.'''\n'''Diweredekait anezhañ ma c'hallit.'''\nMont a raio MediaWiki en-dro met fazioù surentez a c'hallo c'hoari war ho servijer",
        "config-magic-quotes-runtime": "'''Fazi groñs : gweredekaet eo [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] !'''\nBreinañ a ra an dibarzh-mañ ar roadennoù en ur mod dic'hortoz.\nN'hallit ket staliañ pe ober gant MediaWiki e-keit ha m'eo gweredekaet an dibarzh-se.",
        "config-magic-quotes-sybase": "'''Fazi groñs : gweredekaet eo [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] !'''\nBreinañ a ra an dibarzh-mañ ar roadennoù en ur mod dic'hortoz.\nN'hallit ket staliañ pe ober gant MediaWiki e-keit ha m'eo gweredekaet an dibarzh-se.",
        "config-mbstring": "'''Fazi groñs : gweredekaet eo [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] !'''\nDegas a ra an dibarzh-mañ fazioù ha gallout a ra breinañ ar roadennoù en ur mod dic'hortoz.\nN'hallit ket staliañ pe ober gant MediaWiki e-keit ha m'eo gweredekaet an dibarzh-se.",
        "config-memcache-badport": "Niverennoù porzh Memcached a zlefe bezañ etre $1 ha $2.",
        "config-extensions": "Astennoù",
        "config-extensions-help": "N'eo ket bet detektet an astennoù rollet a-us en ho kavlec'h <code>./astennoù</code>.\n\nMarteze e vo ezhomm kefluniañ pelloc'h met gallout a rit o gweredekaat bremañ.",
+       "config-skins": "Gwiskadurioù",
        "config-install-alreadydone": "'''Diwallit''': Staliet hoc'h eus MediaWiki dija war a seblant hag emaoc'h o klask e staliañ c'hoazh.\nKit d'ar bajenn war-lerc'h, mar plij.",
        "config-install-begin": "Pa vo bet pouezet ganeoc'h war \"{{int:config-continue}}\"  e krogo staliadur MediaWiki.\nPouezit war \"{{int:config-back}}\" mar fell deoc'h cheñch tra pe dra.",
        "config-install-step-done": "graet",
index 3870ef9..5d65f2d 100644 (file)
        "config-diff3-bad": "No s'ha trobat el GNU diff3.",
        "config-git": "S'ha trobat el programari de control de versions Git: <code>$1</code>.",
        "config-git-bad": "No s'ha trobat el programari de control de versions Git.",
+       "config-no-scaling": "No s'ha pogut trobar la biblioteca GD o ImageMagick.\nS'inhabilitaran les miniatures de les imatges.",
        "config-no-uri": "'''Error:''' No s'ha pogut determinar l'URI actual. S'ha interromput la instal·lació.",
        "config-no-cli-uri": "'''Avís:''' No s'ha especificat un <code>--scriptpath</code>. S'utilitza el valor per defecte: <code>$1</code>.",
        "config-using-server": "S'utilitza el nom del servidor «<nowiki>$1</nowiki>».",
        "config-using-uri": "S'utilitza l'URL del servidor «<nowiki>$1$2</nowiki>».",
+       "config-uploads-not-safe": "<strong>Avís:</strong> El directori de càrregues per defecte <code>$1</code> és vulnerable a l'execució d'scripts arbitraris.\nEncara que el MediaWiki comprova tots els fitxers que es carreguen davant d'amenaces de seguretat, és molt recomanable [//www.mediawiki.org/ wiki/Special:MyLanguage/Manual:Security#Upload_security tancar aquesta vulnerabilitat de seguretat] abans d'habilitar les càrregues.",
        "config-db-type": "Tipus de base de dades:",
        "config-db-host": "Servidor de la base de dades:",
        "config-db-wiki-settings": "Identifica aquest wiki",
@@ -92,6 +94,7 @@
        "config-missing-db-name": "Heu d'introduir un valor per a «{{int:config-db-name}}».",
        "config-missing-db-host": "Heu d'introduir un valor per a «{{int:config-db-host}}».",
        "config-missing-db-server-oracle": "Heu d’introduir un valor per a «{{int:config-db-host-oracle}}».",
+       "config-db-sys-user-exists-oracle": "El compte d’usuari «$1» ja existeix. SYSDBA només es pot fer servir per crear comptes nous.",
        "config-sqlite-readonly": "El fitxer <code>$1</code> no es pot escriure.",
        "config-sqlite-cant-create-db": "No s'ha pogut crear el fitxer de base de dades <code>$1</code>.",
        "config-upgrade-done-no-regenerate": "S'ha completat l'actualització.\n\nJa podeu [$1 començar a utilitzar el wiki].",
        "config-upload-deleted": "Directori pels arxius suprimits:",
        "config-logo": "URL del logo:",
        "config-instantcommons": "Habilita Instant Commons",
+       "config-cc-error": "El selector de llicència Creative Commons no ha donat cap resultat.\nIntroduïu la llicència manualment.",
        "config-cc-again": "Torneu-ho a triar...",
        "config-cc-not-chosen": "Trieu quina llicència Creative Commons voleu i feu clic a «procedeix».",
        "config-advanced-settings": "Configuració avançada",
        "config-cache-options": "Configuració per a la memòria cau dels objectes:",
+       "config-cache-help": "L'encauament d'objectes s'utilitza per a millorar la rapidesa del MediaWiki afegint a la memòria cau les dades que s'utilitzen de forma freqüent. És recomanable que els llocs web mitjans o grans ho habilitin. També els llocs web petits en veuran els beneficis.",
+       "config-cache-none": "Sense encauament (no se suprimeix cap funcionalitat, però la velocitat pot veure's afectada en els llocs wiki més grans)",
        "config-memcached-servers": "Servidors de Memcache:",
        "config-extensions": "Extensions",
        "config-install-step-done": "fet",
        "config-install-extensions": "S'estan incloent les extensions",
        "config-install-database": "S'està configurant la base de dades",
        "config-install-schema": "S'està creant l'esquema",
+       "config-install-pg-schema-not-exist": "No existeix un esquema PostgreSQL.",
+       "config-install-pg-schema-failed": "La creació de les taules ha fallat.\nAssegureu-vos que l'usuari «$1» pot escriure a l'esquema «$2».",
        "config-install-pg-commit": "S'estan trametent els canvis",
        "config-install-user": "S'està creant l'usuari de la base de dades",
        "config-install-user-alreadyexists": "L'usuari «$1» ja existeix",
index 307faf3..bc274ac 100644 (file)
@@ -70,6 +70,7 @@
        "config-memory-raised": "<code>memory_limit</code> v PHP byl nastaven na $1, zvýšen na $2.",
        "config-memory-bad": "'''Upozornění:''' <code>memory_limit</code> je v PHP nastaven na $1.\nTo je pravděpodobně příliš málo.\nInstalace může selhat!",
        "config-ctype": "'''Kritická chyba''': PHP musí být přeloženo s podporou pro [http://www.php.net/manual/en/ctype.installation.php rozšíření Ctype].",
+       "config-iconv": "'''Kritická chyba''': PHP musí být přeloženo s podporou pro [http://www.php.net/manual/en/iconv.installation.php rozšíření iconv].",
        "config-json": "'''Kritická chyba:''' PHP bylo přeloženo bez podpory JSON.\nPřed instalací MediaWiki musíte buď nainstalovat rozšíření PHP JSON nebo rozšíření [http://pecl.php.net/package/jsonc PECL jsonc].\n* Rozšíření PHP je součástí Red Hat Enterprise Linux (CentOS) 5 a 6, avšak musí se povolit v <code>/etc/php.ini</code> nebo <code>/etc/php.d/json.ini</code>.\n* V některých linuxových distribucích vydaných po květnu 2013 může toto rozšíření PHP chybět a místo toho mohou používat rozšíření PECL jako <code>php5-json</code> nebo <code>php-pecl-jsonc</code>.",
        "config-xcache": "Je nainstalována [http://xcache.lighttpd.net/ XCache]",
        "config-apc": "Je nainstalováno [http://www.php.net/apc APC]",
        "config-license-gfdl": "GNU Free Documentation License 1.3 nebo novější",
        "config-license-pd": "Volné dílo",
        "config-license-cc-choose": "Zvolit vlastní licenci Creative Commons",
-       "config-license-help": "Mnoho veřejných wiki všechny příspěvky zveřejňuje pod některou [http://freedomdefined.org/Definition/Cs svobodnou licencí].\nTo pomáhá vytvořit duch komunitního vlastnictví a povzbuzuje dlouhodobé přispívání.\nTo obecně není potřeba u soukromé nebo firemní wiki.\n\nPokud chcete být schopni používat text z Wikipedie a chcete, aby Wikipedie byla schopna přijímat text okopírovaný z vaší wiki, měli byste zvolit '''Creative Commons Uveďte autora-Zachovejte licenci'''.\n\nDříve Wikipedie používala GNU Free Documentation License.\nGFDL je platná licence, ale složité jí porozumět.\nTaké je komplikované používat obsah licencovaný pod GFDL.",
+       "config-license-help": "Mnoho veřejných wiki všechny příspěvky zveřejňuje pod některou [http://freedomdefined.org/Definition/Cs svobodnou licencí].\nTo pomáhá vytvořit duch komunitního vlastnictví a povzbuzuje dlouhodobé přispívání.\nTo obecně není potřeba u soukromé nebo firemní wiki.\n\nPokud chcete být schopni používat text z Wikipedie a chcete, aby Wikipedie byla schopna přijímat text okopírovaný z vaší wiki, měli byste zvolit <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nDříve Wikipedie používala GNU Free Documentation License.\nGFDL je platná licence, ale složité jí porozumět.\nTaké je komplikované používat obsah licencovaný pod GFDL.",
        "config-email-settings": "Nastavení e-mailu",
        "config-enable-email": "Zapnout odchozí e-mail",
        "config-enable-email-help": "Pokud chcete, aby e-mail fungoval, je potřeba správně nakonfigurovat [http://www.php.net/manual/en/mail.configuration.php e-mailová nastavení PHP].\nPokud nechcete žádné e-mailové funkce, můžete je zde vypnout.",
        "config-memcache-badport": "Čísla portů pro Memcached by měla být mezi $1 a $2.",
        "config-extensions": "Rozšíření",
        "config-extensions-help": "Výše uvedená rozšíření byla nalezena ve vašem adresáři <code>./extensions</code>.\n\nMohou vyžadovat dodatečnou konfiguraci, ale teď je můžete povolit.",
+       "config-skins": "Vzhledy",
+       "config-skins-help": "Ve vašem adresáři <code>./skins</code> byly nalezeny výše uvedené vzhledy. Musíte nejméně jeden z nich povolit a některý vybrat jako výchozí.",
+       "config-skins-use-as-default": "Tento vzhled používat jako výchozí",
+       "config-skins-missing": "Nebyly nalezeny žádné vzhledy; MediaWiki bude používat nouzový vzhled, dokud nenainstalujete nějaké plnohodnotné.",
+       "config-skins-must-enable-some": "Musíte povolit alespoň jeden vzhled.",
+       "config-skins-must-enable-default": "Vzhled vybraný jako výchozí musí být povolen.",
        "config-install-alreadydone": "'''Upozornění:''' Vypadá to, že jste MediaWiki již nainstalovali a teď se o to pokoušíte znovu.\nPokračujte na další stránku.",
        "config-install-begin": "Stisknutím „{{int:config-continue}}“ spustíte instalaci MediaWiki.\nPokud ještě chcete udělat nějaké změny, stiskněte „{{int:config-back}}“.",
        "config-install-step-done": "hotovo",
index f172355..93da07d 100644 (file)
@@ -76,6 +76,7 @@
        "config-memory-raised": "Der PHP-Parameter <code>memory_limit</code> betrug $1 und wurde auf $2 erhöht.",
        "config-memory-bad": "'''Warnung:''' Der PHP-Parameter <code>memory_limit</code> beträgt $1.\nDieser Wert ist wahrscheinlich zu niedrig.\nDer Installationsvorgang könnte eventuell scheitern!",
        "config-ctype": "'''Fataler Fehler:''' PHP muss mit Unterstützung für das [http://www.php.net/manual/de/ctype.installation.php Modul ctype] kompiliert werden.",
+       "config-iconv": "<strong>Fatal:</strong> PHP muss mit Support für die [http://www.php.net/manual/en/iconv.installation.php iconv-Erweiterung] kompiliert werden.",
        "config-json": "<strong>Fataler Fehler:</strong> PHP wurde ohne Unterstützung für JSON kompiliert.\nVor der Installation von MediaWiki muss entweder die PHP-JSON- oder die [http://pecl.php.net/package/jsonc PECL-jsonc]-Erweiterung installieren werden.\n* Die PHP-Erweiterung ist in Red Hat Enterprise Linux (CentOS) 5 und 6 enthalten, muss jedoch in <code>/etc/php.ini</code> oder <code>/etc/php.d/json.ini</code> aktiviert werden.\n* Einige Linux-Distributionen, die nach Mai 2013 veröffentlicht wurden, nutzen nicht mehr die PHP-Erweiterung, sondern stattdessen die PECL-Erweiterung als <code>php5-json</code> oder <code>php-pecl-jsonc</code>.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] ist installiert",
        "config-apc": "[http://www.php.net/apc APC] ist installiert",
        "config-license-gfdl": "GNU-Lizenz für freie Dokumentation 1.3 oder höher",
        "config-license-pd": "Gemeinfreiheit",
        "config-license-cc-choose": "Eine benutzerdefinierte Creative-Commons-Lizenz auswählen",
-       "config-license-help": "Viele öffentliche Wikis publizieren alle Beiträge unter einer [http://freedomdefined.org/Definition/De freien Lizenz.]\nDies trägt dazu bei, ein Gefühl von Gemeinschaft zu schaffen, und ermutigt zu längerfristiger Mitarbeit.\nHingegen ist im Allgemeinen eine freie Lizenz auf geschlossenen Wikis nicht notwendig.\n\nSofern man Texte aus der Wikipedia verwenden möchte und umgekehrt, sollte die ''Creative-Commons''-Lizenz „Namensnennung – Weitergabe unter gleichen Bedingungen“ gewählt werden.\n\nDie Wikipedia nutzte vormals die GNU-Lizenz für freie Dokumentation (GFDL).\nDie GFDL ist eine gültige Lizenz, die allerdings schwer zu verstehen ist.\nEs ist zudem schwierig, gemäß dieser Lizenz lizenzierte Inhalte wiederzuverwenden.",
+       "config-license-help": "Viele öffentliche Wikis publizieren alle Beiträge unter einer [http://freedomdefined.org/Definition/De freien Lizenz.]\nDies trägt dazu bei, ein Gefühl von Gemeinschaft zu schaffen, und ermutigt zu längerfristiger Mitarbeit.\nHingegen ist im Allgemeinen eine freie Lizenz auf geschlossenen Wikis nicht notwendig.\n\nSofern man Texte aus der Wikipedia verwenden möchte und umgekehrt, sollte die Lizenz {{int:config-license-cc-by-sa}} gewählt werden.\n\nDie Wikipedia nutzte vormals die GNU-Lizenz für freie Dokumentation (GFDL).\nDie GFDL ist eine gültige Lizenz, die allerdings schwer zu verstehen ist.\nEs ist zudem schwierig, gemäß dieser Lizenz lizenzierte Inhalte wiederzuverwenden.",
        "config-email-settings": "E-Mail-Einstellungen",
        "config-enable-email": "Ausgehende E-Mails ermöglichen",
        "config-enable-email-help": "Sofern die E-Mail-Funktionen genutzt werden sollen, müssen die entsprechenden [http://www.php.net/manual/en/mail.configuration.php PHP-E-Mail-Einstellungen] richtig konfiguriert werden.\nFür den Fall, dass die E-Mail-Funktionen nicht benötigt werden, können sie hier deaktiviert werden.",
        "config-memcache-badport": "Der Ports für den Memcached Cacheserver sollten zwischen $1 und $2 liegen",
        "config-extensions": "Erweiterungen",
        "config-extensions-help": "Die obig angegebenen Erweiterungen wurden im Verzeichnis <code>./extensions</code> gefunden.\n\nEs könnten zusätzliche Konfigurierungen zu einzelnen Erweiterungen erforderlich sein, dennoch können sie aber bereits jetzt aktiviert werden.",
+       "config-skins": "Benutzeroberflächen",
+       "config-skins-help": "Die oben aufgeführten Benutzeroberflächen wurden im Verzeichnis <code>./skins</code> gefunden. Du musst mindestens eine aktivieren und als Standard auswählen.",
+       "config-skins-use-as-default": "Diese Benutzeroberfläche als Standard verwenden",
+       "config-skins-missing": "Es wurden keine Benutzeroberflächen gefunden. MediaWiki wird eine Fallback-Benutzeroberfläche verwenden, bis du andere Benutzeroberflächen installierst.",
+       "config-skins-must-enable-some": "Du musst mindestens eine zu aktivierende Benutzeroberfläche auswählen.",
+       "config-skins-must-enable-default": "Die ausgewählte Standard-Benutzeroberfläche muss aktiviert sein.",
        "config-install-alreadydone": "'''Warnung:''' Es wurde eine vorhandene MediaWiki-Installation gefunden.\nEs muss daher mit den nächsten Seite weitergemacht werden.",
        "config-install-begin": "Durch Drücken von „{{int:config-continue}}“ wird die Installation von MediaWiki gestartet.\nSofern Änderungen vorgenommen werden sollen, kann man auf „{{int:config-back}}“ klicken.",
        "config-install-step-done": "erledigt",
index c397173..bd76ada 100644 (file)
@@ -52,6 +52,7 @@
        "config-outdated-sqlite": "<strong>Warning:</strong> you have SQLite $1, which is lower than minimum required version $2. SQLite will be unavailable.",
        "config-no-fts3": "<strong>Warning:</strong> SQLite is compiled without the [//sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
        "config-register-globals-error": "<strong>Error: PHP's <code>[http://php.net/register_globals register_globals]</code> option is enabled.\nIt must be disabled to continue with the installation.</strong>\nSee [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] for help on how to do so.",
+       "config-magic-quotes-gpc": "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] is active!</strong>\nThis option corrupts data input unpredictably.\nYou cannot install or use MediaWiki unless this option is disabled.",
        "config-magic-quotes-runtime": "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] is active!'</strong>\nThis option corrupts data input unpredictably.\nYou cannot install or use MediaWiki unless this option is disabled.",
        "config-magic-quotes-sybase": "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] is active!</strong>\nThis option corrupts data input unpredictably.\nYou cannot install or use MediaWiki unless this option is disabled.",
        "config-mbstring": "<strong>Fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] is active!</strong>\nThis option causes errors and may corrupt data unpredictably.\nYou cannot install or use MediaWiki unless this option is disabled.",
@@ -62,6 +63,7 @@
        "config-memory-raised": "PHP's <code>memory_limit</code> is $1, raised to $2.",
        "config-memory-bad": "<strong>Warning:</strong> PHP's <code>memory_limit</code> is $1.\nThis is probably too low.\nThe installation may fail!",
        "config-ctype": "<strong>Fatal:</strong> PHP must be compiled with support for the [http://www.php.net/manual/en/ctype.installation.php Ctype extension].",
+       "config-iconv": "<strong>Fatal:</strong> PHP must be compiled with support for the [http://www.php.net/manual/en/iconv.installation.php iconv extension].",
        "config-json": "<strong>Fatal:</strong> PHP was compiled without JSON support.\nYou must install either the PHP JSON extension or the [http://pecl.php.net/package/jsonc PECL jsonc] extension before installing MediaWiki.\n* The PHP extension is included in Red Hat Enterprise Linux (CentOS) 5 and 6, though must be enabled in <code>/etc/php.ini</code> or <code>/etc/php.d/json.ini</code>.\n* Some Linux distributions released after May 2013 omit the PHP extension, instead packaging the PECL extension as <code>php5-json</code> or <code>php-pecl-jsonc</code>.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] is installed",
        "config-apc": "[http://www.php.net/apc APC] is installed",
        "config-license-gfdl": "GNU Free Documentation License 1.3 or later",
        "config-license-pd": "Public Domain",
        "config-license-cc-choose": "Select a custom Creative Commons license",
-       "config-license-help": "Many public wikis put all contributions under a [http://freedomdefined.org/Definition free license].\nThis helps to create a sense of community ownership and encourages long-term contribution.\nIt is not generally necessary for a private or corporate wiki.\n\nIf you want to be able to use text from Wikipedia, and you want Wikipedia to be able to accept text copied from your wiki, you should choose <strong>Creative Commons Attribution Share Alike</strong>.\n\nWikipedia previously used the GNU Free Documentation License.\nThe GFDL is a valid license, but it is difficult to understand.\nIt is also difficult to reuse content licensed under the GFDL.",
+       "config-license-help": "Many public wikis put all contributions under a [http://freedomdefined.org/Definition free license].\nThis helps to create a sense of community ownership and encourages long-term contribution.\nIt is not generally necessary for a private or corporate wiki.\n\nIf you want to be able to use text from Wikipedia, and you want Wikipedia to be able to accept text copied from your wiki, you should choose <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nWikipedia previously used the GNU Free Documentation License.\nThe GFDL is a valid license, but it is difficult to understand.\nIt is also difficult to reuse content licensed under the GFDL.",
        "config-email-settings": "Email settings",
        "config-enable-email": "Enable outbound email",
        "config-enable-email-help": "If you want email to work, [http://www.php.net/manual/en/mail.configuration.php PHP's mail settings] need to be configured correctly.\nIf you do not want any email features, you can disable them here.",
        "config-memcache-badport": "Memcached port numbers should be between $1 and $2.",
        "config-extensions": "Extensions",
        "config-extensions-help": "The extensions listed above were detected in your <code>./extensions</code> directory.\n\nThey may require additional configuration, but you can enable them now.",
+       "config-skins": "Skins",
+       "config-skins-help": "The skins listed above were detected in your <code>./skins</code> directory. You must enable at least one, and choose the default.",
+       "config-skins-use-as-default": "Use this skin as default",
+       "config-skins-missing": "No skins were found; MediaWiki will use a fallback skin until you install some proper ones.",
+       "config-skins-must-enable-some": "You must choose at least one skin to enable.",
+       "config-skins-must-enable-default": "The skin chosen as default must be enabled.",
        "config-install-alreadydone": "<strong>Warning:</strong> You seem to have already installed MediaWiki and are trying to install it again.\nPlease proceed to the next page.",
        "config-install-begin": "By pressing \"{{int:config-continue}}\", you will begin the installation of MediaWiki.\nIf you still want to make changes, press \"{{int:config-back}}\".",
        "config-install-step-done": "done",
index 99555cb..b651b40 100644 (file)
@@ -22,7 +22,8 @@
                        "Ihojose",
                        "Seb35",
                        "McDutchie",
-                       "Miguel2706"
+                       "Miguel2706",
+                       "Macofe"
                ]
        },
        "config-desc": "El instalador de MediaWiki",
        "config-license-gfdl": "Licencia de documentación libre de GNU 1.3 o posterior",
        "config-license-pd": "Dominio Público",
        "config-license-cc-choose": "Selecciona una licencia personalizada de Creative Commons",
-       "config-license-help": "Muchos wikis públicos ponen todas las contribuciones bajo una [http://freedomdefined.org/Definition licencia libre].\nEsto ayuda a crear un sentido de propiedad comunitaria y alienta la contribución a largo plazo.\nEsto no es generalmente necesario para un wiki privado o corporativo.\n\nSi desea poder utilizar texto de Wikipedia, y desea que Wikipedia pueda aceptar el texto copiado de tu wiki, debe elegir '''Creative Commons Reconocimiento Compartir Igual'''.\n\nWikipedia utilizaba anteriormente la licencia de documentación libre de GNU (GFDL).\nLa GFDL es una licencia válida, pero es difícil de entender.\nTambién es difícil reutilizar el contenido licenciado bajo la GFDL.",
+       "config-license-help": "Muchos wikis públicos ponen todas las contribuciones bajo una [http://freedomdefined.org/Definition licencia libre].\nEsto ayuda a crear un sentido de propiedad comunitaria y alienta la contribución a largo plazo.\nEsto no es generalmente necesario para un wiki privado o corporativo.\n\nSi deseas poder utilizar texto de Wikipedia, y deseas que Wikipedia pueda aceptar el texto copiado de tu wiki, debes elegir <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nWikipedia utilizaba anteriormente la licencia de documentación libre de GNU (GFDL).\nLa GFDL es una licencia válida, pero es difícil de entender.\nTambién es difícil reutilizar el contenido licenciado bajo la GFDL.",
        "config-email-settings": "Configuración de correo electrónico",
        "config-enable-email": "Activar el envío de correos electrónicos",
        "config-enable-email-help": "Si quieres que el correo electrónico funcione, la [http://www.php.net/manual/en/mail.configuration.php configuración PHP de correo electrónico] debe ser la correcta.\nSi no quieres la funcionalidad de correo electrónico, puedes desactivarla aquí.",
        "config-nofile": "El archivo \"$1\" no se pudo encontrar. ¿Se ha eliminado?",
        "config-extension-link": "¿Sabías que tu wiki admite [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensiones]?\n\nPuedes navegar por las [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category categorías] o visitar el [//www.mediawiki.org/wiki/Extension_Matrix centro de extensiones] para ver una lista completa.",
        "mainpagetext": "'''MediaWiki ha sido instalado con éxito.'''",
-       "mainpagedocfooter": "Consulta la [//meta.wikimedia.org/wiki/Help:Contents/es Guía del usuario] para obtener información sobre el uso del software wiki.\n\n== Empezando ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]\n* [//www.mediawiki.org/wiki/Manual:FAQ/es FAQ de MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de distribución de MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Regionalizar MediaWiki para tu idioma]"
+       "mainpagedocfooter": "Consulta la [//meta.wikimedia.org/wiki/Help:Contents/es guía del usuario] para obtener información sobre el uso del software wiki.\n\n== Primeros pasos ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]\n* [//www.mediawiki.org/wiki/Manual:FAQ/es Preguntas frecuentes sobre MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de publicación de MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducir MediaWiki en tu idioma]"
 }
index ccebf08..4427e30 100644 (file)
@@ -69,6 +69,7 @@
        "config-memory-raised": "PHP's <code>memory_limit</code>, نسخهٔ $1 است، به نسخهٔ $2 ارتقاء داده شده‌است.",
        "config-memory-bad": "'''هشدار:''' PHP's <code>memory_limit</code> نسخهٔ $1 است.\nاین ممکن است خیلی پایین باشد.\nممکن است نصب با مشکل رو‌به‌رو شود.",
        "config-ctype": "'''مخرب:''' پی‌اچ‌پی باید با پشتیبانی برای [http://www.php.net/manual/en/ctype.installation.php Ctype extension] تهیه شده‌باشد.",
+       "config-iconv": "<strong>خطای اساسی:</strong> پی‌اچ‌پی باید کامپایل‌شده باشد برای پشتیبانی از [http://www.php.net/manual/en/iconv.installation.php افزونهٔ iconv].",
        "config-json": "'''مخرب:''' پی‌اچ‌پی بدون پشتیبانی جِی‌اس‌اُ‌ان تهیه شده‌بود.\nشما باید قبل از نصب مدیاویکی یا بسط  جِی‌اس‌اُ‌ان پی‌اچ‌پی یا بسط [http://pecl.php.net/package/jsonc PECL jsonc] را نصب کنید.\n* بسط پی‌اچ‌پی شامل لینوکس اینترپرایز رد هت (سِنت‌اُاِس) 5 یا 6 است، هرچند باید در <code>/etc/php.ini</code> یا <code>/etc/php.d/json.ini</code> فعال باشد.\n*  به‌جای بسته‌بندی کردن بسط پی‌ایی‌سی‌اِل مانند <code>php5-json</code> یا <code>php-pecl-jsonc</code>، توزیع‌های برخی لینوکس پس از ماه می ۲۰۱۳ با حذف بسط پی‌اچ‌پی افزایش پیدا کرد.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] نصب شده‌است.",
        "config-apc": "[http://www.php.net/apc APC] نصب شده‌است.",
        "config-license-gfdl": "مجوز اسنادومدارک آزاد جی‌ان‌یو ۱.۳ یا بالاتر",
        "config-license-pd": "دامنه عمومی",
        "config-license-cc-choose": "انتخاب یک مجوز سفارشی عوام خلاق",
-       "config-license-help": "بسیاری از وبگاه‌ها ویرایش‌های ها را با  [http://freedomdefined.org/Definition اجازه‌نامهٔ آزاد] منتشر می‌کنند.\nاین کار به داشتن حس مالکیت جمعی کمک می‌کند و ویرایش‌های طولانی مدت را اشاعه می‌دهد.\nاین برای ویکی‌های خصوصی یا سازمانی الزامی نیست.\n\nاگر شما می‌خواهید از متون ویکی‌پدیا استفاده کنید، یا اینکه به ویکی‌پدیا اجازه دهید از متون شما استفاده کند باید متون خود را با '''Creative Commons Attribution Share Alike''' منتشر کنید.\n\nویکی‌پدیا در گذشته از اجازه‌نامهٔ داده‌های آزاد گنو استفاده می‌کرد.\nاین اجازه‌نامه مورد قبول است، ولی فهم آن آسان نیست.\nهمچنین استفادهٔ دوباره از متون تحت اجازه‌نامهٔ داده‌های آزاد گنو به سختی انجام می‌گیرد.",
+       "config-license-help": "بسیاری از وبگاه‌ها ویرایش‌های ها را با  [http://freedomdefined.org/Definition اجازه‌نامهٔ آزاد] منتشر می‌کنند.\nاین کار به داشتن حس مالکیت جمعی کمک می‌کند و ویرایش‌های طولانی مدت را اشاعه می‌دهد.\nاین برای ویکی‌های خصوصی یا سازمانی الزامی نیست.\n\nاگر شما می‌خواهید از متون ویکی‌پدیا استفاده کنید، یا اینکه به ویکی‌پدیا اجازه دهید از متون شما استفاده کند باید متون خود را با <strong>{{int:config-license-cc-by-sa}}</strong> منتشر کنید.\n\nویکی‌پدیا در گذشته از اجازه‌نامهٔ داده‌های آزاد گنو استفاده می‌کرد.\nاین اجازه‌نامه مورد قبول است، ولی فهم آن آسان نیست.\nهمچنین استفادهٔ دوباره از متون تحت اجازه‌نامهٔ داده‌های آزاد گنو به سختی انجام می‌گیرد.",
        "config-email-settings": "تنظیمات رایانامه",
        "config-enable-email": "فعال‌سازی رایانامهٔ خروجی",
        "config-enable-email-help": "اگر برای کار کردن رایانامه می‌خواهید [http://www.php.net/manual/en/mail.configuration.php PHP's mail settings] نیازمند پیکربندی صحیح است.\nاگر هیچ ویژگی رایانامه را نمی‌خواهید، می‌توانید آنها را اینجا غیر‌فعال کنید.",
        "config-memcache-badport": "اعداد درگاه ممکچد باید بین $1 و $2 باشد.",
        "config-extensions": "افزونه‌ها",
        "config-extensions-help": "لیست وسیع بالا در فهرست <code>./extensions</code> شما یافت شد.\nممکن است نیازمند پیکربندی اضافه باشند، اما اکنون می‌توانید آنها را فعال کنید.",
+       "config-skins": "پوسته‌ها",
+       "config-skins-help": "پوسته های ذکر شده در بالا در <code>./skins</code> پوشهٔ شما شناسایی شده است. شما باید حداقل یکی را فعال و پیش فرض کنید.",
+       "config-skins-use-as-default": "این پوست را به عنوان پیش فرض استفاده کنید",
+       "config-skins-missing": "هیچ پوسته‌ای انتخاب نشده‌است‌‌، تا زمانی که یک پوستهٔ مناسب نصب کنید مدیاویکی از پوسته ذخیره‌شده استفاده می‌کند",
+       "config-skins-must-enable-some": "شما باید حداقل یک پوست برای فعال کردن انتخاب کنید.",
+       "config-skins-must-enable-default": "پوست انتخاب شده به عنوان پیش فرض باید فعال شده باشد.",
        "config-install-alreadydone": "'''هشدار:''' به نظر می‌رسد در حال حاضر شما مدیاویکی را نصب کرده‌اید و دوباره سعی میکنید آن را نصب کنید.\nلطفاً به صفحهٔ بعدی بروید.",
        "config-install-begin": "با فشاردادن \"{{int:config-continue}}\"، نصب مدیاویکی را آغاز خواهید‌کرد.\nاگر هنوز می‌خواهید تغییرات ایجاد کنید، \"{{int:config-back}}\" را فشار دهید.",
        "config-install-step-done": "انجام شد",
index 3aa0e84..0835f41 100644 (file)
@@ -56,7 +56,6 @@
        "config-env-good": "Asennusympäristö on tarkastettu.\nVoit asentaa MediaWikin.",
        "config-env-bad": "Asennusympäristö on tarkastettu.\nEt voi asentaa MediaWikiä.",
        "config-env-php": "PHP $1 on asennettu.",
-       "config-env-php-toolow": "PHP $1 on asennettu.\nMediaWiki vaatii PHP:n version $2 tai uudemman.",
        "config-no-db": "Sopivaa tietokanta-ajuria ei löytynyt! Sinun täytyy asentaa tietokanta-ajurit PHP:lle.\nSeuraavat tietokantatyypit ovat tuettuja: $1.",
        "config-outdated-sqlite": "<strong>Varoitus:</strong> sinulla on käytössä SQLite $1, joke on vanhempi kuin vähintään vaadittava versio $2. SQLite ei ole saatavilla.",
        "config-safe-mode": "'''Varoitus:''' PHP:n [http://www.php.net/features.safe-mode safe mode] -tila on aktiivinen.\nSe voi aiheuttaa ongelmia erityisesti tiedostojen tallentamisen ja matemaattisten kaavojen kanssa.",
        "config-cc-again": "Valitse uudelleen...",
        "config-extensions": "Laajennukset",
        "config-extensions-help": "Yllä luetellut laajennukset löytyvät <code>./extensions</code> hakemistosta.\n\nNe saattavat vaatia lisäasetuksia, mutta voit ottaa ne käyttöön nyt.",
+       "config-skins": "Ulkoasut",
+       "config-skins-must-enable-some": "Sinut täytyy valita ainakin yksi ulkoasu.",
        "config-install-alreadydone": "<strong>Varoitus:</strong> MediaWiki on jo asennettu ja yrität asentaa sitä uudestaan.\nSiirry seuraavalle sivulle.",
        "config-install-begin": "Painamalla \"{{int:config-continue}}\", aloitetaan MediaWikin asentaminen. \nJos haluat vielä tehdä muutoksia, paina \"{{int:config-back}}\".",
        "config-install-step-done": "valmis",
index 42e5e77..cdb6c99 100644 (file)
@@ -84,6 +84,7 @@
        "config-memory-raised": "Le paramètre <code>memory_limit</code> de PHP était à $1, porté à $2.",
        "config-memory-bad": "'''Attention :''' Le paramètre <code>memory_limit</code> de PHP est à $1.\nCette valeur est probablement trop faible.\nIl est possible que l’installation échoue !",
        "config-ctype": "'''Fatal ''': PHP doit être compilé avec le support pour l'[http://www.php.net/manual/en/ctype.installation.php extension Ctype].",
+       "config-iconv": "<strong>Erreur critique :</strong> PHP doit être compilé avec le support de l’[http://www.php.net/manual/en/iconv.installation.php extension iconv].",
        "config-json": "'''Erreur fatale :''' PHP a été compilé sans le support de JSON.\nVous devez soit installez l’extension JSON de PHP ou l’extension [http://pecl.php.net/package/jsonc PECL jsonc] avant d’installer MediaWiki.\n* L’extension PHP est comprise dans Red Hat Enterprise Linux (CentOS) 5 et 6, mais doit être activée dans <code>/etc/php.ini</code> ou <code>/etc/php.d/json.ini</code>.\n* Certaines distributions Linux après mai 2013 ne comprennent pas l’extension PHP, mais ont mis à la place l’extension PECL sous la forme <code>php5-json</code> ou <code>php-pecl-jsonc</code>.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] est installé",
        "config-apc": "[http://www.php.net/apc APC] est installé",
        "config-license-gfdl": "GNU Free Documentation License 1.3 ou ultérieure",
        "config-license-pd": "Domaine public",
        "config-license-cc-choose": "Sélectionner une licence Creative Commons personnalisée",
-       "config-license-help": "Beaucoup de wikis publics mettent l'ensemble des contributions sous [http://freedomdefined.org/Definition/Fr licence libre].\nCela contribue à créer un sentiment d'appartenance dans leur communauté et encourage les contributions sur le long terme.\nCe n'est généralement pas nécessaire pour un wiki privé ou d'entreprise.\n\nSi vous souhaitez utiliser des textes de Wikipédia, et souhaitez que Wikipédia réutilise des textes de votre wiki, vous devriez choisir la licence ''Creative Commons Attribution Share Alike''].\n\nWikipédia utilisait auparavent la ''GNU Free Documentation License'' (GFDL).\nC'est une licence valide, mais elle est difficile à comprendre. \nDe plus, elle possède des caractéristiques qui rendent difficile la réutilisation.sour GFDL des contenus.",
+       "config-license-help": "Beaucoup de wikis publics mettent l’ensemble des contributions sous une [http://freedomdefined.org/Definition/Fr licence libre].\nCela contribue à créer un sentiment d’appartenance à une communauté et encourage les contributions sur le long terme.\nCe n’est généralement pas nécessaire pour un wiki privé ou d’entreprise.\n\nSi vous souhaitez utiliser des textes de Wikipédia, et souhaitez que Wikipédia puisse réutiliser des textes copiés depuis votre wiki, vous devriez choisir <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nWikipédia utilisait auparavant la Licence de Documentation Libre GNU (GFDL).\nC’est une licence valide, mais difficile à comprendre. \nIl est aussi difficile de réutiliser du contenu sous la licence GFDL.",
        "config-email-settings": "Paramètres de courriel",
        "config-enable-email": "Activer les courriels sortants",
        "config-enable-email-help": "Si vous souhaitez utiliser le courriel, vous devez [http://www.php.net/manual/en/mail.configuration.php configurer des paramètres PHP] (texte en anglais).\nSi vous ne voulez pas du service de courriel, vous pouvez le désactiver ici.",
        "config-memcache-badport": "Les numéros de port de Memcached sont situés entre $1 et $2.",
        "config-extensions": "Extensions",
        "config-extensions-help": "Les extensions énumérées ci-dessus ont été détectées dans votre répertoire <code>./extensions</code>.\n\nElles peuvent nécessiter une configuration supplémentaire, mais vous pouvez les activer maintenant",
+       "config-skins": "Habillages",
+       "config-skins-help": "Les habillages listés ci-dessous ont été détectés dans votre répertoire <code>./skins</code>. Vous devez en activer au moins un, et choisir celui par défaut.",
+       "config-skins-use-as-default": "Utiliser cet habillage par défaut",
+       "config-skins-missing": "Aucun habillage trouvé ; MédiaWiki utilisera un habillage de secours jusqu’à ce que vous en installiez un approprié.",
+       "config-skins-must-enable-some": "Vous devez choisir au moins un habillage à activer.",
+       "config-skins-must-enable-default": "L’habillage choisi par défaut doit être activé.",
        "config-install-alreadydone": "'''Attention''': Vous semblez avoir déjà installé MediaWiki et tentez de l'installer à nouveau.\nS'il vous plaît, allez à la page suivante.",
        "config-install-begin": "En appuyant sur {{int:config-continue}}, vous commencerez l'installation de MediaWiki.\nSi vous voulez encore apporter des modifications, appuyez sur \"{{int:config-back}}\".",
        "config-install-step-done": "fait",
index acede93..e49ee2f 100644 (file)
@@ -69,6 +69,7 @@
        "config-memory-raised": "ערך האפשרות <code>memory_limit</code> של PHP הוא $1, הועלה ל־$2.",
        "config-memory-bad": "'''אזהרה:''' ערך האפשרות <code>memory_limit</code> של PHP הוא $1.\nזה כנראה נמוך מדי.\nההתקנה עשויה להיכשל!",
        "config-ctype": "<strong>שגיאה סופנית</strong>: נדרשת גרסת PHP שתומכת בהרחבה [http://www.php.net/manual/en/ctype.installation.php Ctype].",
+       "config-iconv": "<strong>סופני:</strong> חובה לקמפל את PHP עם תמיכה ב[הרחבה http://www.php.net/manual/en/iconv.installation.php iconv].",
        "config-json": "'''שגיאה סופנית:''' PHP קומפל ללא תמיכה ב־JSON.\nיש להתקין את ההרחהב JSON ב־PHP או את ההרחבה [http://pecl.php.net/package/jsonc PECL jsonc] לפני התקנת מדיה־ויקי.\n* ההרחבה ל־PHP כלולה ב־Red Hat Enterprise Linux (ו־CentOS), אך יש להפעיל אותה ב־<code dir=\"ltr\">/etc/php.ini</code> או ב־<code dir=\"ltr\">/etc/php.d/json.ini</code>.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] מותקן",
        "config-apc": "[http://www.php.net/apc APC] מותקן",
        "config-license-gfdl": "רישיון חופשי למסמכים של גנו גרסה 1.3 או חדשה יותר",
        "config-license-pd": "נחלת הכלל",
        "config-license-cc-choose": "בחירת רישיון קריאייטיב קומונז מותאם אישית",
-       "config-license-help": "אתרי ויקי ציבוריים רבים מפרסמים את כל התרומות [http://freedomdefined.org/Definition ברישיון חופשי].\nזה עוזר ליצור תחושה של בעלות קהילתית ומעודד תרומה לאורך זמן.\nזה בדרך כלל לא נחוץ לאתר ויקי פרטי או אתר של חברה מסחרית.\n\nאם האפשרות להשתמש בטקסט מוויקיפדיה והאפשרות שוויקיפדיה תוכל תקבל עותקים של טקסטים מהוויקי שלך חשובות לך, כדאי לבחור ב'''רישיון קריאייטיב קומונז ייחוס–שיתוף זהה''' (CC BY-SA).\n\nויקיפדיה השתמשה בעבר ברישיון החופשי למסמכים של גנו (GNU FDL או GFDL).\nהוא עדיין רישיון תקין, אבל קשה להבנה.\nכמו־כן, קשה לעשות שימוש חוזר ביצירות שפורסמו לפי GFDL.",
+       "config-license-help": "אתרי ויקי ציבוריים רבים מפרסמים את כל התרומות [http://freedomdefined.org/Definition ברישיון חופשי].\nזה עוזר ליצור תחושה של בעלות קהילתית ומעודד תרומה לאורך זמן.\nזה בדרך כלל לא נחוץ לאתר ויקי פרטי או אתר של חברה מסחרית.\n\nאם האפשרות להשתמש בטקסט מוויקיפדיה והאפשרות שוויקיפדיה תוכל תקבל עותקים של טקסטים מהוויקי שלך חשובות לך, כדאי לבחור ב<strong>{{int:config-license-cc-by-sa}}</strong>.\n\nויקיפדיה השתמשה בעבר ברישיון החופשי למסמכים של גנו (GNU FDL או GFDL).\nהוא עדיין רישיון תקין, אבל קשה להבנה.\nכמו־כן, קשה לעשות שימוש חוזר ביצירות שפורסמו לפי GFDL.",
        "config-email-settings": "הגדרות דוא״ל",
        "config-enable-email": "להפעיל דוא״ל יוצא",
        "config-enable-email-help": "אם אתם רוצים שדוא״ל יעבוד, [http://www.php.net/manual/en/mail.configuration.php אפשרויות הדוא״ל של PHP] צריכות להיות מוגדרות נכון.\nאם אינכם רוצים להפעיל שום אפשרויות דוא״ל, כבו אותן כאן ועכשיו.",
        "config-memcache-badport": "מספרי פתחה של Memcached צריכים להיות בין $1 ל־$2",
        "config-extensions": "הרחבות",
        "config-extensions-help": "ההרחבות ברשימה לעיל התגלו בתיקיית <span dir=\"ltr\"><code>./extensions</code></span> שלכם.\n\nייתכן שזה ידרוש הגדרות נוספות, אבל תוכלו להפעיל אותן עכשיו.",
+       "config-skins": "עיצובים",
+       "config-skins-help": "העיצובים לעיל נמצאו בתיקיית ה־<code dir=\"ltr\">./skins</code> שלך. חובה להפעיל לפחות אחת ולבחור בררת מחדל.",
+       "config-skins-use-as-default": "להשתמש בזה בתור בררת מחדל",
+       "config-skins-missing": "לא נמצאו עיצובים; מדיה־ויקי תשתמש בעיצוב גיבוי עד התקנת משהו מתאים.",
+       "config-skins-must-enable-some": "חובה לבחור לפחות עיצוב אחד שיופעל.",
+       "config-skins-must-enable-default": "העיצוב שנבחר בתור בררת מחדל חייב להיות מופעל.",
        "config-install-alreadydone": "'''אזהרה:''' נראה שכבר התקנתם את מדיה־ויקי ואתם מנסים להתקין אותה שוב.\nאנה התקדמו לדף הבא.",
        "config-install-begin": "כשתלחצו על \"{{int:config-continue}}\", תתחילו את ההתקנה של מדיה־ויקי.\nאם אתם עדיין רוצים לשנות משהו, לחצו על \"{{int:config-back}}\".",
        "config-install-step-done": "בוצע",
index 5c0e9db..62afb44 100644 (file)
@@ -47,7 +47,6 @@
        "config-env-good": "Le ambiente ha essite verificate.\nTu pote installar MediaWiki.",
        "config-env-bad": "Le ambiente ha essite verificate.\nTu non pote installar MediaWiki.",
        "config-env-php": "PHP $1 es installate.",
-       "config-env-php-toolow": "PHP $1 es installate.\nNonobstante, MediaWiki require PHP $2 o plus recente.",
        "config-unicode-using-utf8": "utf8_normalize.so per Brion Vibber es usate pro le normalisation Unicode.",
        "config-unicode-using-intl": "Le [http://pecl.php.net/intl extension PECL intl] es usate pro le normalisation Unicode.",
        "config-unicode-pure-php-warning": "'''Aviso''': Le [http://pecl.php.net/intl extension PECL intl] non es disponibile pro exequer le normalisation Unicode; le systema recurre al implementation lente in PHP pur.\nSi tu sito ha un alte volumine de traffico, tu deberea informar te un poco super le [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalisation Unicode].",
@@ -55,7 +54,7 @@
        "config-no-db": "Non poteva trovar un driver appropriate pro le base de datos! Es necessari installar un driver de base de datos pro PHP.\nLe sequente typos de base de datos es supportate: $1.\n\nSi tu compilava PHP tu mesme, reconfigura lo con un cliente de base de datos activate, per exemplo usante <code>./configure --with-mysqli</code>.\nSi tu installava PHP ex un pacchetto Debian o Ubuntu, tu debe installar equalmente, per exemplo, le modulo <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Attention''': tu ha SQLite $1, que es inferior al version minimal requirite, $2. SQLite essera indisponibile.",
        "config-no-fts3": "'''Attention''': SQLite es compilate sin [//sqlite.org/fts3.html modulo FTS3]; functionalitate de recerca non essera disponibile in iste back-end.",
-       "config-register-globals": "'''Attention: le option <code>[http://php.net/register_globals register_globals]</code> de PHP es activate.'''\n'''Disactiva lo si tu pote.'''\nMediaWiki functionara, ma tu servitor es exponite a potential vulnerabilitates de securitate.",
+       "config-register-globals-error": "<strong>Error: Le option <code>[http://php.net/register_globals register_globals]</code> de PHP es active.\nIllo debe esser disactivate pro continuar le installation.</strong>\nVide [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] pro obtener adjuta sur como facer lo.",
        "config-magic-quotes-runtime": "'''Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] es active!'''\nIste option corrumpe le entrata de datos imprevisibilemente.\nTu non pote installar o usar MediaWiki si iste option non es disactivate.",
        "config-magic-quotes-sybase": "'''Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] es active!'''\nIste option corrumpe le entrata de datos imprevisibilemente.\nTu non pote installar o usar MediaWiki si iste option non es disactivate.",
        "config-mbstring": "'''Fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] es active!'''\nIste option causa errores e pote corrumper datos imprevisibilemente.\nTu non pote installar o usar MediaWiki si iste option non es disactivate.",
index 02ff624..80b8a09 100644 (file)
@@ -11,7 +11,8 @@
                        "Whym",
                        "Yanajin66",
                        "青子守歌",
-                       "아라"
+                       "아라",
+                       "Shield-9"
                ]
        },
        "config-desc": "MediaWiki のインストーラー",
@@ -56,7 +57,6 @@
        "config-env-good": "環境を確認しました。\nMediaWiki をインストールできます。",
        "config-env-bad": "環境を確認しました。\nMediaWiki のインストールはできません。",
        "config-env-php": "PHP $1がインストールされています。",
-       "config-env-php-toolow": "PHP $1 がインストールされています。\nしかし、MediaWikiには PHP $2 以上が必要です。",
        "config-unicode-using-utf8": "Unicode正規化に、Brion Vibberのutf8_normalize.soを使用。",
        "config-unicode-using-intl": "Unicode正規化に[http://pecl.php.net/intl intl PECL 拡張機能]を使用。",
        "config-unicode-pure-php-warning": "<strong>警告:</strong> Unicode 正規化の処理に [http://pecl.php.net/intl intl PECL 拡張機能]を利用できないため、処理が遅いピュア PHP の実装を代わりに使用しています。\n高トラフィックのサイトを運営する場合は、[//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode 正規化]をお読みください。",
@@ -64,7 +64,6 @@
        "config-no-db": "適切なデータベース ドライバーが見つかりませんでした! PHP にデータベース ドライバーをインストールする必要があります。\n以下の種類のデータベースに対応しています: $1\n\nPHP を自分でコンパイルした場合は、例えば <code>./configure --with-mysqli</code> を実行して、データベース クライアントを使用できるように再設定してください。\nDebian または Ubuntu のパッケージから PHP をインストールした場合は、モジュール (例: <code>php5-mysql</code>) もインストールする必要があります。",
        "config-outdated-sqlite": "<strong>警告:</strong> あなたは SQLite $1 を使用していますが、最低限必要なバージョン $2 より古いバージョンです。SQLite は利用できません。",
        "config-no-fts3": "<strong>警告:</strong> SQLite は [//sqlite.org/fts3.html FTS3] モジュールなしでコンパイルされており、このバックエンドでは検索機能は利用できなくなります。",
-       "config-register-globals": "<strong>警告: PHP の <code>[http://php.net/register_globals register_globals]</code> オプションが有効になっています。\n可能なら無効化してください。</strong>\nMediaWiki は動作しますが、サーバーの潜在的なセキュリティ脆弱性が露呈されます。",
        "config-magic-quotes-runtime": "<strong>致命的エラー: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] が動作しています!</strong>\nこのオプションは、予期せずデータ入力を破壊します。\nこのオプションを無効化しない限り、MediaWiki のインストールや使用はできません。",
        "config-magic-quotes-sybase": "<strong>致命的エラー: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] が動作しています!</strong>\nこのオプションは、予期せずデータ入力を破壊します。\nこのオプションを無効化しない限り、MediaWiki のインストールや使用はできません。",
        "config-mbstring": "<strong>致命的エラー: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] が動作しています!</strong>\nこのオプションは、エラーを引き起こし、予期せずデータを破壊するおそれがあります。\nこのオプションを無効化しない限り、MediaWiki のインストールや使用はできません。",
        "config-license-gfdl": "GNU フリー文書利用許諾契約書 1.3 以降",
        "config-license-pd": "パブリック・ドメイン",
        "config-license-cc-choose": "その他のクリエイティブ・コモンズ・ライセンスを選択する",
-       "config-license-help": "多くの公開ウィキでは、すべての寄稿物が[http://freedomdefined.org/Definition フリーライセンス]のもとに置かれています。\nこうすることにより、コミュニティによる共有の感覚が生まれ、長期的な寄稿が促されます。\n私的ウィキや企業のウィキでは、通常、フリーライセンスにする必要はありません。\n\nウィキペディアにあるテキストをあなたのウィキで利用し、逆にあなたのウィキにあるテキストをウィキペディアに複製することを許可したい場合には、<strong>クリエイティブ・コモンズ 表示-継承</strong>を選択するべきです。\n\nウィキペディアは以前、GNUフリー文書利用許諾契約書(GFDL)を使用していました。\nGFDLは有効なライセンスですが、内容を理解するのは困難です。\nまた、GFDLのもとに置かれているコンテンツの再利用も困難です。",
+       "config-license-help": "多くの公開ウィキでは、すべての寄稿物が[http://freedomdefined.org/Definition フリーライセンス]のもとに置かれています。\nこうすることにより、コミュニティによる共有の感覚が生まれ、長期的な寄稿が促されます。\n私的ウィキや企業のウィキでは、通常、フリーライセンスにする必要はありません。\n\nウィキペディアにあるテキストをあなたのウィキで利用し、逆にあなたのウィキにあるテキストをウィキペディアに複製することを許可したい場合には、<strong>{{int:config-license-cc-by-sa}}</strong>を選択するべきです。\n\nウィキペディアは以前、GNUフリー文書利用許諾契約書(GFDL)を使用していました。\nGFDLは有効なライセンスですが、内容を理解するのは困難です。\nまた、GFDLのもとに置かれているコンテンツの再利用も困難です。",
        "config-email-settings": "メールの設定",
        "config-enable-email": "メール送信を有効にする",
        "config-enable-email-help": "メールを使用したい場合は、[http://www.php.net/manual/en/mail.configuration.php PHP のメール設定]が正しく設定されている必要があります。\nメールの機能を使用しない場合は、ここで無効にすることができます。",
        "config-memcache-badport": "Memcached のポート番号は $1 から $2 の範囲にしてください。",
        "config-extensions": "拡張機能",
        "config-extensions-help": "<code>./extensions</code> ディレクトリ内で、上に列挙した拡張機能を検出しました。\n\nこれらの拡張機能には追加の設定が必要な場合がありますが、今すぐ有効化できます。",
+       "config-skins": "外装",
+       "config-skins-use-as-default": "この外装をデフォルトとして使う",
+       "config-skins-must-enable-some": "少なくとも1つの有効化する外装を選択する必要があります。",
+       "config-skins-must-enable-default": "デフォルトとして選択された外装は有効である必要があります。",
        "config-install-alreadydone": "<strong>警告:</strong> 既にMediaWikiがインストール済みで、再びインストールし直そうとしています。\n次のページへ進んでください。",
        "config-install-begin": "「{{int:config-continue}}」を押すと、MediaWiki のインストールを開始できます。\n変更したい設定がある場合は、「{{int:config-back}}」を押してください。",
        "config-install-step-done": "実行",
index 08526f4..9941442 100644 (file)
        "config-env-good": "Den Environement gouf nogekuckt.\nDir kënnt MediaWiki installéieren.",
        "config-env-bad": "Den Environnement gouf iwwerpréift.\nDir kënnt MediWiki net installéieren.",
        "config-env-php": "PHP $1 ass installéiert.",
-       "config-env-php-toolow": "PHP $1 ass installéiert.\nAwer MediaWiki brauch PHP $2 oder méi héich.",
        "config-unicode-using-utf8": "Fir d'Unicode-Normalisatioun gëtt dem Brion Vibber säin <code>utf8_normalize.so</code> benotzt.",
        "config-no-db": "Et konnt kee passenden Datebank-Driver fonnt ginn! Dir musst een Datebank-Driver fir PHP installéieren.\nDës Datebank-Type ginn ënnerstëtzt: $1.\n\nWann Dir PHP selwer compiléiert hutt, da rekonfiguréiert en mat dem ageschalten Datebank-Client, zum Beispill an deem Dir <code>./configure --with-mysql</code> benotzt.\nWann Dir PHP vun engem Debian oder Ubuntu Package aus installéiert hutt, da musst Dir och den php5-mysql Modul installéieren.",
        "config-outdated-sqlite": "'''Warnung:''' SQLite $1 ass installéiert. Allerdengs brauch MediaWiki SQLite $2 oder méi nei. SQLite ass dofir net disponibel.",
        "config-memory-bad": "'''Opgepasst:''' De Parameter <code>memory_limit</code> vu PHP ass $1.\nDat ass wahrscheinlech ze niddreg.\nD'Installatioun kéint net funktionéieren.",
+       "config-iconv": "<strong>Fatal:</strong> PHP muss mat Support fir d'[http://www.php.net/manual/en/iconv.installation.php iconv-Erweiderung] kompiléiert ginn.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] ass installéiert",
        "config-apc": "[http://www.php.net/apc APC] ass installéiert",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] ass installéiert",
        "config-diff3-bad": "GNU diff3 gouf net fonnt.",
        "config-git": "D'Software Git fir d'Kontroll vu Versioune gouf fonnt: <code>$1</code>.",
+       "config-git-bad": "D'Software fir d'Kontroll vun de Versiounen 'Git' gouf net fonnt.",
        "config-no-uri": "'''Feeler:''' Déi aktuell URI konnt net festgestallt ginn.\nInstallatioun ofgebrach.",
        "config-using-server": "De Servernumm \"<nowiki>$1</nowiki>\" gëtt benotzt.",
        "config-using-uri": "D'Server URL  \"<nowiki>$1$2</nowiki>\" gëtt benotzt.",
        "config-cc-again": "Nach eng kéier eraussichen...",
        "config-advanced-settings": "Erweidert Astellungen",
        "config-extensions": "Erweiderungen",
+       "config-skins": "Ausgesinn",
+       "config-skins-help": "D'Ausgesinn déi hei driwwer stinn goufen am Repertoire <code>./skins</code> fonnt. Dir musst mindestens eent aktivéieren an de Standard eraussichen.",
+       "config-skins-use-as-default": "Dëst Ausgesinn als Standard benotzen",
+       "config-skins-missing": "Et goufe keen Ausgesinn (Skin) fonnt; MediaWiki benotzt e Fallback-Ausgesinnbis Dir anerer installéiert.",
+       "config-skins-must-enable-some": "Dir musst mindestens een Ausgesinn fir z'aktivéieren eraussichen.",
+       "config-skins-must-enable-default": "Dat als Standard erausgesichten Ausgesinn muss aktivéiert sinn.",
        "config-install-step-done": "fäerdeg",
        "config-install-step-failed": "huet net funktionéiert",
        "config-install-extensions": "Mat den Ereiderungen",
index b67f62f..255718f 100644 (file)
@@ -65,6 +65,7 @@
        "config-memory-raised": "<code>memory_limit</code> за PHP изнесува $1, зголемен на $2.",
        "config-memory-bad": "'''Предупредување:''' <code>memory_limit</code> за PHP изнесува $1.\nОва е веројатно премалку.\nВоспоставката може да не успее!",
        "config-ctype": "'''Фатална грешка''': PHP мора да се состави со поддршка за [http://www.php.net/manual/en/ctype.installation.php додатокот Ctype].",
+       "config-iconv": "<strong>Кобно:</strong> PHP мора да се срочува со поддршка за [http://www.php.net/manual/en/iconv.installation.php додатокот iconv].",
        "config-json": "'''Кобно:''' PHP беше срочен без поддршка од JSON.\nЌе мора да го воспоставите додатокот за JSON во PHP, или додатокот [http://pecl.php.net/package/jsonc PECL jsonc] пред да го воспоставите МедијаВики.\n* Додатокот за PHP е вклучен во верзиите 5 и 6 на Linux (од Red Hat Enterprise) (CentOS), но мора да се активира во <code>/etc/php.ini</code> или <code>/etc/php.d/json.ini</code>.\n* Некои варијанти на Linux излезени по мај 2013 г. не го содржат додатокот за PHP, туку го пакуваат додатокот PECL како <code>php5-json</code> или <code>php-pecl-jsonc</code>.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] е воспоставен",
        "config-apc": "[http://www.php.net/apc APC] е воспоставен",
        "config-license-gfdl": "ГНУ-ова лиценца за слободна документација 1.3 или понова",
        "config-license-pd": "Јавна сопственост",
        "config-license-cc-choose": "Одберете друга лиценца на Криејтив комонс по ваш избор",
-       "config-license-help": "Многу јавни викија ги ставаат сите придонеси под [http://freedomdefined.org/Definition слободна лиценца].\nСо ова се создава атмосфера на општа сопственост и поттикнува долгорочно учество.\nОва не е неопходно за викија на поединечни физички или правни лица.\n\nАко сакате да користите текст од Википедија, и сакате Википедија да прифаќа текст прекопиран од вашето вики, тогаш треба да ја одберете лиценцата '''Криејтив комонс НаведиИзвор СподелиПодИстиУслови'''.\n\nГНУ-овата лиценца за слободна документација (ГЛСД) е старата лиценца на Википедија.\nОваа лиценца сè уште важи, но е тешка за разбирање.\nИсто така треба да се има на ум дека пренамената на содржините под ГЛСД не е лесна.",
+       "config-license-help": "Многу јавни викија ги ставаат сите придонеси под [http://freedomdefined.org/Definition слободна лиценца].\nСо ова се создава атмосфера на општа сопственост и поттикнува долгорочно учество.\nОва не е неопходно за викија на поединечни физички или правни лица.\n\nАко сакате да користите текст од Википедија, и сакате Википедија да прифаќа текст прекопиран од вашето вики, тогаш треба да ја одберете лиценцата <strong>{{int:config-license-cc-by-sa}}</strong>..\n\nГНУ-овата лиценца за слободна документација (ГЛСД) е старата лиценца на Википедија.\nОваа лиценца сè уште важи, но е тешка за разбирање.\nИсто така треба да се има на ум дека пренамената на содржините под ГЛСД не е лесна.",
        "config-email-settings": "Нагодувања за е-пошта",
        "config-enable-email": "Овозможи излезна е-пошта",
        "config-enable-email-help": "Ако сакате да работи е-поштата, [http://www.php.net/manual/en/mail.configuration.php поштенските нагодувања на PHP] треба да се правилно наместени.\nАко воопшто не сакате никакви функции за е-пошта, тогаш можете да ги оневозможите тука.",
        "config-memcache-badport": "Бројките за портата на Memcached треба да бидат помеѓу $1 и $2",
        "config-extensions": "Додатоци",
        "config-extensions-help": "Во вашата папка <code>./extensions</code> беа востановени горенаведените додатоци.\n\nЗа ова може да треба дополнително нагодување, но можете да ги овозможите сега",
+       "config-skins": "Рува",
+       "config-skins-help": "Во вашата папка <code>./skins</code> се утврдени горенаведените рува. Ќе мора да овозможите барем едно и да го изберете основното.",
+       "config-skins-use-as-default": "Користи го како основно",
+       "config-skins-missing": "Не пронајдов ниедно руво. МедијаВики ќе користи резервно руво сè додека не воспоставите други.",
+       "config-skins-must-enable-some": "Ќе треба да изберете барем едно руво.",
+       "config-skins-must-enable-default": "Рувото што го избравте како основно мора да се овозможи.",
        "config-install-alreadydone": "'''Предупредување:''' Изгледа дека веќе го имате воспоставено МедијаВики и сега сакате да го воспоставите повторно.\nПродолжете на следната страница.",
        "config-install-begin": "Стискајќи на „{{int:config-continue}}“ ќе ја започнете воспоставката на МедијаВики.\nАко сакате да направите измени во досегашното, стиснете на „{{int:config-back}}“.",
        "config-install-step-done": "готово",
index 26f1cc7..2f2825d 100644 (file)
@@ -16,7 +16,7 @@
        "config-localsettings-badkey": "Kunci yang anda berikan tidak betul.",
        "config-upgrade-key-missing": "Pemasangan yang sedia ada MediaWiki telah dikesan.\nUntuk menaik taraf pemasangan, Sila letakkan baris berikut di bahagian bawah <code>LocalSettings.php</code> anda:\n\n$1",
        "config-localsettings-incomplete": "<code>LocalSettings.php</code> sedia ada nampaknya tidak lengkap.\nPemboleh ubah $1 tidak disetkan.\nSila tukar <code>LocalSettings.php</code> supaya pemboleh ubah ini disetkan, dan klik \"{{int:Config-terus}}\".",
-       "config-localsettings-connection-error": "Ralat berlaku semasa semasa menyambung ke dalam pangkalan data yang menggunakan seting yang dinyatakan dalam <code>LocalSettings.php</code> atau <code>AdminSettings.php</code>. Sila betulkan tetapan ini dan cuba lagi.\n\n$1",
+       "config-localsettings-connection-error": "Ralat berlaku semasa menyambung ke pangkalan data dengan menggunakan tetapan yang dinyatakan dalam <code>LocalSettings.php</code>. Sila betulkan tetapan tersebut dan cuba lagi.\n\n$1",
        "config-session-error": "Ralat ketika memulakan sesi: $1",
        "config-session-expired": "Data sesi anda seolah-olah telah tamat tempoh.\nSesi dikonfigurasi untuk seumur hidup sebanyak $1.\nAnda boleh menambah ini dengan menetapkan <code>session.gc_maxlifetime</code> di php.ini.\nMemulakan semula proses pemasangan.",
        "config-no-session": "Data sesi anda telah hilang!\nSemak php.ini anda dan pastikan <code>session.save_path</code> disetkan kepada satu direktori yang sesuai.",
        "config-env-good": "Persekitaran telah diperiksa.\nAnda boleh memasang MediaWiki.",
        "config-env-bad": "Persekitaran telah diperiksa. \nAnda tidak boleh memasang MediaWiki.",
        "config-env-php": "PHP $1 dipasang.",
-       "config-env-php-toolow": "PHP $1 dipasang.\nBagaimanapun, MediaWiki memerlukan PHP $2 ke atas.",
        "config-unicode-using-utf8": "utf8_normalize.so oleh Brion Vibber digunakan untuk penormalan Unicode.",
        "config-unicode-using-intl": "[http://pecl.php.net/intl Sambungan intl PECL] digunakan untuk penormalan Unicode.",
        "config-unicode-update-warning": "<strong>Amaran:</strong> Versi pembalut penormalan Unicode yang terpasang menggunakan perpustakaan [http://site.icu-project.org/ projek ICU] dalam versi yang lampau.\nAnda harus [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations menaik taraf] jika Unicode penting bagi anda.",
        "config-no-fts3": "<strong>Amaran:</strong> SQLite disusun tanpa [//sqlite.org/fts3.html modil FTS3], maka ciri-ciri pencarian tidak akan disediakan pada backend ini.",
-       "config-register-globals": "<strong>Amaran: Pilihan <code>[http://php.net/register_globals register_globals]</code> PHP dihidupkan.\nMatikannya jika boleh.</strong>\nMediaWiki boleh digunakan, tetapi pelayan anda akan terdedah kepada kemungkinan kerentanan keselamatan.",
        "config-mbstring": "<strong>Amaran keras: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] sedang aktif!</strong>\nOpsyen ini menyebabkan ralat dan mungkin mencemari data secara tanpa diduga.\nAnda tidak boleh memasang atau menggunakan MediaWiki melainkan opsyen ini dinyahdayakan.",
        "config-pcre-old": "<strong>Amaran keras:</strong> PCRE $1 ke atas diperlukan.\nBinari PHP anda berpaut dengan PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Keterangan lanjut].",
        "config-memory-bad": "<strong>Amaran:</strong> <code>memory_limit</code> (Had memori) PHP adalah $1.\nIni mungkin terlalu rendah.\nPemasangan mungkin akan gagal!",
        "config-ctype": "<strong>Amaran keras:</strong> PHP mesti disusun dengan sokongan untuk [http://www.php.net/manual/en/ctype.installation.php sambungan Ctype].",
+       "config-xcache": "[http://xcache.lighttpd.net/ XCache] dipasang",
+       "config-apc": "[http://www.php.net/apc APC] dipasang",
+       "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] dipasang",
        "config-no-cli-uri": "<strong>Amaran:</strong> Tiada <code>--scriptpath</code> dinyatakan, maka digunakannya yang asali: <code>$1</code>.",
+       "config-using-server": "Sedang menggunakan nama pelayan \"<nowiki>$1</nowiki>\".",
+       "config-using-uri": "Sedang menggunakan URL pelayan \"<nowiki>$1$2</nowiki>\".",
        "config-no-cli-uploads-check": "<strong>Amaran:</strong> Direktori asali anda untuk muat naikan (<code>$1</code>) belum diperiksa untuk kerentanan\nkepada pelaksanaan skrip yang menyeleweng sewaktu pemasangan CLI.",
        "config-db-charset": "Peranggu aksara pangkalan data",
        "config-pg-test-error": "Tidak boleh bersambung dengan pangkalan data <strong>$1</strong>: $2",
index eb16d0d..b7d0dfd 100644 (file)
        "config-memcache-badport": "Numery portu Memcached powinny zawierać się pomiędzy $1 i $2.",
        "config-extensions": "Rozszerzenia",
        "config-extensions-help": "Rozszerzenia wyżej wymienione zostały wykryte w katalogu <code>./extensions</code>.\n\nMogą one wymagać dodatkowych czynności konfiguracyjnych, ale można je teraz włączyć",
+       "config-skins": "Skórki",
+       "config-skins-help": "Powyższe skórki zostały wykryte w twoim katalogi <code>./skins</code>. Należy włączyć co najmniej jedną i wybrać domyślną.",
+       "config-skins-use-as-default": "Użyj tej skórki jako domyślnej",
+       "config-skins-must-enable-default": "Skórka wybrana jako domyślna musi być włączona.",
        "config-install-alreadydone": "'''Uwaga''' – wydaje się, że MediaWiki jest już zainstalowane, a obecnie próbujesz zainstalować je ponownie.\nPrzejdź do następnej strony.",
        "config-install-begin": "Po naciśnięciu \"{{int:config-continue}}\", rozpocznie się instalacja MediaWiki.\nJeśli nadal chcesz dokonać zmian, naciśnij \"{{int:config-back}}\".",
        "config-install-step-done": "gotowe",
index a547edc..114839e 100644 (file)
@@ -59,7 +59,6 @@
        "config-env-good": "O ambiente foi verificado.\nPode instalar o MediaWiki.",
        "config-env-bad": "O ambiente foi verificado.\nNão pode instalar o MediaWiki.",
        "config-env-php": "O PHP $1 está instalado.",
-       "config-env-php-toolow": "O PHP $1 está instalado.\nNo entanto, o MediaWiki requer o PHP $2 ou superior.",
        "config-unicode-using-utf8": "A usar o utf8_normalize.so, por Brion Vibber, para a normalização Unicode.",
        "config-unicode-using-intl": "A usar a [http://pecl.php.net/intl extensão intl PECL] para a normalização Unicode.",
        "config-unicode-pure-php-warning": "'''Aviso''': A [http://pecl.php.net/intl extensão intl PECL] não está disponível para efetuar a normalização Unicode. Irá recorrer-se à implementação em PHP puro, que é mais lenta.\nSe o seu site tem alto volume de tráfego, devia informar-se um pouco sobre a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations/pt normalização Unicode].",
@@ -67,7 +66,6 @@
        "config-no-db": "Não foi possível encontrar um controlador ''(driver)'' apropriado da base de dados! Precisa de instalar um controlador da base de dados para o PHP. São aceites os seguintes tipos de base de dados: $1.\n\nSe fez a compilação do PHP, reconfigure-o com um cliente de base de dados ativado; por exemplo, usando <code>./configure --with-mysql</code>.\nSe instalou o PHP a partir de um pacote Debian ou Ubuntu, então precisa de instalar também, por exemplo, o pacote <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Aviso''': Tem a versão $1 do SQLite, que é anterior à versão mínima necessária, a $2. O SQLite não estará disponível.",
        "config-no-fts3": "'''Aviso''': O SQLite foi compilado sem o módulo [//sqlite.org/fts3.html FTS3]; as funcionalidades de pesquisa não estarão disponíveis nesta instalação.",
-       "config-register-globals": "'''Aviso: A opção <code>[http://php.net/register_globals register_globals]</code> do PHP está ativada.'''\n'''Desative-a, se puder.'''\nO MediaWiki funciona mesmo assim, mas o seu servidor está exposto a potenciais vulnerabilidades de segurança.",
        "config-magic-quotes-runtime": "'''Erro fatal: A opção [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] está ativa!'''\nEsta opção causa corrupção dos dados de entrada, de uma forma imprevisível.\nNão pode instalar ou usar o MediaWiki a menos que esta opção seja desativada.",
        "config-magic-quotes-sybase": "'''Erro fatal: A opção [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] está ativa!'''\nEsta opção causa corrupção dos dados de entrada, de uma forma imprevisível.\nNão pode instalar ou usar o MediaWiki a menos que esta opção seja desativada.",
        "config-mbstring": "'''Erro fatal: A opção [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] está ativa!'''\nEsta opção causa erros e pode corromper os dados de uma forma imprevisível.\nNão pode instalar ou usar o MediaWiki a menos que esta opção seja desativada.",
        "config-license-gfdl": "GNU Free Documentation License 1.3 ou posterior",
        "config-license-pd": "Domínio Público",
        "config-license-cc-choose": "Selecionar uma licença personalizada Creative Commons",
-       "config-license-help": "Muitas wikis de acesso público licenciam todas as colaborações com uma [http://freedomdefined.org/Definition licença livre].\nIsto ajuda a criar um sentido de propriedade da comunidade e encoraja as colaborações a longo prazo.\nTal não é geralmente necessário nas wikis privadas ou corporativas.\n\nSe pretende que seja possível usar textos da Wikipédia na sua wiki e que seja possível a Wikipédia aceitar textos copiados da sua wiki, deve escolher a licença Creative Commons - Atribuição - Partilha nos Mesmos Termos.\n\nA licença anterior da Wikipédia era a licença GNU Free Documentation License.\nA GFDL é uma licença válida, mas de difícil compreensão.\nTambém é difícil reutilizar conteúdos licenciados com a GFDL.",
+       "config-license-help": "Muitas wikis de acesso público licenciam todas as colaborações com uma [http://freedomdefined.org/Definition licença livre].\nIsto ajuda a criar um sentido de propriedade da comunidade e encoraja as colaborações a longo prazo.\nTal não é geralmente necessário nas wikis privadas ou corporativas.\n\nSe pretende que seja possível usar textos da Wikipédia na sua wiki e que seja possível a Wikipédia aceitar textos copiados da sua wiki, deve escolher a licença <strong>{{int:config-license-cc-by-sa}}</strong>..\n\nA licença anterior da Wikipédia era a licença GNU Free Documentation License.\nA GFDL é uma licença válida, mas de difícil compreensão.\nTambém é difícil reutilizar conteúdos licenciados com a GFDL.",
        "config-email-settings": "Definições do correio electrónico",
        "config-enable-email": "Ativar mensagens eletrónicas de saída",
        "config-enable-email-help": "Se quer que o correio eletrónico funcione, as [http://www.php.net/manual/en/mail.configuration.php definições de correio eletrónico do PHP] têm de estar configuradas corretamente.\nSe não pretende viabilizar qualquer funcionalidade de correio eletrónico, pode desativá-lo aqui.",
        "config-memcache-badport": "Os números das portas do Memcached devem estar entre $1 e $2.",
        "config-extensions": "Extensões",
        "config-extensions-help": "Foi detectada a existência das extensões listadas acima, no seu diretório <code>./extensions</code>.\n\nEstas talvez necessitem de configurações adicionais, mas pode ativá-las agora",
+       "config-skins": "Temas",
+       "config-skins-help": "Os temas listados abaixo foram detetados no seu diretório <code>./skins</code>. Deverá ativar pelo menos um e escolher qual o escolhido por padrão.",
+       "config-skins-use-as-default": "Usar este tema como padrão",
+       "config-skins-must-enable-some": "Deve escolher pelo menos um tema para ativar.",
+       "config-skins-must-enable-default": "O tema escolhido como padrão deve ser ativado.",
        "config-install-alreadydone": "'''Aviso:''' Parece que já instalou o MediaWiki e está a tentar instalá-lo novamente.\nPasse para a próxima página, por favor.",
        "config-install-begin": "Ao clicar \"{{int:config-continue}}\", vai iniciar a instalação do MediaWiki.\nSe quiser fazer mais alterações, clique \"{{int:config-back}}\".",
        "config-install-step-done": "terminado",
index 5e86a92..0735574 100644 (file)
@@ -70,6 +70,7 @@
        "config-outdated-sqlite": "Used as warning. Parameters:\n* $1 - the version of SQLite that has been installed\n* $2 - minimum version",
        "config-no-fts3": "A \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.",
        "config-register-globals-error": "Error message in the MediaWiki installer environment checks.",
+       "config-magic-quotes-gpc": "{{Related|Config-fatal}}",
        "config-magic-quotes-runtime": "{{Related|Config-fatal}}",
        "config-magic-quotes-sybase": "{{Related|Config-fatal}}",
        "config-mbstring": "{{Related|Config-fatal}}",
@@ -80,6 +81,7 @@
        "config-memory-raised": "Parameters:\n* $1 is the configured <code>memory_limit</code>.\n* $2 is the value to which <code>memory_limit</code> was raised.",
        "config-memory-bad": "Parameters:\n* $1 is the configured <code>memory_limit</code>.",
        "config-ctype": "Message if support for [http://www.php.net/manual/en/ctype.installation.php Ctype] is missing from PHP.\n{{Related|Config-fatal}}",
+       "config-iconv": "Message if support for [http://www.php.net/manual/en/iconv.installation.php iconv] is missing from PHP.\n{{Related|Config-fatal}}",
        "config-json": "Message if support for [[wikipedia:JSON|JSON]] is missing from PHP.\n* \"[[wikipedia:Red Hat Enterprise Linux|Red Hat Enterprise Linux]]\" (RHEL) and \"[[wikipedia:CentOS|CentOS]]\" refer to two almost-identical Linux distributions. \"5 and 6\" refers to version 5 or 6 of either distribution. Because RHEL 7 likely will not include the PHP extension, do not translate as \"5 or newer\".\n* \"The [http://www.php.net/json PHP extension]\" is the JSON extension included with PHP 5.2 and newer.\n* \"The [http://pecl.php.net/package/jsonc PECL extension]\" is based on the PHP extension, though excludes code some distributions have found unacceptable (see [[bugzilla:47431]]).\n{{Related|Config-fatal}}",
        "config-xcache": "Message indicates if this program is available",
        "config-apc": "Message indicates if this program is available",
        "config-license-gfdl": "Option for the wiki content license in the MediaWiki installer.",
        "config-license-pd": "{{Identical|Public domain}}",
        "config-license-cc-choose": "Option for the wiki content license in the MediaWiki installer.",
-       "config-license-help": "Help text in MediaWiki installer for license selection.",
+       "config-license-help": "Help text in MediaWiki installer for license selection.\n\nRefers to {{msg-mw|Config-license-cc-by-sa}}.",
        "config-email-settings": "{{Identical|E-mail setting}}",
        "config-enable-email": "Checkbox label in the MediaWiki installer to allow the wiki to send email to its users.",
        "config-enable-email-help": "Help text in the MediaWiki installer to allow the wiki to send email to its users.",
        "config-memcache-badport": "Used as error message. Parameters:\n* $1 - 1 (hard-coded)\n* $2 - 65535 (hard-coded)\nSee also:\n* {{msg-mw|Config-memcache-badip}}\n* {{msg-mw|Config-memcache-noport}}",
        "config-extensions": "{{Identical|Extension}}",
        "config-extensions-help": "{{doc-important|Do not translate <code>./extensions</code>.}}\nUsed in help box.",
+       "config-skins": "{{Identical|Skin}}",
+       "config-skins-help": "{{doc-important|Do not translate <code>./skins</code>.}}\nUsed in help box.",
+       "config-skins-use-as-default": "Label shown next to skin names.",
+       "config-skins-missing": "Warning message shown when there are no skins to install.",
+       "config-skins-must-enable-some": "Error message shown when the user does silly things.",
+       "config-skins-must-enable-default": "Error message shown when the user does silly things.",
        "config-install-alreadydone": "Error message shown to users visiting the installer when the wiki appears to already be set up.",
        "config-install-begin": "Prompt at the end of the initial configuration options screen before the wiki software is installed.",
        "config-install-step-done": "{{Identical|Done}}",
index 3203df7..15ac805 100644 (file)
@@ -80,6 +80,7 @@
        "config-memory-raised": "Ограничение на доступную PHP память (<code>memory_limit</code>) поднято с $1 до $2.",
        "config-memory-bad": "'''Внимание:''' размер PHP <code>memory_limit</code> составляет $1.\nВероятно, этого слишком мало.\nУстановка может потерпеть неудачу!",
        "config-ctype": "'''Фатальная ошибка:''' PHP должен быть скомпилирован с поддержкой [http://www.php.net/manual/ru/ctype.installation.php расширения Ctype].",
+       "config-iconv": "<strong>Фатальная ошибка:</strong> PHP должен быть скомпилирован с поддержкой [http://www.php.net/manual/en/iconv.installation.php расширения iconv].",
        "config-json": "'''Фатальная ошибка:''' PHP был скомпилирован без поддержка JSON.\nВам необходимо установить либо расширение PHP JSON, либо расширение [http://pecl.php.net/package/jsonc PECL jsonc] перед установкой MediaWiki.\n* PHP-расширение входит в состав Red Hat Enterprise Linux (CentOS) 5 и 6, хотя должна быть включено в <code>/etc/php.ini</code> или <code>/etc/php.d/json.ini</code>.\n* Некоторые дистрибутивы Linux, выпущенные после мая 2013 года, не включают расширение PHP, вместо того, чтобы упаковывать расширение PECL как <code>php5-json</code> или <code>php-pecl-jsonc</code>.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] установлен",
        "config-apc": "[http://www.php.net/apc APC] установлен",
        "config-license-gfdl": "GNU Free Documentation License 1.3 или более поздняя",
        "config-license-pd": "Общественное достояние",
        "config-license-cc-choose": "Выберите одну из лицензий Creative Commons",
-       "config-license-help": "Многие общедоступные вики разрешают использовать свои материалы на условиях [http://freedomdefined.org/Definition/Ru свободных лицензий].\nЭто помогает созданию чувства общности, стимулирует долгосрочное участие.\nНо в этом нет необходимости для частных или корпоративных вики.\n\nЕсли вы хотите использовать тексты из Википедии или хотите, что в Википедию можно было копировать тексты из вашей вики, вам следует выбрать '''Creative Commons Attribution Share Alike'''.\n\nВикипедия ранее использовала лицензию GNU Free Documentation License.\nGFDL может быть использована, но она сложна для понимания и осложняет повторное использование материалов.",
+       "config-license-help": "Многие общедоступные вики разрешают использовать свои материалы на условиях [http://freedomdefined.org/Definition/Ru свободных лицензий].\nЭто помогает созданию чувства общности, стимулирует долгосрочное участие.\nНо в этом нет необходимости для частных или корпоративных вики.\n\nЕсли вы хотите использовать тексты из Википедии или хотите, что в Википедию можно было копировать тексты из вашей вики, вам следует выбрать <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nВикипедия ранее использовала лицензию GNU Free Documentation License.\nGFDL может быть использована, но она сложна для понимания и осложняет повторное использование материалов.",
        "config-email-settings": "Настройки электронной почты",
        "config-enable-email": "Включить исходящие e-mail",
        "config-enable-email-help": "Если вы хотите, чтобы электронная почта работала, необходимо выполнить [http://www.php.net/manual/ru/mail.configuration.php соответствующие настройки PHP].\nЕсли вы не хотите использовать возможности электронной почты в вики, вы можете её отключить.",
        "config-memcache-badport": "Номера портов Memcached должны лежать в пределах от $1 до $2.",
        "config-extensions": "Расширения",
        "config-extensions-help": "Расширения MediaWiki, перечисленные выше, были найдены в каталоге <code>./extensions</code>.\n\nОни могут потребовать дополнительные настройки, но их можно включить прямо сейчас",
+       "config-skins": "Темы оформления",
+       "config-skins-help": "Перечисленные выше темы оформления были обнаружены в вашем каталоге <code>./skins</code>. Вам необходимо включить по крайней мере один из них и выбрать тот, что будет по умолчанию.",
+       "config-skins-use-as-default": "Использовать по умолчанию эту тему оформления",
+       "config-skins-missing": "Темы оформления не найдены. MediaWiki будет использовать резервную тему до тех пор, пока вы не установите что-нибудь подходящее.",
+       "config-skins-must-enable-some": "Вы должны оставить включённой как минимум одну тему оформления.",
+       "config-skins-must-enable-default": "Тема оформления, выбранная по умолчанию, должна быть включена.",
        "config-install-alreadydone": "'''Предупреждение:''' Вы, кажется, уже устанавливали MediaWiki и пытаетесь произвести повторную установку.\nПожалуйста, перейдите на следующую страницу.",
        "config-install-begin": "Нажав «{{int:config-continue}}», вы начнёте установку MediaWiki.\nЕсли вы хотите внести изменения, нажмите «{{int:config-back}}».",
        "config-install-step-done": "выполнено",
index 2065352..a255cc1 100644 (file)
@@ -55,7 +55,6 @@
        "config-env-good": "Перевірку середовища успішно завершено.\nВи можете встановити MediaWiki.",
        "config-env-bad": "Було проведено перевірку середовища. Ви не можете встановити MediaWiki.",
        "config-env-php": "Встановлено версію PHP: $1.",
-       "config-env-php-toolow": "Встановлено PHP $1.\nНатомість MediaWiki вимагає PHP $2 і вище.",
        "config-unicode-using-utf8": "Використовувати utf8_normalize.so Брайона Віббера для нормалізації Юнікоду.",
        "config-unicode-using-intl": "Використовувати [http://pecl.php.net/intl міжнародне розширення PECL] для нормалізації Юнікоду.",
        "config-unicode-pure-php-warning": "'''Увага''': [http://pecl.php.net/intl міжнародне розширення PECL] не може провести нормалізацію Юнікоду.\nЯкщо ваш сайт має високий трафік, вам варто почитати про [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations нормалізацію Юнікоду].",
@@ -63,7 +62,7 @@
        "config-no-db": "Не вдалося знайти відповідний драйвер бази даних! Вам необхідно встановити драйвер бази даних для PHP. Підтримуються такі типи баз даних: $1.\n\nЯкщо ви скомпілювали PHP самостійно, переналаштуйте його з включенням клієнта бази даних, наприклад за допомогою <code>./configure --with-mysqli</code>.\n\nЯкщо установлено PHP з пакетів Debian або Ubuntu, тоді ви також повинні встановити, наприклад, пакунок <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Увага''': у Вас встановлена версія SQLite $1, а це нижче, ніж мінімально необхідна версія $2. SQLite буде недоступним.",
        "config-no-fts3": "'''Увага''': SQLite зібраний без [//sqlite.org/fts3.html модуля FTS3], функції пошуку не будуть працювати у цій системі.",
-       "config-register-globals": "'''Увага: Опція PHP <code>[http://php.net/register_globals register_globals]</code> увімкнена.'''\n'''Вимкніть її, якщо це можливо.'''\nMediaWiki буде працювати, але Ваш сервер буде більш вразливим до потенційного проникнення зовні.",
+       "config-register-globals-error": "<strong>Помилка: Опція PHP <code>[http://php.net/register_globals register_globals]</code> увімкнена.\nЩоб продовжити це встановлення, її треба вимкнути.</strong>\nДив. довідку, як це зробити, на [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals].",
        "config-magic-quotes-runtime": "'''Проблема: Опція PHP [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] увімкнена!'''\nЦя опція призводить до непередбачуваного пошкодження даних.\nВи не можете встановити і використовувати MediaWiki, поки не буде вимкнено цю опцію.",
        "config-magic-quotes-sybase": "'''Проблема: Опція PHP [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] увімкнена!'''\nЦя опція призводить до непередбачуваного пошкодження даних.\nВи не можете встановити і використовувати MediaWiki, поки не буде вимкнено цю опцію.",
        "config-mbstring": "'''Проблема: Опція PHP [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] увімкнена!'''\nЦя опція призводить до непередбачуваного пошкодження даних.\nВи не можете встановити і використовувати MediaWiki, поки не буде вимкнено цю опцію.",
        "config-license-gfdl": "GNU Free Documentation License 1.3 або пізніша",
        "config-license-pd": "Суспільне надбання (Public Domain)",
        "config-license-cc-choose": "Виберіть одну з ліцензій Creative Commons",
-       "config-license-help": "Чимало загальнодоступних вікі публікують увесь свій вміст під [http://freedomdefined.org/Definition вільною ліцензією]. Це розвиває відчуття спільної власності і заохочує довготривалу участь. У загальному випадку для приватної чи корпоративної вікі у цьому немає необхідності.\n\nЯкщо Ви хочете мати змогу використовувати текст з Вікіпедії і дати Вікіпедії змогу використовувати текст, скопійований з Вашої вікі, вам необхідно обрати '''Creative Commons Attribution Share Alike'''.\n\nРаніше Вікіпедія використовувала GNU Free Documentation License.\nGFDL — допустима ліцензія, але у ній важко розібратися, а контент під GFDL важко використовувати повторно.",
+       "config-license-help": "Чимало загальнодоступних вікі публікують увесь свій вміст під [http://freedomdefined.org/Definition вільною ліцензією]. Це розвиває відчуття спільної власності і заохочує довготривалу участь. У загальному випадку для приватної чи корпоративної вікі у цьому немає необхідності.\n\nЯкщо Ви хочете мати змогу використовувати текст з Вікіпедії і дати Вікіпедії змогу використовувати текст, скопійований з Вашої вікі, вам необхідно обрати <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nРаніше Вікіпедія використовувала GNU Free Documentation License.\nGFDL — допустима ліцензія, але у ній важко розібратися, а контент під GFDL важко використовувати повторно.",
        "config-email-settings": "Налаштування електронної пошти",
        "config-enable-email": "Увімкнути вихідну електронну пошту",
        "config-enable-email-help": "Якщо Ви хочете, що електронна пошта працювала, необхідно виставити коректні [http://www.php.net/manual/en/mail.configuration.php налаштування пошти у PHP].\nЯкщо Вам не потрібні жодні можливості електронної пошти у вікі, можете тут їх відключити.",
index 9c2d37e..0b787a2 100644 (file)
@@ -20,7 +20,8 @@
                        "Kuailong",
                        "Zjzengdongyang",
                        "Mywood",
-                       "Impersonator 1"
+                       "Impersonator 1",
+                       "Fengchao"
                ]
        },
        "config-desc": "MediaWiki安装程序",
@@ -72,6 +73,7 @@
        "config-no-db": "找不到合适的数据库驱动!您需要为PHP安装数据库驱动。目前支持以下数据库:$1。如果您是自己编译的PHP,请重新配置他与数据库客户端将其启用,诸如,使用<code>./configure --with-mysqli</code>。如果您从Debian或Ubuntu包安装了PHP,之后您仍需要安装诸如<code>php5-mysql</code>包。",
        "config-outdated-sqlite": "'''警告''':您已安装SQLite $1,但是它的版本低于最低要求版本$2。因此您无法选择SQLite。",
        "config-no-fts3": "'''警告''':已编译的SQLite不包含[//sqlite.org/fts3.html FTS3模块],后台搜索功能将不可用。",
+       "config-register-globals-error": "<strong>错误:PHP<code>[http://php.net/register_globals register_globals]</code>选项被启用。必须禁用它才能继续安装。</strong>关于如何禁用,参见[https://www.mediawiki.org/wiki/register_globals mediawiki.org此页]。",
        "config-magic-quotes-runtime": "'''毁灭性错误:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]已启用!'''\n此选项会无法预测地破坏输入的数据,请将其禁用,否则您将不能安装或使用MediaWiki。",
        "config-magic-quotes-sybase": "'''毁灭性错误:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_sybase]已启用!'''\n此选项会无法预测地破坏输入的数据,请将其禁用,否则您将不能安装或使用MediaWiki。",
        "config-mbstring": "'''毁灭性错误:[http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]已启用!'''\n此选项会导致错误并不可预测地破坏数据,请将其禁用,否则您将不能安装或使用MediaWiki。",
@@ -82,6 +84,7 @@
        "config-memory-raised": "PHP的内存使用上限<code>memory_limit</code>为$1,自动提升到$2。",
        "config-memory-bad": "'''警告:'''PHP的内存使用上限<code>memory_limit</code>为$1。该设定可能过低,并导致安装失败!",
        "config-ctype": "'''毁灭性错误''':PHP必须有[http://www.php.net/manual/en/ctype.installation.php Ctype 扩展]来支持编译。",
+       "config-iconv": "<strong>致命错误:</strong>PHP必须编译支持[http://www.php.net/manual/en/iconv.installation.php iconv拓展]。",
        "config-json": "'''致命问题:''' PHP编译没有附带JSON支持。\n在安装MediaWiki前,你必须安装PHP JSON扩展或者[http://pecl.php.net/package/jsonc PECL jsonc]扩展。\n* PHP扩展已包含在Red Hat Enterprise Linux (CentOS) 5和6中,但必须在<code>/etc/php.ini</code>或<code>/etc/php.d/json.ini</code>中启用。\n* 部分在2013年5月后发行的Linux发行版省略了PHP扩展,而将PECL扩展打包成了<code>php5-json</code>或<code>php-pecl-jsonc</code>。",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache]已安装",
        "config-apc": "[http://www.php.net/apc APC]已安装",
        "config-profile-help": "如果您允许尽量多的人编写wiki,网站上的内容会更加丰富。在MediaWiki中,您可以轻松地审查最近更改,并轻易回退掉新手或破坏者造成的损害。\n\n然而,许多人觉得让MediaWiki存在多种角色将更加好用;同时,要说服所有人都愿以wiki的方式作贡献并非一件易事。因此,您可以有以下选择:\n\n'''{{int:config-profile-wiki}}'''允许包括未登录用户在内的所有人编辑。'''{{int:config-profile-no-anon}}'''的wiki需要额外的注册流程,这有可能会阻碍随意贡献者。\n\n'''{{int:config-profile-fishbowl}}'''模式只允许获批准的用户编辑,但对公众开放页面浏览(包括历史记录)。'''{{int:config-profile-private}}'''则只允许获批准的用户浏览、编辑页面。\n\n安装完成后,您还可以对用户权限进行更多、更复杂的配置,参见[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights 相关的使用手册]。",
        "config-license": "版权和许可证:",
        "config-license-none": "页脚无许可证",
-       "config-license-cc-by-sa": "ç\9f¥è¯\86å\85±äº«ç½²å\90\8d\9b¸å\90\8cæ\96¹å¼\8få\88\86享",
+       "config-license-cc-by-sa": "ç\9f¥è¯\86å\85±äº«ç½²å\90\8d\9b¸å\90\8cæ\96¹å¼\8få\85±享",
        "config-license-cc-by": "知识共享署名",
        "config-license-cc-by-nc-sa": "知识共享署名-非商业性使用-相同方式共享",
        "config-license-cc-0": "知识共享Zero(公有领域)",
        "config-license-gfdl": "GNU自由文档许可证1.3或更高版本",
        "config-license-pd": "公有领域",
        "config-license-cc-choose": "选择自定义的知识共享许可证",
-       "config-license-help": "许多公共wiki会以[http://freedomdefined.org/Definition 自由许可证]的方式释放出编者的所有贡献。这有助于构建社区的主人翁意识,并能鼓励长期贡献。对于非公共wiki或公司wiki,这并非必要条件。\n\n如果您希望使用来自维基百科的内容,并希望维基百科能接受复制自您的wiki的内容,您应当选择<strong>知识共享-署名-相同方式共享</strong>。\n\nGNU自由文档许可证是维基百科曾经使用过的许可证,并迄今有效。然而,该许可证难以理解,并会增加重用内容的难度。",
+       "config-license-help": "许多公共wiki将所有用户贡献置于[http://freedomdefined.org/Definition 自由许可证]之下。这有助于构建社区的主人翁意识,并鼓励长期贡献。对于非公共wiki或公司wiki,这并非必要条件。\n\n如果您希望使用来自维基百科的内容,并希望维基百科能接受复制自您的wiki的内容,您应当选择<strong>{{int:config-license-cc-by-sa}}</strong>\n\nGNU自由文档许可证是维基百科曾经使用过的许可证,并迄今有效。然而,该许可证难以理解,并会增加重用内容的难度。",
        "config-email-settings": "电子邮件设置",
        "config-enable-email": "启用出站电子邮件",
        "config-enable-email-help": "如果您希望使用电子邮件功能,请正确配置[http://www.php.net/manual/en/mail.configuration.php PHP的邮件设定]。如果您不需要任何电子邮件功能,请在此处禁用它。",
        "config-memcache-badport": "Memcached的端口号应该在$1到$2之间。",
        "config-extensions": "扩展程序",
        "config-extensions-help": "已在您的<code>./extensions</code>目录中发现下列扩展。\n\n您可能要对它们进行额外的配置,但您现在可以启用它们。",
+       "config-skins": "皮肤",
+       "config-skins-use-as-default": "使用此皮肤作为默认皮肤",
        "config-install-alreadydone": "'''警告:'''您似乎已经安装了MediaWiki,并试图重新安装它。请前往下一个页面。",
        "config-install-begin": "点击“{{int:config-continue}}”后,您将开始安装MediaWiki。如果您还想对配置作一些修改,请点击“{{int:config-back}}”。",
        "config-install-step-done": "完成",
index a6e87cf..b19201a 100644 (file)
@@ -10,7 +10,8 @@
                        "아라",
                        "Liuxinyu970226",
                        "Xiaomingyan",
-                       "Cwlin0416"
+                       "Cwlin0416",
+                       "S8321414"
                ]
        },
        "config-desc": "MediaWiki 安裝程式",
@@ -55,7 +56,6 @@
        "config-env-good": "環境檢查已完成。\n您可以安裝 MediaWiki。",
        "config-env-bad": "環境檢查已完成。\n您無法安裝 MediaWiki。",
        "config-env-php": "PHP $1 已安裝。",
-       "config-env-php-toolow": "已安裝 PHP $1。\n但 MediaWiki 需要 PHP $2 或更新的版本。",
        "config-unicode-using-utf8": "使用 Brion Vibber 的 utf8_normalize.so 做 Unicode 正規化。",
        "config-unicode-using-intl": "使用 [http://pecl.php.net/intl intl PECL 擴充套件] 做 Unicode 正規化。",
        "config-unicode-pure-php-warning": "<strong>警告:</strong> 無法使用 [http://pecl.php.net/intl intl PECL 擴充套件] 處理 Unicode 正規化,故回退使用純 PHP 實作的正規化程式,此方式處理速度較緩慢。\n\n如果您的網站瀏覽人次很高,您應先閱讀 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations/zh Unicode 正規化]。",
@@ -63,7 +63,7 @@
        "config-no-db": "找不到合適的資料庫驅動程式!您需要安裝 PHP 資料庫驅動程式。\n目前支援以下類型的資料庫: $1 。\n\n如果您是自行編譯 PHP,您必須重新設定並開啟資料庫客戶端,例:使用 <code>./configure --with-mysqli</code> 指令參數。\n如果您是使用 Debian 或 Ubuntu 的套件安裝,您則需要額外安裝,例:<code>php5-mysql</code> 套件。",
        "config-outdated-sqlite": "<strong>警告:</strong>您已安裝 SQLite $1,但是它的版本低於最低需求版本 $2。 因此您無法使用 SQLite。",
        "config-no-fts3": "<strong>警告:</strong> SQLite 編譯時未包含 [//sqlite.org/fts3.html FTS3 模組],後台搜尋功能將無法使用。",
-       "config-register-globals": "<strong>警告:PHP 的<code>[http://php.net/register_globals register_globals]</code>選項已開啟,如果可以請關閉該選項。</strong>\nMediaWiki 仍可正常執行,但您的伺服器將會有潛藏的安全性問題。",
+       "config-register-globals-error": "<strong>錯誤:PHP 的 <code>[http://php.net/register_globals register_globals]</code> 選項已開啟。\n要繼續安裝程序必須關閉該選項。</strong>\n請參考 [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] 以取得操作說明。",
        "config-magic-quotes-runtime": "<strong>嚴重:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] 選項被開啟!</strong>\n此選項會導致資料在無法預測的情況下損壞。\n您必須將開選項關閉方可繼續安裝 MediaWiki。",
        "config-magic-quotes-sybase": "<strong>嚴重:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] 選項被開啟!</strong>\n此選項會導致資料在無法預測的情況下損壞。\n您必須將開選項關閉方可繼續安裝 MediaWiki。",
        "config-mbstring": "<strong>嚴重:[http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] 選項被開啟!</strong>\n此選項會導致資料在無法預測的情況下損壞。\n您必須將開選項關閉方可繼續安裝 MediaWiki。",
        "config-license-gfdl": "GNU 自由文件授權條款 1.3 或更高版本",
        "config-license-pd": "公共領域",
        "config-license-cc-choose": "請選擇一個自訂的創作共用授權條款",
-       "config-license-help": "許多開放式 Wiki 會以 [http://freedomdefined.org/Definition 自由授權條款] 的方式釋放出編者的所有貢獻,這有助於構建社群的所有權,並且能鼓勵長期貢獻。對於封閉式的 Wiki 或公司 Wiki,則是非必要的。\n\n如果您希望使用來自維基百科(Wikipedia)的內容,並希望維基百科能接受您的 Wiki 內容,請應選擇 <strong>創作共用 Attribution Share Alike</strong> 授權條款。\n\n維基百科̽(Wikipedia)先前是使用 GNU 自由文件授權條款,\n但該授權條款的內容較難理解,因此較難再利用在該條款底下的內容。",
+       "config-license-help": "許多開放式 Wiki 會以 [http://freedomdefined.org/Definition 自由授權條款] 的方式釋放出編者的所有貢獻,這有助於構建社群的所有權,並且能鼓勵長期貢獻。對於封閉式的 Wiki 或公司 Wiki 則是非必要的。\n\n如果您希望使用來自維基百科(Wikipedia)的內容,並希望維基百科能接受您的 Wiki 內容,請應選擇 <strong>{{int:config-license-cc-by-sa}}</strong> 授權條款。\n\n維基百科̽(Wikipedia)先前是使用 GNU 自由文件授權條款,\n但該授權條款的內容較難理解,因此較難再利用在該條款底下的內容。",
        "config-email-settings": "E-mail 設定",
        "config-enable-email": "開啟外寄電子郵件",
        "config-enable-email-help": "如果您要使用電子郵件功能,請正確設定 [http://www.php.net/manual/en/mail.configuration.php PHP 的郵件設定]。\n如果您不需要使用電子郵件功能,請在此處關閉。",
        "config-memcache-badport": "Memcached 埠號應介於 $1 到 $2 之間。",
        "config-extensions": "擴充套件",
        "config-extensions-help": "已在您的 <code>./extensions</code> 目錄中發現下列擴充套件。\n\n這些擴充套件可能需要做額外的設定,但您可以現在先開啟功能。",
+       "config-skins": "外觀",
+       "config-skins-use-as-default": "使用這種外觀作為預設",
+       "config-skins-missing": "沒有發現任何外觀;MediaWiki在您安裝一些恰當的外觀前將會使用備用外觀。",
+       "config-skins-must-enable-some": "您必須至少選擇一個外觀以啟用。",
+       "config-skins-must-enable-default": "必須啟用選為預設的外觀。",
        "config-install-alreadydone": "<strong>警告:</strong>您已經安裝 MediaWiki,並且試圖重新安裝。\n請點繼續前往下一個頁面。",
        "config-install-begin": "請點選 \"{{int:config-continue}}\" 開始安裝 MediaWiki。\n若您還想要修改設定,請點選 \"{{int:config-back}}\"。",
        "config-install-step-done": "完成",
index 35b4f13..c11df93 100644 (file)
@@ -291,7 +291,7 @@ abstract class Job implements IJobSpecification {
         * @return string
         */
        public function toString() {
-               $truncFunc = function( $value ) {
+               $truncFunc = function ( $value ) {
                        $value = (string)$value;
                        if ( mb_strlen( $value ) > 1024 ) {
                                $value = "string(" . mb_strlen( $value ) . ")";
index df9ae39..e8e8e30 100644 (file)
@@ -50,6 +50,7 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
                $this->servers = isset( $params['redisServers'] )
                        ? $params['redisServers']
                        : array( $params['redisServer'] ); // b/c
+               $params['redisConfig']['serializer'] = 'none';
                $this->redisPool = RedisConnectionPool::singleton( $params['redisConfig'] );
        }
 
@@ -94,18 +95,16 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
                        return array();
                }
                try {
-                       $conn->multi( Redis::PIPELINE );
-                       $conn->exists( $this->getReadyQueueKey() );
-                       $conn->hGetAll( $this->getReadyQueueKey() );
-                       list( $exists, $map ) = $conn->exec();
+                       $map = $conn->hGetAll( $this->getReadyQueueKey() );
 
-                       if ( $exists ) { // cache hit
+                       if ( is_array( $map ) && isset( $map['_epoch'] ) ) {
+                               unset( $map['_epoch'] ); // ignore
                                $pendingDBs = array(); // (type => list of wikis)
                                foreach ( $map as $key => $time ) {
                                        list( $type, $wiki ) = $this->dencQueueName( $key );
                                        $pendingDBs[$type][] = $wiki;
                                }
-                       } else { // cache miss
+                       } else {
                                // Avoid duplicated effort
                                $rand = wfRandomString( 32 );
                                $conn->multi( Redis::MULTI );
@@ -120,7 +119,7 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
 
                                $conn->multi( Redis::PIPELINE );
                                $now = time();
-                               $map = array();
+                               $map = array( '_epoch' => time() ); // dummy key for empty Redis collections
                                foreach ( $pendingDBs as $type => $wikis ) {
                                        $conn->hSetNx( $this->getQueueTypesKey(), $type, 'enabled' );
                                        foreach ( $wikis as $wiki ) {
@@ -189,14 +188,14 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
         * @return string
         */
        private function getReadyQueueKey() {
-               return "jobqueue:aggregator:h-ready-queues:v1"; // global
+               return "jobqueue:aggregator:h-ready-queues:v2"; // global
        }
 
        /**
         * @return string
         */
        private function getQueueTypesKey() {
-               return "jobqueue:aggregator:h-queue-types:v1"; // global
+               return "jobqueue:aggregator:h-queue-types:v2"; // global
        }
 
        /**
index 4ce8070..4dc25ef 100644 (file)
@@ -355,9 +355,13 @@ class LogEventsList extends ContextSource {
                // Don't show useless checkbox to people who cannot hide log entries
                if ( $user->isAllowed( 'deletedhistory' ) ) {
                        $canHide = $user->isAllowed( 'deletelogentry' );
+                       $canViewSuppressedOnly = $user->isAllowed( 'viewsuppressed' ) &&
+                               !$user->isAllowed( 'suppressrevision' );
+                       $entryIsSuppressed = self::isDeleted( $row, LogPage::DELETED_RESTRICTED );
+                       $canViewThisSuppressedEntry = $canViewSuppressedOnly && $entryIsSuppressed;
                        if ( $row->log_deleted || $canHide ) {
                                // Show checkboxes instead of links.
-                               if ( $canHide && $this->flags & self::USE_REVDEL_CHECKBOXES ) {
+                               if ( $canHide && $this->flags & self::USE_REVDEL_CHECKBOXES && !$canViewThisSuppressedEntry ) {
                                        // If event was hidden from sysops
                                        if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) {
                                                $del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
@@ -380,8 +384,8 @@ class LogEventsList extends ContextSource {
                                                );
                                                $del = Linker::revDeleteLink(
                                                        $query,
-                                                       self::isDeleted( $row, LogPage::DELETED_RESTRICTED ),
-                                                       $canHide
+                                                       $entryIsSuppressed,
+                                                       $canHide && !$canViewThisSuppressedEntry
                                                );
                                        }
                                }
@@ -437,20 +441,19 @@ class LogEventsList extends ContextSource {
         */
        public static function userCanBitfield( $bitfield, $field, User $user = null ) {
                if ( $bitfield & $field ) {
-                       if ( $bitfield & LogPage::DELETED_RESTRICTED ) {
-                               $permission = 'suppressrevision';
-                       } else {
-                               $permission = 'deletedhistory';
-                       }
-                       wfDebug( "Checking for $permission due to $field match on $bitfield\n" );
                        if ( $user === null ) {
                                global $wgUser;
                                $user = $wgUser;
                        }
-
-                       return $user->isAllowed( $permission );
+                       if ( $bitfield & LogPage::DELETED_RESTRICTED ) {
+                               $permissions = array( 'suppressrevision', 'viewsuppressed' );
+                       } else {
+                               $permissions = array( 'deletedhistory' );
+                       }
+                       $permissionlist = implode( ', ', $permissions );
+                       wfDebug( "Checking for $permissionlist due to $field match on $bitfield\n" );
+                       return call_user_func_array( array( $user, 'isAllowedAny' ), $permissions );
                }
-
                return true;
        }
 
index 399c799..256934e 100644 (file)
@@ -175,7 +175,7 @@ class LogPager extends ReverseChronologicalPager {
                $user = $this->getUser();
                if ( !$user->isAllowed( 'deletedhistory' ) ) {
                        $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::DELETED_USER ) . ' = 0';
-               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+               } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                        $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::SUPPRESSED_USER ) .
                                ' != ' . LogPage::SUPPRESSED_USER;
                }
@@ -207,6 +207,18 @@ class LogPager extends ReverseChronologicalPager {
                $ns = $title->getNamespace();
                $db = $this->mDb;
 
+               $doUserRightsLogLike = false;
+               if ( $this->types == array( 'rights' ) ) {
+                       global $wgUserrightsInterwikiDelimiter;
+                       $parts = explode( $wgUserrightsInterwikiDelimiter, $title->getDBKey() );
+                       if ( count( $parts ) == 2 ) {
+                               list( $name, $database ) = array_map( 'trim', $parts );
+                               if ( strstr( $database, '*' ) ) { // Search for wildcard in database name
+                                       $doUserRightsLogLike = true;
+                               }
+                       }
+               }
+
                # Using the (log_namespace, log_title, log_timestamp) index with a
                # range scan (LIKE) on the first two parts, instead of simple equality,
                # makes it unusable for sorting.  Sorted retrieval using another index
@@ -218,12 +230,19 @@ class LogPager extends ReverseChronologicalPager {
                # use the page_time index.  That should have no more than a few hundred
                # log entries for even the busiest pages, so it can be safely scanned
                # in full to satisfy an impossible condition on user or similar.
-               if ( $pattern && !$wgMiserMode ) {
-                       $this->mConds['log_namespace'] = $ns;
-                       $this->mConds[] = 'log_title ' . $db->buildLike( $title->getDBkey(), $db->anyString() );
+               $this->mConds['log_namespace'] = $ns;
+               if ( $doUserRightsLogLike ) {
+                       $params = array( $name . $wgUserrightsInterwikiDelimiter );
+                       foreach ( explode( '*', $database ) as $databasepart ) {
+                               $params[] = $databasepart;
+                               $params[] = $db->anyString();
+                       }
+                       array_pop( $params ); // Get rid of the last % we added.
+                       $this->mConds[] = 'log_title' . $db->buildLike( $params );
+               } elseif ( $pattern && !$wgMiserMode ) {
+                       $this->mConds[] = 'log_title' . $db->buildLike( $title->getDBkey(), $db->anyString() );
                        $this->pattern = $pattern;
                } else {
-                       $this->mConds['log_namespace'] = $ns;
                        $this->mConds['log_title'] = $title->getDBkey();
                }
                // Paranoia: avoid brute force searches (bug 17342)
index 9a3e927..c0d9b71 100644 (file)
@@ -366,7 +366,7 @@ class BitmapHandler extends ImageHandler {
                        // background colour. After merging we reset the background
                        // to be white for the default background colour setting
                        // in the PNG image (which is used in old IE)
-                       $animation_post = array(
+                       $animation_pre = array(
                                '-background', 'transparent',
                                '-layers', 'merge',
                                '-background', 'white',
@@ -382,7 +382,7 @@ class BitmapHandler extends ImageHandler {
                                // bug 66323 - Greyscale images not rendered properly.
                                // So only take the "red" channel.
                                $channelOnly = array( '-channel', 'R', '-separate' );
-                               $animation_post = array_merge( $animation_post, $channelOnly );
+                               $animation_pre = array_merge( $animation_pre, $channelOnly );
                        }
                }
 
index 200d526..299252b 100644 (file)
@@ -188,7 +188,7 @@ class DjVuHandler extends ImageHandler {
                if ( $image->getSize() >= 1e7 ) { // 10MB
                        $work = new PoolCounterWorkViaCallback( 'GetLocalFileCopy', sha1( $image->getName() ),
                                array(
-                                       'doWork' => function() use ( $image ) {
+                                       'doWork' => function () use ( $image ) {
                                                return $image->getLocalRefPath();
                                        }
                                )
index b39e042..d630136 100644 (file)
@@ -470,8 +470,6 @@ class Exif {
                                        $charset = "";
                                        break;
                        }
-                       // This could possibly check to see if iconv is really installed
-                       // or if we're using the compatibility wrapper in globalFunctions.php
                        if ( $charset ) {
                                wfSuppressWarnings();
                                $val = iconv( $charset, 'UTF-8//IGNORE', $val );
index b303a01..9e69137 100644 (file)
@@ -165,7 +165,7 @@ class XCFHandler extends BitmapHandler {
                        // Try to be consistent with the names used by PNG files.
                        // Unclear from base media type if it has an alpha layer,
                        // so just assume that it does since it "potentially" could.
-                       switch( $header['base_type'] ) {
+                       switch ( $header['base_type'] ) {
                        case 0:
                                $metadata['colorType'] = 'truecolour-alpha';
                                break;
index bd4cf05..bd2bc4e 100644 (file)
@@ -81,20 +81,14 @@ function benchmarkTest( &$u, $filename, $desc ) {
        }
 }
 
-function benchTime() {
-       $st = explode( ' ', microtime() );
-
-       return (float)$st[0] + (float)$st[1];
-}
-
 function benchmarkForm( &$u, &$data, $form ) {
-       #$start = benchTime();
+       #$start = microtime( true );
        for ( $i = 0; $i < BENCH_CYCLES; $i++ ) {
-               $start = benchTime();
+               $start = microtime( true );
                $out = $u->$form( $data, UtfNormal::$utfCanonicalDecomp );
-               $deltas[] = ( benchTime() - $start );
+               $deltas[] = ( microtime( true ) - $start );
        }
-       #$delta = (benchTime() - $start) / BENCH_CYCLES;
+       #$delta = (microtime( true ) - $start) / BENCH_CYCLES;
        sort( $deltas );
        $delta = $deltas[0]; # Take shortest time
 
index 14abf93..f133e4d 100644 (file)
@@ -83,20 +83,14 @@ function benchmarkTest( &$u, $filename, $desc ) {
        }
 }
 
-function benchTime() {
-       $st = explode( ' ', microtime() );
-
-       return (float)$st[0] + (float)$st[1];
-}
-
 function benchmarkForm( &$u, &$data, $form ) {
-       #$start = benchTime();
+       #$start = microtime( true );
        for ( $i = 0; $i < BENCH_CYCLES; $i++ ) {
-               $start = benchTime();
+               $start = microtime( true );
                $out = $u->$form( $data, UtfNormal::$utfCanonicalDecomp );
-               $deltas[] = ( benchTime() - $start );
+               $deltas[] = ( microtime( true ) - $start );
        }
-       #$delta = (benchTime() - $start) / BENCH_CYCLES;
+       #$delta = (microtime( true ) - $start) / BENCH_CYCLES;
        sort( $deltas );
        $delta = $deltas[0]; # Take shortest time
 
index dca5f32..de3efd1 100644 (file)
@@ -46,10 +46,10 @@ abstract class BagOStuff {
        protected $lastError = self::ERR_NONE;
 
        /** Possible values for getLastError() */
-       const ERR_NONE        = 0; // no error
+       const ERR_NONE = 0; // no error
        const ERR_NO_RESPONSE = 1; // no response
        const ERR_UNREACHABLE = 2; // can't connect
-       const ERR_UNEXPECTED  = 3; // response gave some error
+       const ERR_UNEXPECTED = 3; // response gave some error
 
        /**
         * @param bool $bool
index 0c91dab..7328b74 100644 (file)
@@ -145,7 +145,7 @@ class SqlBagOStuff extends BagOStuff {
                        } else {
                                // We must keep a separate connection to MySQL in order to avoid deadlocks
                                // However, SQLite has an opposite behavior.
-                               // @TODO: get this trick to work on PostgreSQL too
+                               // @todo get this trick to work on PostgreSQL too
                                if ( wfGetDB( DB_MASTER )->getType() == 'mysql' ) {
                                        $lb = wfGetLBFactory()->newMainLB();
                                        $db = $lb->getConnection( DB_MASTER );
index 89ca241..9aff6ef 100644 (file)
@@ -363,7 +363,7 @@ class ImagePage extends Article {
                                                // it can be denoted as the current size being shown.
                                                // Vectorized images are "infinitely" big, so all thumb
                                                // sizes are shown.
-                                               if ( ( ($size[0] <= $width_orig && $size[1] <= $height_orig)
+                                               if ( ( ( $size[0] <= $width_orig && $size[1] <= $height_orig )
                                                                || $this->displayImg->isVectorized() )
                                                        && $size[0] != $width && $size[1] != $height
                                                ) {
index 31f0ed0..fc269d8 100644 (file)
@@ -2047,7 +2047,7 @@ class WikiPage implements Page, IDBAccessObject {
                wfRunHooks( 'PageContentSaveComplete', $hook_args );
 
                // Promote user to any groups they meet the criteria for
-               $dbw->onTransactionIdle( function() use ( $user ) {
+               $dbw->onTransactionIdle( function () use ( $user ) {
                        $user->addAutopromoteOnceGroups( 'onEdit' );
                } );
 
@@ -2887,7 +2887,7 @@ class WikiPage implements Page, IDBAccessObject {
                $logEntry->setComment( $reason );
                $logid = $logEntry->insert();
 
-               $dbw->onTransactionPreCommitOrIdle( function() use ( $dbw, $logEntry, $logid ) {
+               $dbw->onTransactionPreCommitOrIdle( function () use ( $dbw, $logEntry, $logid ) {
                        // Bug 56776: avoid deadlocks (especially from FileDeleteForm)
                        $logEntry->publish( $logid );
                } );
@@ -3347,7 +3347,7 @@ class WikiPage implements Page, IDBAccessObject {
 
                // Do this at the end of the commit to reduce lock wait timeouts
                $dbw->onTransactionPreCommitOrIdle(
-                       function() use ( $dbw, $that, $method, $added, $deleted ) {
+                       function () use ( $dbw, $that, $method, $added, $deleted ) {
                                $ns = $that->getTitle()->getNamespace();
 
                                $addFields = array( 'cat_pages = cat_pages + 1' );
index e5917b8..b37e977 100644 (file)
@@ -2002,10 +2002,12 @@ class Parser {
                        wfProfileOut( __METHOD__ . "-e1" );
                        wfProfileIn( __METHOD__ . "-misc" );
 
+                       $origLink = $m[1];
+
                        # Don't allow internal links to pages containing
                        # PROTO: where PROTO is a valid URL protocol; these
                        # should be external links.
-                       if ( preg_match( '/^(?i:' . $this->mUrlProtocols . ')/', $m[1] ) ) {
+                       if ( preg_match( '/^(?i:' . $this->mUrlProtocols . ')/', $origLink ) ) {
                                $s .= $prefix . '[[' . $line;
                                wfProfileOut( __METHOD__ . "-misc" );
                                continue;
@@ -2013,12 +2015,12 @@ class Parser {
 
                        # Make subpage if necessary
                        if ( $useSubpages ) {
-                               $link = $this->maybeDoSubpageLink( $m[1], $text );
+                               $link = $this->maybeDoSubpageLink( $origLink, $text );
                        } else {
-                               $link = $m[1];
+                               $link = $origLink;
                        }
 
-                       $noforce = ( substr( $m[1], 0, 1 ) !== ':' );
+                       $noforce = ( substr( $origLink, 0, 1 ) !== ':' );
                        if ( !$noforce ) {
                                # Strip off leading ':'
                                $link = substr( $link, 1 );
@@ -2097,11 +2099,13 @@ class Parser {
                        if ( $noforce ) {
                                # Interwikis
                                wfProfileIn( __METHOD__ . "-interwiki" );
+                               # The final condition here is due to bug 68085
                                if (
                                        $iw && $this->mOptions->getInterwikiMagic() && $nottalk && (
                                                Language::fetchLanguageName( $iw, null, 'mw' ) ||
                                                in_array( $iw, $wgExtraInterlanguageLinkPrefixes )
-                                       )
+                                       ) && substr_compare( $this->getTargetLanguage()->lc( ltrim( $origLink ) ),
+                                               $iw, 0, strlen( $iw ) ) === 0
                                ) {
                                        # Bug 24502: filter duplicates
                                        if ( !isset( $this->mLangLinkLanguages[$iw] ) ) {
index 2b37b0b..d609f61 100644 (file)
@@ -90,7 +90,7 @@ class PoolCounterRedis extends PoolCounter {
 
                $this->keySha1 = sha1( $this->key );
                $met = ini_get( 'max_execution_time' ); // usually 0 in CLI mode
-               $this->lockTTL = $met ? 2*$met : 3600;
+               $this->lockTTL = $met ? 2 * $met : 3600;
 
                if ( self::$active === null ) {
                        self::$active = array();
index 75f6966..cd1e859 100644 (file)
@@ -126,7 +126,7 @@ abstract class Profiler {
                        if ( is_array( $wgProfiler ) ) {
                                if ( !isset( $wgProfiler['class'] ) ) {
                                        $class = 'ProfilerStub';
-                               } elseif ( $wgProfiler['class'] === 'Profiler'  ) {
+                               } elseif ( $wgProfiler['class'] === 'Profiler' ) {
                                        $class = 'ProfilerStub'; // b/c; don't explode
                                } else {
                                        $class = $wgProfiler['class'];
@@ -397,7 +397,7 @@ class TransactionProfiler {
        public function recordFunctionCompletion( $method, $realtime ) {
                if ( !$this->mDBTrxHoldingLocks ) {
                        return; // short-circuit
-               // @TODO: hardcoded check is a tad janky (what about FOR UPDATE?)
+               // @todo hardcoded check is a tad janky (what about FOR UPDATE?)
                } elseif ( !preg_match( '/^query-m: (?!SELECT)/', $method )
                        && $realtime < $this->mDBLockThreshold
                ) {
diff --git a/includes/resourceloader/DerivativeResourceLoaderContext.php b/includes/resourceloader/DerivativeResourceLoaderContext.php
new file mode 100644 (file)
index 0000000..d114d7e
--- /dev/null
@@ -0,0 +1,202 @@
+<?php
+/**
+ * Derivative context for resource loader modules.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Kunal Mehta
+ */
+
+/**
+ * Allows changing specific properties of a context object,
+ * without changing the main one. Inspired by DerivativeContext.
+ *
+ * @since 1.24
+ */
+class DerivativeResourceLoaderContext extends ResourceLoaderContext {
+
+       /**
+        * @var ResourceLoaderContext
+        */
+       private $context;
+       protected $modules;
+       protected $language;
+       protected $direction;
+       protected $skin;
+       protected $user;
+       protected $debug;
+       protected $only;
+       protected $version;
+       protected $hash;
+       protected $raw;
+
+       public function __construct( ResourceLoaderContext $context ) {
+               $this->context = $context;
+       }
+
+       public function getModules() {
+               if ( !is_null( $this->modules ) ) {
+                       return $this->modules;
+               } else {
+                       return $this->context->getModules();
+               }
+       }
+
+       /**
+        * @param string[] $modules
+        */
+       public function setModules( array $modules ) {
+               $this->modules = $modules;
+       }
+
+       public function getLanguage() {
+               if ( !is_null( $this->language ) ) {
+                       return $this->language;
+               } else {
+                       return $this->context->getLanguage();
+               }
+       }
+
+       /**
+        * @param string $language
+        */
+       public function setLanguage( $language ) {
+               $this->language = $language;
+               $this->direction = null; // Invalidate direction since it might be based on language
+               $this->hash = null;
+       }
+
+       public function getDirection() {
+               if ( !is_null( $this->direction ) ) {
+                       return $this->direction;
+               } else {
+                       return $this->context->getDirection();
+               }
+       }
+
+       /**
+        * @param string $direction
+        */
+       public function setDirection( $direction ) {
+               $this->direction = $direction;
+               $this->hash = null;
+       }
+
+       public function getSkin() {
+               if ( !is_null( $this->skin ) ) {
+                       return $this->skin;
+               } else {
+                       return $this->context->getSkin();
+               }
+       }
+
+       /**
+        * @param string $skin
+        */
+       public function setSkin( $skin ) {
+               $this->skin = $skin;
+               $this->hash = null;
+       }
+
+       public function getUser() {
+               if ( !is_null( $this->user ) ) {
+                       return $this->user;
+               } else {
+                       return $this->context->getUser();
+               }
+       }
+
+       /**
+        * @param string $user
+        */
+       public function setUser( $user ) {
+               $this->user = $user;
+               $this->hash = null;
+       }
+
+       public function getDebug() {
+               if ( !is_null( $this->debug ) ) {
+                       return $this->debug;
+               } else {
+                       return $this->context->getDebug();
+               }
+       }
+
+       /**
+        * @param bool $debug
+        */
+       public function setDebug( $debug ) {
+               $this->debug = $debug;
+               $this->hash = null;
+       }
+
+       public function getOnly() {
+               if ( !is_null( $this->only ) ) {
+                       return $this->only;
+               } else {
+                       return $this->context->getOnly();
+               }
+       }
+
+       /**
+        * @param string $only
+        */
+       public function setOnly( $only ) {
+               $this->only = $only;
+               $this->hash = null;
+       }
+
+       public function getVersion() {
+               if ( !is_null( $this->version ) ) {
+                       return $this->version;
+               } else {
+                       return $this->context->getVersion();
+               }
+       }
+
+       /**
+        * @param string $version
+        */
+       public function setVersion( $version ) {
+               $this->version = $version;
+               $this->hash = null;
+       }
+
+       public function getRaw() {
+               if ( !is_null( $this->raw ) ) {
+                       return $this->raw;
+               } else {
+                       return $this->context->getRaw();
+               }
+       }
+
+       /**
+        * @param bool $raw
+        */
+       public function setRaw( $raw ) {
+               $this->raw = $raw;
+       }
+
+       public function getRequest() {
+               return $this->context->getRequest();
+       }
+
+       public function getResourceLoader() {
+               return $this->context->getResourceLoader();
+       }
+
+}
index 5ac874d..36e3a1b 100644 (file)
@@ -457,6 +457,22 @@ class ResourceLoader {
                return $this->sources;
        }
 
+       /**
+        * Get the URL to the load.php endpoint for the given
+        * ResourceLoader source
+        *
+        * @since 1.24
+        * @param string $source
+        * @throws MWException on an invalid $source name
+        * @return string
+        */
+       public function getLoadScript( $source ) {
+               if ( !isset( $this->sources[$source] ) ) {
+                       throw new MWException( "The $source source was never registered in ResourceLoader." );
+               }
+               return $this->sources[$source]['loadScript'];
+       }
+
        /**
         * Output a response to a load request, including the content-type header.
         *
@@ -1232,6 +1248,27 @@ class ResourceLoader {
 
        /**
         * Build a load.php URL
+        *
+        * @since 1.24
+        * @param string $source name of the ResourceLoader source
+        * @param ResourceLoaderContext $context
+        * @param array $extraQuery
+        * @return string URL to load.php. May be protocol-relative (if $wgLoadScript is procol-relative)
+        */
+       public function createLoaderURL( $source, ResourceLoaderContext $context,
+               $extraQuery = array()
+       ) {
+               $query = self::createLoaderQuery( $context, $extraQuery );
+               $script = $this->getLoadScript( $source );
+
+               // Prevent the IE6 extension check from being triggered (bug 28840)
+               // by appending a character that's invalid in Windows extensions ('*')
+               return wfExpandUrl( wfAppendQuery( $script, $query ) . '&*', PROTO_RELATIVE );
+       }
+
+       /**
+        * Build a load.php URL
+        * @deprecated since 1.24, use createLoaderURL instead
         * @param array $modules Array of module names (strings)
         * @param string $lang Language code
         * @param string $skin Skin name
@@ -1259,6 +1296,30 @@ class ResourceLoader {
                return wfExpandUrl( wfAppendQuery( $wgLoadScript, $query ) . '&*', PROTO_RELATIVE );
        }
 
+       /**
+        * Helper for createLoaderURL()
+        *
+        * @since 1.24
+        * @see makeLoaderQuery
+        * @param ResourceLoaderContext $context
+        * @param array $extraQuery
+        * @return array
+        */
+       public static function createLoaderQuery( ResourceLoaderContext $context, $extraQuery = array() ) {
+               return self::makeLoaderQuery(
+                       $context->getModules(),
+                       $context->getLanguage(),
+                       $context->getSkin(),
+                       $context->getUser(),
+                       $context->getVersion(),
+                       $context->getDebug(),
+                       $context->getOnly(),
+                       $context->getRequest()->getBool( 'printable' ),
+                       $context->getRequest()->getBool( 'handheld' ),
+                       $extraQuery
+               );
+       }
+
        /**
         * Build a query array (array representation of query string) for load.php. Helper
         * function for makeLoaderURL().
index 9013e2b..8994c0e 100644 (file)
@@ -208,21 +208,21 @@ class ResourceLoaderContext {
         * @return bool
         */
        public function shouldIncludeScripts() {
-               return is_null( $this->only ) || $this->only === 'scripts';
+               return is_null( $this->getOnly() ) || $this->getOnly() === 'scripts';
        }
 
        /**
         * @return bool
         */
        public function shouldIncludeStyles() {
-               return is_null( $this->only ) || $this->only === 'styles';
+               return is_null( $this->getOnly() ) || $this->getOnly() === 'styles';
        }
 
        /**
         * @return bool
         */
        public function shouldIncludeMessages() {
-               return is_null( $this->only ) || $this->only === 'messages';
+               return is_null( $this->getOnly() ) || $this->getOnly() === 'messages';
        }
 
        /**
@@ -231,8 +231,8 @@ class ResourceLoaderContext {
        public function getHash() {
                if ( !isset( $this->hash ) ) {
                        $this->hash = implode( '|', array(
-                               $this->getLanguage(), $this->getDirection(), $this->skin, $this->user,
-                               $this->debug, $this->only, $this->version
+                               $this->getLanguage(), $this->getDirection(), $this->getSkin(), $this->getUser(),
+                               $this->getDebug(), $this->getOnly(), $this->getVersion()
                        ) );
                }
                return $this->hash;
index f636105..00d245c 100644 (file)
@@ -144,17 +144,17 @@ abstract class ResourceLoaderModule {
         * @return array Array of URLs
         */
        public function getScriptURLsForDebug( ResourceLoaderContext $context ) {
-               $url = ResourceLoader::makeLoaderURL(
-                       array( $this->getName() ),
-                       $context->getLanguage(),
-                       $context->getSkin(),
-                       $context->getUser(),
-                       $context->getVersion(),
-                       true, // debug
-                       'scripts', // only
-                       $context->getRequest()->getBool( 'printable' ),
-                       $context->getRequest()->getBool( 'handheld' )
+               $resourceLoader = $context->getResourceLoader();
+               $derivative = new DerivativeResourceLoaderContext( $context );
+               $derivative->setModules( array( $this->getName() ) );
+               $derivative->setOnly( 'scripts' );
+               $derivative->setDebug( true );
+
+               $url = $resourceLoader->createLoaderURL(
+                       $this->getSource(),
+                       $derivative
                );
+
                return array( $url );
        }
 
@@ -191,17 +191,17 @@ abstract class ResourceLoaderModule {
         * @return array array( mediaType => array( URL1, URL2, ... ), ... )
         */
        public function getStyleURLsForDebug( ResourceLoaderContext $context ) {
-               $url = ResourceLoader::makeLoaderURL(
-                       array( $this->getName() ),
-                       $context->getLanguage(),
-                       $context->getSkin(),
-                       $context->getUser(),
-                       $context->getVersion(),
-                       true, // debug
-                       'styles', // only
-                       $context->getRequest()->getBool( 'printable' ),
-                       $context->getRequest()->getBool( 'handheld' )
+               $resourceLoader = $context->getResourceLoader();
+               $derivative = new DerivativeResourceLoaderContext( $context );
+               $derivative->setModules( array( $this->getName() ) );
+               $derivative->setOnly( 'styles' );
+               $derivative->setDebug( true );
+
+               $url = $resourceLoader->createLoaderURL(
+                       $this->getSource(),
+                       $derivative
                );
+
                return array( 'all' => array( $url ) );
        }
 
index 4854bcb..9711f04 100644 (file)
@@ -215,7 +215,7 @@ class MediaWikiSite extends Site {
                        // Filter the substructure down to what we actually are using.
                        $collectedHits = array_filter(
                                array_values( $externalData['query'][$listId] ),
-                               function( $a ) use ( $fieldId, $pageTitle ) {
+                               function ( $a ) use ( $fieldId, $pageTitle ) {
                                        return $a[$fieldId] === $pageTitle;
                                }
                        );
index e3559f5..fafb14c 100644 (file)
@@ -700,7 +700,7 @@ class Site implements Serializable {
 }
 
 /**
- * @deprecated
+ * @deprecated since 1.21
  */
 class SiteObject extends Site {
 }
index dfe4ec5..ecc38e2 100644 (file)
@@ -352,7 +352,7 @@ class SiteList extends GenericArrayObject {
 }
 
 /**
- * @deprecated
+ * @deprecated since 1.21
  */
 class SiteArray extends SiteList {
 }
index f382d98..6659407 100644 (file)
@@ -460,7 +460,7 @@ class SiteSQLStore implements SiteStore {
 }
 
 /**
- * @deprecated
+ * @deprecated since 1.21
  */
 class Sites extends SiteSQLStore {
 
@@ -468,7 +468,7 @@ class Sites extends SiteSQLStore {
         * Factory for creating new site objects.
         *
         * @since 1.21
-        * @deprecated
+        * @deprecated since 1.21
         *
         * @param string|bool $globalId
         *
@@ -485,7 +485,7 @@ class Sites extends SiteSQLStore {
        }
 
        /**
-        * @deprecated
+        * @deprecated since 1.21
         * @return SiteStore
         */
        public static function singleton() {
@@ -499,7 +499,7 @@ class Sites extends SiteSQLStore {
        }
 
        /**
-        * @deprecated
+        * @deprecated since 1.21
         * @param string $group
         * @return SiteList
         */
index ad1ee36..008200d 100644 (file)
@@ -348,10 +348,9 @@ abstract class ChangesListSpecialPage extends SpecialPage {
        abstract public function outputChangesList( $rows, $opts );
 
        /**
-        * Return the text to be displayed above the changes
+        * Set the text to be displayed above the changes
         *
         * @param FormOptions $opts
-        * @return string XHTML
         */
        public function doHeader( $opts ) {
                $this->setTopText( $opts );
index 9ff96ab..07b6b4e 100644 (file)
@@ -160,6 +160,7 @@ class SpecialPageFactory {
                'Emailuser' => 'SpecialEmailUser',
                'Movepage' => 'MovePageForm',
                'Mycontributions' => 'SpecialMycontributions',
+               'MyLanguage' => 'SpecialMyLanguage',
                'Mypage' => 'SpecialMypage',
                'Mytalk' => 'SpecialMytalk',
                'Myuploads' => 'SpecialMyuploads',
index e25955f..6db9e5f 100644 (file)
@@ -295,6 +295,7 @@ class SpecialActiveUsers extends SpecialPage {
                        'qci_timestamp',
                        array( 'qci_type' => 'activeusers' )
                );
+
                if ( !wfReadOnly() ) {
                        if ( !$cTime || ( time() - wfTimestamp( TS_UNIX, $cTime ) ) > $period ) {
                                $dbw = wfGetDB( DB_MASTER );
@@ -303,7 +304,7 @@ class SpecialActiveUsers extends SpecialPage {
                                } else {
                                        $window = $period * 2;
                                }
-                               self::doQueryCacheUpdate( $dbw, $window );
+                               $cTime = self::doQueryCacheUpdate( $dbw, $window ) ?: $cTime;
                        }
                }
 
@@ -326,7 +327,7 @@ class SpecialActiveUsers extends SpecialPage {
         *
         * @param DatabaseBase $dbw
         * @param int $window Maximum time range of new data to scan (in seconds)
-        * @return bool Success
+        * @return int|bool UNIX timestamp the cache is now up-to-date as of (false on error)
         */
        protected static function doQueryCacheUpdate( DatabaseBase $dbw, $window ) {
                global $wgActiveUserDays;
@@ -426,6 +427,6 @@ class SpecialActiveUsers extends SpecialPage {
 
                $dbw->unlock( $lockKey, __METHOD__ );
 
-               return true;
+               return $eTimestamp;
        }
 }
index dcd2443..ba5c7ec 100644 (file)
@@ -260,7 +260,7 @@ class SpecialChangePassword extends FormSpecialPage {
                        );
                }
 
-               // @TODO Make these separate messages, since the message is written for both cases
+               // @todo Make these separate messages, since the message is written for both cases
                if ( !$user->checkTemporaryPassword( $oldpass ) && !$user->checkPassword( $oldpass ) ) {
                        wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'wrongpassword' ) );
                        throw new PasswordError( $this->msg( 'resetpass-wrong-oldpass' )->text() );
index 05bbb5a..251ac51 100644 (file)
@@ -206,7 +206,7 @@ class SpecialContributions extends IncludableSpecialPage {
                                $output = $pager->getBody();
                                if ( !$this->including() ) {
                                        $output = '<p>' . $pager->getNavigationBar() . '</p>' .
-                                               $output.
+                                               $output .
                                                '<p>' . $pager->getNavigationBar() . '</p>';
                                }
                                $out->addHTML( $output );
@@ -790,7 +790,7 @@ class ContribsPager extends ReverseChronologicalPager {
                // Paranoia: avoid brute force searches (bug 17342)
                if ( !$user->isAllowed( 'deletedhistory' ) ) {
                        $conds[] = $this->mDb->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0';
-               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+               } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                        $conds[] = $this->mDb->bitAnd( 'rev_deleted', Revision::SUPPRESSED_USER ) .
                                ' != ' . Revision::SUPPRESSED_USER;
                }
index 4df5b2b..b69eb63 100644 (file)
@@ -62,7 +62,7 @@ class DeletedContribsPager extends IndexPager {
                // Paranoia: avoid brute force searches (bug 17792)
                if ( !$user->isAllowed( 'deletedhistory' ) ) {
                        $conds[] = $this->mDb->bitAnd( 'ar_deleted', Revision::DELETED_USER ) . ' = 0';
-               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+               } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                        $conds[] = $this->mDb->bitAnd( 'ar_deleted', Revision::SUPPRESSED_USER ) .
                                ' != ' . Revision::SUPPRESSED_USER;
                }
index 369f11f..355726a 100644 (file)
@@ -244,7 +244,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                $talk = $this->msg( 'talkpagelinktext' )->escaped();
                // Do a batch existence check
                $batch = new LinkBatch();
-               if (count($titles) >= 100) {
+               if ( count( $titles ) >= 100 ) {
                        $output = wfMessage( 'watchlistedit-too-many' )->parse();
                        return;
                }
index 367adef..53dddc7 100644 (file)
@@ -193,7 +193,7 @@ class UsersPager extends AlphabeticPager {
                $edits = '';
                global $wgEdititis;
                if ( !$this->including && $wgEdititis ) {
-                       // @fixme i18n issue: Hardcoded square brackets.
+                       // @todo fixme i18n issue: Hardcoded square brackets.
                        $edits = ' [' .
                                $this->msg( 'usereditcount' )->numParams( $row->edits )->escaped() .
                                ']';
@@ -399,6 +399,18 @@ class SpecialListUsers extends IncludableSpecialPage {
                $this->getOutput()->addHTML( $s );
        }
 
+       /**
+        * Return an array of subpages beginning with $search that this special page will accept.
+        *
+        * @param string $search Prefix to search for
+        * @param integer $limit Maximum number of results to return
+        * @return string[] Matching subpages
+        */
+       public function prefixSearchSubpages( $search, $limit = 10 ) {
+               $subpages = User::getAllGroups();
+               return self::prefixSearchArray( $search, $limit, $subpages );
+       }
+
        protected function getGroupName() {
                return 'users';
        }
index eea1336..9347af7 100644 (file)
@@ -452,6 +452,7 @@ class SpecialMergeHistory extends SpecialPage {
                                $dbw->insert( 'pagelinks',
                                        array(
                                                'pl_from' => $this->mDestID,
+                                               'pl_from_namespace' => $destTitle->getNamespace(),
                                                'pl_namespace' => $destTitle->getNamespace(),
                                                'pl_title' => $destTitle->getDBkey() ),
                                        __METHOD__
@@ -476,7 +477,7 @@ class SpecialMergeHistory extends SpecialPage {
                        array( $destTitle->getPrefixedText(), $timestampLimit ), $this->getUser()
                );
 
-               # @TODO: message should use redirect=no
+               # @todo message should use redirect=no
                $this->getOutput()->addWikiMsg( 'mergehistory-success',
                        $targetTitle->getPrefixedText(), $destTitle->getPrefixedText(), $count );
 
diff --git a/includes/specials/SpecialMyLanguage.php b/includes/specials/SpecialMyLanguage.php
new file mode 100644 (file)
index 0000000..01bf0ec
--- /dev/null
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Implements Special:MyLanguage
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Niklas Laxström
+ * @author Siebrand Mazeland
+ * @copyright Copyright © 2010-2013 Niklas Laxström, Siebrand Mazeland
+ */
+
+/**
+ * Unlisted special page just to redirect the user to the translated version of
+ * a page, if it exists.
+ *
+ * Usage: [[Special:MyLanguage/Page name|link text]]
+ *
+ * @since 1.24
+ * @ingroup SpecialPage
+ */
+class SpecialMyLanguage extends RedirectSpecialArticle {
+       public function __construct() {
+               parent::__construct( 'MyLanguage' );
+       }
+
+       /**
+        * If the special page is a redirect, then get the Title object it redirects to.
+        * False otherwise.
+        *
+        * @param string $par Subpage string
+        * @return Title|bool
+        */
+       public function getRedirect( $par ) {
+               $title = $this->findTitle( $par );
+               // Go to the main page if given invalid title.
+               if ( !$title ) {
+                       $title = Title::newMainPage();
+               }
+               return $title;
+       }
+
+       /**
+        * Assuming the user's interface language is fi. Given input Page, it
+        * returns Page/fi if it exists, otherwise Page. Given input Page/de,
+        * it returns Page/fi if it exists, otherwise Page/de if it exists,
+        * otherwise Page.
+        *
+        * @param $par
+        * @return Title|null
+        */
+       public function findTitle( $par ) {
+               global $wgLanguageCode;
+               // base = title without language code suffix
+               // provided = the title as it was given
+               $base = $provided = Title::newFromText( $par );
+
+               if ( $base && strpos( $par, '/' ) !== false ) {
+                       $pos = strrpos( $par, '/' );
+                       $basepage = substr( $par, 0, $pos );
+                       $code = substr( $par, $pos + 1 );
+                       if ( Language::isKnownLanguageTag( $code ) ) {
+                               $base = Title::newFromText( $basepage );
+                       }
+               }
+
+               if ( !$base ) {
+                       return null;
+               }
+
+               $uiCode = $this->getLanguage()->getCode();
+               $proposed = $base->getSubpage( $uiCode );
+               if ( $uiCode !== $wgLanguageCode && $proposed && $proposed->exists() ) {
+                       return $proposed;
+               } elseif ( $provided && $provided->exists() ) {
+                       return $provided;
+               } else {
+                       return $base;
+               }
+       }
+}
index a432f10..24eca07 100644 (file)
@@ -107,7 +107,7 @@ class SpecialPageLanguage extends FormSpecialPage {
                // Returns the default since the page is not loaded from DB
                $defLang = $title->getPageLanguage()->getCode();
 
-               $pageId =  $title->getArticleID();
+               $pageId = $title->getArticleID();
 
                // Check if article exists
                if ( !$pageId ) {
index f770307..aa8ed82 100644 (file)
@@ -350,10 +350,9 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
        }
 
        /**
-        * Return the text to be displayed above the changes
+        * Set the text to be displayed above the changes
         *
         * @param FormOptions $opts
-        * @return string XHTML
         */
        public function doHeader( $opts ) {
                global $wgScript;
index b90026a..9cec847 100644 (file)
@@ -161,7 +161,14 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        throw new ErrorPageError( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
                }
                $this->typeLabels = self::$UILabels[$this->typeName];
+               $list = $this->getList();
+               $list->reset();
+               $bitfield = $list->current()->getBits();
                $this->mIsAllowed = $user->isAllowed( RevisionDeleter::getRestriction( $this->typeName ) );
+               $canViewSuppressedOnly = $this->getUser()->isAllowed( 'viewsuppressed' ) &&
+                       !$this->getUser()->isAllowed( 'suppressrevision' );
+               $pageIsSuppressed = $bitfield & Revision::DELETED_RESTRICTED;
+               $this->mIsAllowed = $this->mIsAllowed && !( $canViewSuppressedOnly && $pageIsSuppressed );
 
                # Allow the list type to adjust the passed target
                $this->targetObj = RevisionDeleter::suggestTarget(
@@ -444,12 +451,8 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                                Html::hidden( 'target', $this->targetObj->getPrefixedText() ) .
                                Html::hidden( 'type', $this->typeName ) .
                                Html::hidden( 'ids', implode( ',', $this->ids ) ) .
-                               Xml::closeElement( 'fieldset' ) . "\n";
-               } else {
-                       $out = '';
-               }
-               if ( $this->mIsAllowed ) {
-                       $out .= Xml::closeElement( 'form' ) . "\n";
+                               Xml::closeElement( 'fieldset' ) . "\n" .
+                               Xml::closeElement( 'form' ) . "\n";
                        // Show link to edit the dropdown reasons
                        if ( $this->getUser()->isAllowed( 'editinterface' ) ) {
                                $title = Title::makeTitle( NS_MEDIAWIKI, 'Revdelete-reason-dropdown' );
@@ -461,6 +464,8 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                                );
                                $out .= Xml::tags( 'p', array( 'class' => 'mw-revdel-editreasons' ), $link ) . "\n";
                        }
+               } else {
+                       $out = '';
                }
                $this->getOutput()->addHTML( $out );
        }
index bea65ba..73bdbd6 100644 (file)
@@ -59,7 +59,7 @@ class SpecialTrackingCategories extends SpecialPage {
                        </tr></thead>"
                );
 
-               foreach( $wgTrackingCategories as $catMsg ) {
+               foreach ( $wgTrackingCategories as $catMsg ) {
                        /*
                         * Check if the tracking category varies by namespace
                         * Otherwise only pages in the current namespace will be displayed
index ea526de..8269b01 100644 (file)
@@ -111,7 +111,7 @@ class WantedFilesPage extends WantedQueryPage {
                                'img1.img_name' => null,
                                // We also need to exclude file redirects
                                'img2.img_name' => null,
-                        ),
+                       ),
                        'options' => array( 'GROUP BY' => 'il_to' ),
                        'join_conds' => array(
                                'img1' => array( 'LEFT JOIN',
index 21a1f9b..94de5ce 100644 (file)
@@ -258,7 +258,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                // the necessary rights.
                if ( !$user->isAllowed( 'deletedhistory' ) ) {
                        $bitmask = LogPage::DELETED_ACTION;
-               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+               } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
                        $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
                } else {
                        $bitmask = 0;
@@ -388,10 +388,9 @@ class SpecialWatchlist extends ChangesListSpecialPage {
        }
 
        /**
-        * Return the text to be displayed above the changes
+        * Set the text to be displayed above the changes
         *
         * @param FormOptions $opts
-        * @return string XHTML
         */
        public function doHeader( $opts ) {
                $user = $this->getUser();
index d980f79..694bc83 100644 (file)
@@ -101,10 +101,10 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
         * @param int $back Display from this article ID at backwards scrolling (default: 0)
         */
        function showIndirectLinks( $level, $target, $limit, $from = 0, $back = 0 ) {
-               global $wgMaxRedirectLinksRetrieved;
+               global $wgMaxRedirectLinksRetrieved, $wgUseLinkNamespaceDBFields;
+
                $out = $this->getOutput();
                $dbr = wfGetDB( DB_SLAVE );
-               $options = array();
 
                $hidelinks = $this->opts->getValue( 'hidelinks' );
                $hideredirs = $this->opts->getValue( 'hideredirs' );
@@ -113,77 +113,85 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
 
                $fetchlinks = ( !$hidelinks || !$hideredirs );
 
-               // Make the query
-               $plConds = array(
-                       'page_id=pl_from',
+               // Build query conds in concert for all three tables...
+               $conds['pagelinks'] = array(
                        'pl_namespace' => $target->getNamespace(),
                        'pl_title' => $target->getDBkey(),
                );
-               if ( $hideredirs ) {
-                       $plConds['rd_from'] = null;
-               } elseif ( $hidelinks ) {
-                       $plConds[] = 'rd_from is NOT NULL';
-               }
-
-               $tlConds = array(
-                       'page_id=tl_from',
+               $conds['templatelinks'] = array(
                        'tl_namespace' => $target->getNamespace(),
                        'tl_title' => $target->getDBkey(),
                );
-
-               $ilConds = array(
-                       'page_id=il_from',
+               $conds['imagelinks'] = array(
                        'il_to' => $target->getDBkey(),
                );
 
                $namespace = $this->opts->getValue( 'namespace' );
                if ( is_int( $namespace ) ) {
-                       $plConds['page_namespace'] = $namespace;
-                       $tlConds['page_namespace'] = $namespace;
-                       $ilConds['page_namespace'] = $namespace;
+                       if ( $wgUseLinkNamespaceDBFields ) {
+                               $conds['pagelinks']['pl_from_namespace'] = $namespace;
+                               $conds['templatelinks']['tl_from_namespace'] = $namespace;
+                               $conds['imagelinks']['il_from_namespace'] = $namespace;
+                       } else {
+                               $conds['pagelinks']['page_namespace'] = $namespace;
+                               $conds['templatelinks']['page_namespace'] = $namespace;
+                               $conds['imagelinks']['page_namespace'] = $namespace;
+                       }
                }
 
                if ( $from ) {
-                       $tlConds[] = "tl_from >= $from";
-                       $plConds[] = "pl_from >= $from";
-                       $ilConds[] = "il_from >= $from";
+                       $conds['templatelinks'][] = "tl_from >= $from";
+                       $conds['pagelinks'][] = "pl_from >= $from";
+                       $conds['imagelinks'][] = "il_from >= $from";
                }
 
-               // Read an extra row as an at-end check
-               $queryLimit = $limit + 1;
-
-               $options['LIMIT'] = $queryLimit;
-               $fields = array( 'page_id', 'page_namespace', 'page_title', 'rd_from' );
+               if ( $hideredirs ) {
+                       $conds['pagelinks']['rd_from'] = null;
+               } elseif ( $hidelinks ) {
+                       $conds['pagelinks'][] = 'rd_from is NOT NULL';
+               }
 
-               $joinConds = array( 'redirect' => array( 'LEFT JOIN', array(
-                       'rd_from = page_id',
-                       'rd_namespace' => $target->getNamespace(),
-                       'rd_title' => $target->getDBkey(),
-                       'rd_interwiki = ' . $dbr->addQuotes( '' ) . ' OR rd_interwiki IS NULL'
-               ) ) );
+               $queryFunc = function( $dbr, $table, $fromCol ) use ( $conds, $target, $limit ) {
+                       global $wgUseLinkNamespaceDBFields;
+                       // Read an extra row as an at-end check
+                       $queryLimit = $limit + 1;
+                       $on = array(
+                               "rd_from = $fromCol",
+                               'rd_title' => $target->getDBkey(),
+                               'rd_interwiki = ' . $dbr->addQuotes( '' ) . ' OR rd_interwiki IS NULL'
+                       );
+                       if ( $wgUseLinkNamespaceDBFields ) { // migration check
+                               $on['rd_namespace'] = $target->getNamespace();
+                       }
+                       // Inner LIMIT is 2X in case of stale backlinks with no page
+                       $subQuery = $dbr->selectSqlText(
+                               array( $table, 'redirect' ),
+                               array( $fromCol, 'rd_from' ),
+                               $conds[$table],
+                               __CLASS__ . '::showIndirectLinks',
+                               array( 'ORDER BY' => $fromCol, 'LIMIT' => 2 * $queryLimit ),
+                               array( 'redirect' => array( 'LEFT JOIN', $on ) )
+                       );
+                       return $dbr->select(
+                               array( 'page', 'temp_backlink_range' => "($subQuery)" ),
+                               array( 'page_id', 'page_namespace', 'page_title', 'rd_from' ),
+                               array(),
+                               __CLASS__ . '::showIndirectLinks',
+                               array( 'ORDER BY' => 'page_id', 'LIMIT' => $queryLimit ),
+                               array( 'page' => array( 'INNER JOIN', "$fromCol = page_id" ) )
+                       );
+               };
 
                if ( $fetchlinks ) {
-                       $options['ORDER BY'] = 'pl_from';
-                       $plRes = $dbr->select( array( 'pagelinks', 'page', 'redirect' ), $fields,
-                               $plConds, __METHOD__, $options,
-                               $joinConds
-                       );
+                       $plRes = $queryFunc( $dbr, 'pagelinks', 'pl_from' );
                }
 
                if ( !$hidetrans ) {
-                       $options['ORDER BY'] = 'tl_from';
-                       $tlRes = $dbr->select( array( 'templatelinks', 'page', 'redirect' ), $fields,
-                               $tlConds, __METHOD__, $options,
-                               $joinConds
-                       );
+                       $tlRes = $queryFunc( $dbr, 'templatelinks', 'tl_from' );
                }
 
                if ( !$hideimages ) {
-                       $options['ORDER BY'] = 'il_from';
-                       $ilRes = $dbr->select( array( 'imagelinks', 'page', 'redirect' ), $fields,
-                               $ilConds, __METHOD__, $options,
-                               $joinConds
-                       );
+                       $ilRes = $queryFunc( $dbr, 'imagelinks', 'il_from' );
                }
 
                if ( ( !$fetchlinks || !$plRes->numRows() )
index b16d4a4..b97e2ad 100644 (file)
@@ -34,7 +34,7 @@ abstract class CdbReader {
        /**
         * Open a file and return a subclass instance
         *
-        * @param $fileName string
+        * @param string $fileName
         *
         * @return CdbReader
         */
@@ -64,7 +64,7 @@ abstract class CdbReader {
        /**
         * Create the object and open the file
         *
-        * @param $fileName string
+        * @param string $fileName
         */
        abstract public function __construct( $fileName );
 
@@ -76,7 +76,7 @@ abstract class CdbReader {
        /**
         * Get a value with a given key. Only string values are supported.
         *
-        * @param $key string
+        * @param string $key
         */
        abstract public function get( $key );
 }
@@ -107,7 +107,7 @@ abstract class CdbWriter {
         * Open a writer and return a subclass instance.
         * The user must have write access to the directory, for temporary file creation.
         *
-        * @param $fileName string
+        * @param string $fileName
         *
         * @return CdbWriterDBA|CdbWriterPHP
         */
@@ -120,14 +120,14 @@ abstract class CdbWriter {
        /**
         * Create the object and open the file
         *
-        * @param $fileName string
+        * @param string $fileName
         */
        abstract public function __construct( $fileName );
 
        /**
         * Set a key to a given value. The value will be converted to string.
-        * @param $key string
-        * @param $value string
+        * @param string $key
+        * @param string $value
         */
        abstract public function set( $key, $value );
 
index baba580..19d747a 100644 (file)
@@ -32,8 +32,8 @@ class CdbFunctions {
         * Take a modulo of a signed integer as if it were an unsigned integer.
         * $b must be less than 0x40000000 and greater than 0
         *
-        * @param $a
-        * @param $b
+        * @param int $a
+        * @param int $b
         *
         * @return int
         */
@@ -49,8 +49,8 @@ class CdbFunctions {
 
        /**
         * Shift a signed integer right as if it were unsigned
-        * @param $a
-        * @param $b
+        * @param int $a
+        * @param int $b
         * @return int
         */
        public static function unsignedShiftRight( $a, $b ) {
@@ -67,7 +67,7 @@ class CdbFunctions {
        /**
         * The CDB hash function.
         *
-        * @param $s string
+        * @param string $s
         *
         * @return int
         */
@@ -125,7 +125,7 @@ class CdbReaderPHP extends CdbReader {
        protected $dlen;
 
        /**
-        * @param $fileName string
+        * @param string $fileName
         * @throws CdbException
         */
        public function __construct( $fileName ) {
@@ -145,7 +145,7 @@ class CdbReaderPHP extends CdbReader {
        }
 
        /**
-        * @param $key
+        * @param mixed $key
         * @return bool|string
         */
        public function get( $key ) {
@@ -158,8 +158,8 @@ class CdbReaderPHP extends CdbReader {
        }
 
        /**
-        * @param $key
-        * @param $pos
+        * @param string $key
+        * @param int $pos
         * @return bool
         */
        protected function match( $key, $pos ) {
@@ -174,8 +174,8 @@ class CdbReaderPHP extends CdbReader {
 
        /**
         * @throws CdbException
-        * @param $length
-        * @param $pos
+        * @param int $length
+        * @param int $pos
         * @return string
         */
        protected function read( $length, $pos ) {
@@ -200,7 +200,7 @@ class CdbReaderPHP extends CdbReader {
 
        /**
         * Unpack an unsigned integer and throw an exception if it needs more than 31 bits
-        * @param $s
+        * @param string $s
         * @throws CdbException
         * @return mixed
         */
@@ -216,7 +216,7 @@ class CdbReaderPHP extends CdbReader {
 
        /**
         * Unpack a 32-bit signed integer
-        * @param $s
+        * @param string $s
         * @return int
         */
        protected function unpackSigned( $s ) {
@@ -226,7 +226,7 @@ class CdbReaderPHP extends CdbReader {
        }
 
        /**
-        * @param $key
+        * @param string $key
         * @return bool
         */
        protected function findNext( $key ) {
@@ -274,7 +274,7 @@ class CdbReaderPHP extends CdbReader {
        }
 
        /**
-        * @param $key
+        * @param mixed $key
         * @return bool
         */
        protected function find( $key ) {
@@ -295,7 +295,7 @@ class CdbWriterPHP extends CdbWriter {
        protected $pos;
 
        /**
-        * @param $fileName string
+        * @param string $fileName
         */
        public function __construct( $fileName ) {
                $this->realFileName = $fileName;
@@ -347,7 +347,7 @@ class CdbWriterPHP extends CdbWriter {
 
        /**
         * @throws CdbException
-        * @param $buf
+        * @param string $buf
         */
        protected function write( $buf ) {
                $len = fwrite( $this->handle, $buf );
@@ -358,7 +358,7 @@ class CdbWriterPHP extends CdbWriter {
 
        /**
         * @throws CdbException
-        * @param $len
+        * @param int $len
         */
        protected function posplus( $len ) {
                $newpos = $this->pos + $len;
@@ -370,9 +370,9 @@ class CdbWriterPHP extends CdbWriter {
        }
 
        /**
-        * @param $keylen
-        * @param $datalen
-        * @param $h
+        * @param int $keylen
+        * @param int $datalen
+        * @param int $h
         */
        protected function addend( $keylen, $datalen, $h ) {
                $this->hplist[] = array(
@@ -388,8 +388,8 @@ class CdbWriterPHP extends CdbWriter {
 
        /**
         * @throws CdbException
-        * @param $keylen
-        * @param $datalen
+        * @param int $keylen
+        * @param int $datalen
         */
        protected function addbegin( $keylen, $datalen ) {
                if ( $keylen > 0x7fffffff ) {
@@ -481,7 +481,7 @@ class CdbWriterPHP extends CdbWriter {
        /**
         * Clean up the temp file and throw an exception
         *
-        * @param $msg string
+        * @param string $msg
         * @throws CdbException
         */
        protected function throwException( $msg ) {
index e4e1cfd..0e2db8c 100644 (file)
@@ -73,8 +73,8 @@ class IP {
         * SIIT IPv4-translated addresses are rejected.
         * Note: canonicalize() tries to convert translated addresses to IPv4.
         *
-        * @param string $ip possible IP address
-        * @return Boolean
+        * @param string $ip Possible IP address
+        * @return bool
         */
        public static function isIPAddress( $ip ) {
                return (bool)preg_match( '/^' . IP_ADDRESS_STRING . '$/', $ip );
@@ -84,8 +84,8 @@ class IP {
         * Given a string, determine if it as valid IP in IPv6 only.
         * Note: Unlike isValid(), this looks for networks too.
         *
-        * @param string $ip possible IP address
-        * @return Boolean
+        * @param string $ip Possible IP address
+        * @return bool
         */
        public static function isIPv6( $ip ) {
                return (bool)preg_match( '/^' . RE_IPV6_ADD . '(?:\/' . RE_IPV6_PREFIX . ')?$/', $ip );
@@ -95,8 +95,8 @@ class IP {
         * Given a string, determine if it as valid IP in IPv4 only.
         * Note: Unlike isValid(), this looks for networks too.
         *
-        * @param string $ip possible IP address
-        * @return Boolean
+        * @param string $ip Possible IP address
+        * @return bool
         */
        public static function isIPv4( $ip ) {
                return (bool)preg_match( '/^' . RE_IP_ADD . '(?:\/' . RE_IP_PREFIX . ')?$/', $ip );
@@ -107,8 +107,8 @@ class IP {
         * SIIT IPv4-translated addresses are rejected.
         * Note: canonicalize() tries to convert translated addresses to IPv4.
         *
-        * @param $ip String
-        * @return Boolean: True if it is valid.
+        * @param string $ip
+        * @return bool True if it is valid
         */
        public static function isValid( $ip ) {
                return ( preg_match( '/^' . RE_IP_ADD . '$/', $ip )
@@ -120,8 +120,8 @@ class IP {
         * SIIT IPv4-translated addresses are rejected.
         * Note: canonicalize() tries to convert translated addresses to IPv4.
         *
-        * @param $ipblock String
-        * @return Boolean: True if it is valid.
+        * @param string $ipblock
+        * @return bool True if it is valid
         */
        public static function isValidBlock( $ipblock ) {
                return ( preg_match( '/^' . RE_IPV6_BLOCK . '$/', $ipblock )
@@ -134,7 +134,7 @@ class IP {
         * IPv4 addresses are just trimmed.
         *
         * @param string $ip IP address in quad or octet form (CIDR or not).
-        * @return String
+        * @return string
         */
        public static function sanitizeIP( $ip ) {
                $ip = trim( $ip );
@@ -186,7 +186,7 @@ class IP {
         * Prettify an IP for display to end users.
         * This will make it more compact and lower-case.
         *
-        * @param $ip string
+        * @param string $ip
         * @return string
         */
        public static function prettifyIP( $ip ) {
@@ -286,9 +286,9 @@ class IP {
         * brackets like in RFC 2732. If the port matches the default port, omit
         * the port specification
         *
-        * @param $host string
-        * @param $port int
-        * @param $defaultPort bool|int
+        * @param string $host
+        * @param int $port
+        * @param bool|int $defaultPort
         * @return string
         */
        public static function combineHostAndPort( $host, $port, $defaultPort = false ) {
@@ -305,8 +305,8 @@ class IP {
        /**
         * Convert an IPv4 or IPv6 hexadecimal representation back to readable format
         *
-        * @param string $hex number, with "v6-" prefix if it is IPv6
-        * @return String: quad-dotted (IPv4) or octet notation (IPv6)
+        * @param string $hex Number, with "v6-" prefix if it is IPv6
+        * @return string Quad-dotted (IPv4) or octet notation (IPv6)
         */
        public static function formatHex( $hex ) {
                if ( substr( $hex, 0, 3 ) == 'v6-' ) { // IPv6
@@ -319,8 +319,8 @@ class IP {
        /**
         * Converts a hexadecimal number to an IPv6 address in octet notation
         *
-        * @param $ip_hex String: pure hex (no v6- prefix)
-        * @return String (of format a:b:c:d:e:f:g:h)
+        * @param string $ip_hex Pure hex (no v6- prefix)
+        * @return string (of format a:b:c:d:e:f:g:h)
         */
        public static function hexToOctet( $ip_hex ) {
                // Pad hex to 32 chars (128 bits)
@@ -339,8 +339,8 @@ class IP {
        /**
         * Converts a hexadecimal number to an IPv4 address in quad-dotted notation
         *
-        * @param $ip_hex String: pure hex
-        * @return String (of format a.b.c.d)
+        * @param string $ip_hex Pure hex
+        * @return string (of format a.b.c.d)
         */
        public static function hexToQuad( $ip_hex ) {
                // Pad hex to 8 chars (32 bits)
@@ -361,8 +361,8 @@ class IP {
         * Determine if an IP address really is an IP address, and if it is public,
         * i.e. not RFC 1918 or similar
         *
-        * @param $ip String
-        * @return Boolean
+        * @param string $ip
+        * @return bool
         */
        public static function isPublic( $ip ) {
                static $privateSet = null;
@@ -388,8 +388,8 @@ class IP {
         * function for an IPv6 address will be prefixed with "v6-", a non-
         * hexadecimal string which sorts after the IPv4 addresses.
         *
-        * @param string $ip quad dotted/octet IP address.
-        * @return String|bool false on failure
+        * @param string $ip Quad dotted/octet IP address.
+        * @return string|bool False on failure
         */
        public static function toHex( $ip ) {
                if ( self::isIPv6( $ip ) ) {
@@ -420,8 +420,8 @@ class IP {
        /**
         * Given an IPv6 address in octet notation, returns a pure hex string.
         *
-        * @param string $ip octet ipv6 IP address.
-        * @return String|bool pure hex (uppercase); false on failure
+        * @param string $ip Octet ipv6 IP address.
+        * @return string|bool Pure hex (uppercase); false on failure
         */
        private static function IPv6ToRawHex( $ip ) {
                $ip = self::sanitizeIP( $ip );
@@ -529,7 +529,7 @@ class IP {
         * Convert a network specification in IPv6 CIDR notation to an
         * integer network and a number of bits
         *
-        * @param $range
+        * @param string $range
         *
         * @return array(string, int)
         */
@@ -570,7 +570,7 @@ class IP {
         *     2001:0db8:85a3::7344 - 2001:0db8:85a3::7344   Explicit range
         *     2001:0db8:85a3::7344/96                       Single IP
         *
-        * @param $range
+        * @param string $range
         *
         * @return array(string, string)
         */
@@ -616,9 +616,9 @@ class IP {
        /**
         * Determine if a given IPv4/IPv6 address is in a given CIDR network
         *
-        * @param string $addr the address to check against the given range.
-        * @param string $range the range to check the given address against.
-        * @return Boolean: whether or not the given address is in the given range.
+        * @param string $addr The address to check against the given range.
+        * @param string $range The range to check the given address against.
+        * @return bool Whether or not the given address is in the given range.
         */
        public static function isInRange( $addr, $range ) {
                $hexIP = self::toHex( $addr );
@@ -635,8 +635,8 @@ class IP {
         * This currently only checks a few IPV4-to-IPv6 related cases.  More
         * unusual representations may be added later.
         *
-        * @param string $addr something that might be an IP address
-        * @return String: valid dotted quad IPv4 address or null
+        * @param string $addr Something that might be an IP address
+        * @return string Valid dotted quad IPv4 address or null
         */
        public static function canonicalize( $addr ) {
                // remove zone info (bug 35738)
index 6b6655e..8610386 100644 (file)
@@ -101,7 +101,7 @@ class MWCryptHKDF {
        /**
         * @param string $hash Name of hashing algorithm
         * @param BagOStuff $cache
-        * @param string|array $context to mix into HKDF context
+        * @param string|array $context Context to mix into HKDF context
         */
        public function __construct( $secretKeyMaterial, $algorithm, $cache, $context ) {
                if ( strlen( $secretKeyMaterial ) < 16 ) {
@@ -133,7 +133,7 @@ class MWCryptHKDF {
 
        /**
         * MW specific salt, cached from last run
-        * @return string binary string
+        * @return string Binary string
         */
        protected function getSaltUsingCache() {
                if ( $this->salt == '' ) {
@@ -189,9 +189,9 @@ class MWCryptHKDF {
        /**
         * Produce $bytes of secure random data. As a side-effect,
         * $this->lastK is set to the last hashLen block of key material.
-        * @param int $bytes number of bytes of data
-        * @param string $context to mix into CTXinfo
-        * @return string binary string of length $bytes
+        * @param int $bytes Number of bytes of data
+        * @param string $context Context to mix into CTXinfo
+        * @return string Binary string of length $bytes
         */
        protected function realGenerate( $bytes, $context = '' ) {
 
@@ -237,13 +237,13 @@ class MWCryptHKDF {
         * N.B. http://eprint.iacr.org/2010/264.pdf seems to differ from RFC 5869 in that the test
         * vectors from RFC 5869 only work if K(0) = '' and K(1) = HMAC(PRK, K(0) || CTXinfo || 1)
         *
-        * @param string $hash the hashing function to use (e.g., sha256)
-        * @param string $ikm the input keying material
-        * @param string $salt the salt to add to the ikm, to get the prk
-        * @param string $info optional context (change the output without affecting
+        * @param string $hash The hashing function to use (e.g., sha256)
+        * @param string $ikm The input keying material
+        * @param string $salt The salt to add to the ikm, to get the prk
+        * @param string $info Optional context (change the output without affecting
         *      the randomness properties of the output)
-        * @param integer $L number of bytes to return
-        * @return string cryptographically secure pseudorandom binary string
+        * @param int $L Number of bytes to return
+        * @return string Cryptographically secure pseudorandom binary string
         */
        public static function HKDF( $hash, $ikm, $salt, $info, $L ) {
                $prk = self::HKDFExtract( $hash, $salt, $ikm );
@@ -256,10 +256,10 @@ class MWCryptHKDF {
         * Note that the hmac is keyed with XTS (the salt),
         * and the SKM (source key material) is the "data".
         *
-        * @param string $hash the hashing function to use (e.g., sha256)
-        * @param string $ikm the input keying material
-        * @param string $salt the salt to add to the ikm, to get the prk
-        * @return string binary string (pseudorandm key) used as input to HKDFExpand
+        * @param string $hash The hashing function to use (e.g., sha256)
+        * @param string $ikm The input keying material
+        * @param string $salt The salt to add to the ikm, to get the prk
+        * @return string Binary string (pseudorandm key) used as input to HKDFExpand
         */
        private static function HKDFExtract( $hash, $salt, $ikm ) {
                return hash_hmac( $hash, $ikm, $salt, true );
@@ -268,16 +268,16 @@ class MWCryptHKDF {
        /**
         * Expand the key with the given context
         *
-        * @param $hash Hashing Algorithm
-        * @param $prk a pseudorandom key of at least HashLen octets
-         *     (usually, the output from the extract step)
-        * @param $info optional context and application specific information
-         *     (can be a zero-length string)
-        * @param $bytes length of output keying material in bytes
-         *     (<= 255*HashLen)
-        * @param &$lastK set by this function to the last block of the expansion.
+        * @param string $hash Hashing Algorithm
+        * @param string $prk A pseudorandom key of at least HashLen octets
+             (usually, the output from the extract step)
+        * @param string $info Optional context and application specific information
+             (can be a zero-length string)
+        * @param int $bytes Length of output keying material in bytes
+             (<= 255*HashLen)
+        * @param string &$lastK Set by this function to the last block of the expansion.
         *      In MediaWiki, this is used to seed future Extractions.
-        * @return string cryptographically secure random string $bytes long
+        * @return string Cryptographically secure random string $bytes long
         */
        private static function HKDFExpand( $hash, $prk, $info, $bytes, &$lastK = '' ) {
                $hashLen = MWCryptHKDF::$hashLength[$hash];
@@ -293,7 +293,7 @@ class MWCryptHKDF {
                for ( $counter = 1; $counter <= $rounds; ++$counter ) {
                        $lastK = hash_hmac(
                                $hash,
-                               $lastK . $info . chr($counter),
+                               $lastK . $info . chr( $counter ),
                                $prk,
                                true
                        );
@@ -306,9 +306,9 @@ class MWCryptHKDF {
        /**
         * Generate cryptographically random data and return it in raw binary form.
         *
-        * @param int $bytes the number of bytes of random data to generate
-        * @param string $context string to mix into HMAC context
-        * @return string binary string of length $bytes
+        * @param int $bytes The number of bytes of random data to generate
+        * @param string $context String to mix into HMAC context
+        * @return string Binary string of length $bytes
         */
        public static function generate( $bytes, $context ) {
                return self::singleton()->realGenerate( $bytes, $context );
@@ -318,9 +318,9 @@ class MWCryptHKDF {
         * Generate cryptographically random data and return it in hexadecimal string format.
         * See MWCryptRand::realGenerateHex for details of the char-to-byte conversion logic.
         *
-        * @param int $chars the number of hex chars of random data to generate
-        * @param string $context string to mix into HMAC context
-        * @return string random hex characters, $chars long
+        * @param int $chars The number of hex chars of random data to generate
+        * @param string $context String to mix into HMAC context
+        * @return string Random hex characters, $chars long
         */
        public static function generateHex( $chars, $context = '' ) {
                $bytes = ceil( $chars / 2 );
index eb74d12..31a71c4 100644 (file)
@@ -147,7 +147,7 @@ class MWCryptRand {
         * Randomly hash data while mixing in clock drift data for randomness
         *
         * @param string $data The data to randomly hash.
-        * @return String The hashed bytes
+        * @return string The hashed bytes
         * @author Tim Starling
         */
        protected function driftHash( $data ) {
@@ -214,7 +214,7 @@ class MWCryptRand {
        /**
         * Decide on the best acceptable hash algorithm we have available for hash()
         * @throws MWException
-        * @return String A hash algorithm
+        * @return string A hash algorithm
         */
        protected function hashAlgo() {
                if ( !is_null( $this->algo ) ) {
@@ -259,8 +259,8 @@ class MWCryptRand {
         * Generate an acceptably unstable one-way-hash of some text
         * making use of the best hash algorithm that we have available.
         *
-        * @param $data string
-        * @return String A raw hash of the data
+        * @param string $data
+        * @return string A raw hash of the data
         */
        protected function hash( $data ) {
                return hash( $this->hashAlgo(), $data, true );
@@ -270,9 +270,9 @@ class MWCryptRand {
         * Generate an acceptably unstable one-way-hmac of some text
         * making use of the best hash algorithm that we have available.
         *
-        * @param $data string
-        * @param $key string
-        * @return String A raw hash of the data
+        * @param string $data
+        * @param string $key
+        * @return string A raw hash of the data
         */
        protected function hmac( $data, $key ) {
                return hash_hmac( $this->hashAlgo(), $data, $key, true );
@@ -487,11 +487,11 @@ class MWCryptRand {
         * You can use MWCryptRand::wasStrong() if you wish to know if the source used
         * was cryptographically strong.
         *
-        * @param int $bytes the number of bytes of random data to generate
+        * @param int $bytes The number of bytes of random data to generate
         * @param bool $forceStrong Pass true if you want generate to prefer cryptographically
         *                          strong sources of entropy even if reading from them may steal
         *                          more entropy from the system than optimal.
-        * @return String Raw binary random data
+        * @return string Raw binary random data
         */
        public static function generate( $bytes, $forceStrong = false ) {
                return self::singleton()->realGenerate( $bytes, $forceStrong );
@@ -503,11 +503,11 @@ class MWCryptRand {
         * You can use MWCryptRand::wasStrong() if you wish to know if the source used
         * was cryptographically strong.
         *
-        * @param int $chars the number of hex chars of random data to generate
+        * @param int $chars The number of hex chars of random data to generate
         * @param bool $forceStrong Pass true if you want generate to prefer cryptographically
         *                          strong sources of entropy even if reading from them may steal
         *                          more entropy from the system than optimal.
-        * @return String Hexadecimal random data
+        * @return string Hexadecimal random data
         */
        public static function generateHex( $chars, $forceStrong = false ) {
                return self::singleton()->realGenerateHex( $chars, $forceStrong );
index 7105f6c..3a0492d 100644 (file)
@@ -24,7 +24,7 @@ class MWFunction {
 
        /**
         * @deprecated since 1.22; use call_user_func()
-        * @param $callback
+        * @param callable $callback
         * @return mixed
         */
        public static function call( $callback ) {
@@ -36,8 +36,8 @@ class MWFunction {
 
        /**
         * @deprecated since 1.22; use call_user_func_array()
-        * @param $callback
-        * @param $argsarams
+        * @param callable $callback
+        * @param array $argsarams
         * @return mixed
         */
        public static function callArray( $callback, $argsarams ) {
@@ -47,8 +47,8 @@ class MWFunction {
        }
 
        /**
-        * @param $class
-        * @param $args array
+        * @param string $class
+        * @param array $args
         * @return object
         */
        public static function newObj( $class, $args = array() ) {
index 9cd3d3f..86f4512 100644 (file)
@@ -42,11 +42,11 @@ class StringUtils {
         * Beware of this when backporting code to that version of MediaWiki.
         *
         * @param string $value String to check
-        * @param boolean $disableMbstring Whether to use the pure PHP
+        * @param bool $disableMbstring Whether to use the pure PHP
         * implementation instead of trying mb_check_encoding. Intended for unit
         * testing. Default: false
         *
-        * @return boolean Whether the given $value is a valid UTF-8 encoded string
+        * @return bool Whether the given $value is a valid UTF-8 encoded string
         */
        static function isUtf8( $value, $disableMbstring = false ) {
                $value = (string)$value;
@@ -121,10 +121,10 @@ class StringUtils {
         * hungry and inflexible. The memory requirements are such that I don't
         * recommend using it on anything but guaranteed small chunks of text.
         *
-        * @param $startDelim
-        * @param $endDelim
-        * @param $replace
-        * @param $subject
+        * @param string $startDelim
+        * @param string $endDelim
+        * @param string $replace
+        * @param string $subject
         *
         * @return string
         */
@@ -157,11 +157,11 @@ class StringUtils {
         * start, so e.g. /*\/ is not considered to be both the start and end of a
         * comment. /*\/xy/*\/ is considered to be a single comment with contents /xy/.
         *
-        * @param string $startDelim start delimiter
-        * @param string $endDelim end delimiter
-        * @param $callback Callback: function to call on each match
-        * @param $subject String
-        * @param string $flags regular expression flags
+        * @param string $startDelim Start delimiter
+        * @param string $endDelim End delimiter
+        * @param callable $callback Function to call on each match
+        * @param string $subject
+        * @param string $flags Regular expression flags
         * @throws MWException
         * @return string
         */
@@ -245,13 +245,13 @@ class StringUtils {
         *
         *   preg_replace( "!$startDelim(.*)$endDelim!$flags", $replace, $subject )
         *
-        * @param string $startDelim start delimiter regular expression
-        * @param string $endDelim end delimiter regular expression
-        * @param string $replace replacement string. May contain $1, which will be
+        * @param string $startDelim Start delimiter regular expression
+        * @param string $endDelim End delimiter regular expression
+        * @param string $replace Replacement string. May contain $1, which will be
         *                 replaced by the text between the delimiters
-        * @param string $subject to search
-        * @param string $flags regular expression flags
-        * @return String: The string with the matches replaced
+        * @param string $subject String to search
+        * @param string $flags Regular expression flags
+        * @return string The string with the matches replaced
         */
        static function delimiterReplace( $startDelim, $endDelim, $replace, $subject, $flags = '' ) {
                $replacer = new RegexlikeReplacer( $replace );
@@ -361,8 +361,8 @@ class RegexlikeReplacer extends Replacer {
  */
 class DoubleReplacer extends Replacer {
        /**
-        * @param $from
-        * @param $to
+        * @param mixed $from
+        * @param mixed $to
         * @param int $index
         */
        function __construct( $from, $to, $index = 0 ) {
@@ -387,7 +387,7 @@ class HashtableReplacer extends Replacer {
        private $table, $index;
 
        /**
-        * @param $table
+        * @param array $table
         * @param int $index
         */
        function __construct( $table, $index = 0 ) {
index 0ce90c1..604d381 100644 (file)
@@ -37,7 +37,7 @@ class UIDGenerator {
        protected $lockFile88; // string; local file path
        protected $lockFile128; // string; local file path
 
-       /** @var Array */
+       /** @var array */
        protected $fileHandles = array(); // cache file handles
 
        const QUICK_RAND = 1; // get randomness from fast and insecure sources
@@ -102,7 +102,7 @@ class UIDGenerator {
         *
         * UID generation is serialized on each server (as the node ID is for the whole machine).
         *
-        * @param $base integer Specifies a base other than 10
+        * @param int $base Specifies a base other than 10
         * @return string Number
         * @throws MWException
         */
@@ -146,7 +146,7 @@ class UIDGenerator {
         *
         * UID generation is serialized on each server (as the node ID is for the whole machine).
         *
-        * @param $base integer Specifies a base other than 10
+        * @param int $base Specifies a base other than 10
         * @return string Number
         * @throws MWException
         */
@@ -185,7 +185,7 @@ class UIDGenerator {
        /**
         * Return an RFC4122 compliant v4 UUID
         *
-        * @param $flags integer Bitfield (supports UIDGenerator::QUICK_RAND)
+        * @param int $flags Bitfield (supports UIDGenerator::QUICK_RAND)
         * @return string
         * @throws MWException
         */
@@ -211,7 +211,7 @@ class UIDGenerator {
        /**
         * Return an RFC4122 compliant v4 UUID
         *
-        * @param $flags integer Bitfield (supports UIDGenerator::QUICK_RAND)
+        * @param int $flags Bitfield (supports UIDGenerator::QUICK_RAND)
         * @return string 32 hex characters with no hyphens
         * @throws MWException
         */
@@ -226,8 +226,8 @@ class UIDGenerator {
         * If UIDGenerator::QUICK_VOLATILE is used the counter might reset on server restart.
         *
         * @param string $bucket Arbitrary bucket name (should be ASCII)
-        * @param integer $bits Bit size (<=48) of resulting numbers before wrap-around
-        * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+        * @param int $bits Bit size (<=48) of resulting numbers before wrap-around
+        * @param int $flags (supports UIDGenerator::QUICK_VOLATILE)
         * @return float Integer value as float
         * @since 1.23
         */
@@ -240,9 +240,9 @@ class UIDGenerator {
         *
         * @see UIDGenerator::newSequentialPerNodeID()
         * @param string $bucket Arbitrary bucket name (should be ASCII)
-        * @param integer $bits Bit size (16 to 48) of resulting numbers before wrap-around
-        * @param integer $count Number of IDs to return (1 to 10000)
-        * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+        * @param int $bits Bit size (16 to 48) of resulting numbers before wrap-around
+        * @param int $count Number of IDs to return (1 to 10000)
+        * @param int $flags (supports UIDGenerator::QUICK_VOLATILE)
         * @return array Ordered list of float integer values
         * @since 1.23
         */
@@ -256,9 +256,9 @@ class UIDGenerator {
         *
         * @see UIDGenerator::newSequentialPerNodeID()
         * @param string $bucket Arbitrary bucket name (should be ASCII)
-        * @param integer $bits Bit size (16 to 48) of resulting numbers before wrap-around
-        * @param integer $count Number of IDs to return (1 to 10000)
-        * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+        * @param int $bits Bit size (16 to 48) of resulting numbers before wrap-around
+        * @param int $count Number of IDs to return (1 to 10000)
+        * @param int $flags (supports UIDGenerator::QUICK_VOLATILE)
         * @return array Ordered list of float integer values
         */
        protected function getSequentialPerNodeIDs( $bucket, $bits, $count, $flags ) {
@@ -337,9 +337,9 @@ class UIDGenerator {
         * This is useful for making UIDs sequential on a per-node bases.
         *
         * @param string $lockFile Name of a local lock file
-        * @param $clockSeqSize integer The number of possible clock sequence values
-        * @param $counterSize integer The number of possible counter values
-        * @return Array (result of UIDGenerator::millitime(), counter, clock sequence)
+        * @param int $clockSeqSize The number of possible clock sequence values
+        * @param int $counterSize The number of possible counter values
+        * @return array (result of UIDGenerator::millitime(), counter, clock sequence)
         * @throws MWException
         */
        protected function getTimestampAndDelay( $lockFile, $clockSeqSize, $counterSize ) {
@@ -420,7 +420,7 @@ class UIDGenerator {
         * timestamp. This returns false if it would have to wait more than 10ms.
         *
         * @param array $time Result of UIDGenerator::millitime()
-        * @return Array|bool UIDGenerator::millitime() result or false
+        * @return array|bool UIDGenerator::millitime() result or false
         */
        protected function timeWaitUntil( array $time ) {
                do {
@@ -449,7 +449,7 @@ class UIDGenerator {
        }
 
        /**
-        * @return Array (current time in seconds, milliseconds since then)
+        * @return array (current time in seconds, milliseconds since then)
         */
        protected static function millitime() {
                list( $msec, $sec ) = explode( ' ', microtime() );
index 6be186f..0f56e33 100644 (file)
@@ -64,7 +64,7 @@ class ZipDirectoryReader {
         *        valid ZIP64 file, and working out what non-ZIP64 readers will make
         *        of such a file is not trivial.
         *
-        * @return Status object. The following fatal errors are defined:
+        * @return Status A Status object. The following fatal errors are defined:
         *
         *      - zip-file-open-error: The file could not be opened.
         *
@@ -181,6 +181,8 @@ class ZipDirectoryReader {
 
        /**
         * Throw an error, and log a debug message
+        * @param mixed $code
+        * @param string $debugMessage
         */
        function error( $code, $debugMessage ) {
                wfDebug( __CLASS__ . ": Fatal error: $debugMessage\n" );
@@ -299,7 +301,7 @@ class ZipDirectoryReader {
         * Find the location of the central directory, as would be seen by a
         * non-ZIP64 reader.
         *
-        * @return List containing offset, size and end position.
+        * @return array List containing offset, size and end position.
         */
        function findOldCentralDirectory() {
                $size = $this->eocdr['CD size'];
@@ -430,9 +432,7 @@ class ZipDirectoryReader {
                                $year, $month, $day, $hour, $minute, $second );
 
                        // Convert the character set in the file name
-                       if ( !function_exists( 'iconv' )
-                               || $this->testBit( $data['general bits'], self::GENERAL_UTF8 )
-                       ) {
+                       if ( $this->testBit( $data['general bits'], self::GENERAL_UTF8 ) ) {
                                $name = $data['name'];
                        } else {
                                $name = iconv( 'CP437', 'UTF-8', $data['name'] );
@@ -485,6 +485,7 @@ class ZipDirectoryReader {
 
        /**
         * Get the length of the file.
+        * @return int
         */
        function getFileLength() {
                if ( $this->fileLength === null ) {
@@ -661,7 +662,7 @@ class ZipDirectoryReader {
         * Returns a bit from a given position in an integer value, converted to
         * boolean.
         *
-        * @param $value integer
+        * @param int $value
         * @param int $bitIndex The index of the bit, where 0 is the LSB.
         * @return bool
         */
@@ -671,6 +672,7 @@ class ZipDirectoryReader {
 
        /**
         * Debugging helper function which dumps a string in hexdump -C format.
+        * @param string $s
         */
        function hexDump( $s ) {
                $n = strlen( $s );
index 0a19d61..88d0f23 100644 (file)
@@ -339,7 +339,7 @@ class Language {
                        throw new MWException( __METHOD__ . " must be passed a string, $type given$addmsg" );
                }
 
-               return (bool)preg_match( '/^[a-z0-9-]{2,}$/i', $code );
+               return (bool)preg_match( '/^[a-z0-9-]{2,}$/', $code );
        }
 
        /**
@@ -2396,7 +2396,7 @@ class Language {
                        // Timestamps are in different years: use full timestamp
                        // Also do full timestamp for future dates
                        /**
-                        * @FIXME Add better handling of future timestamps.
+                        * @todo FIXME: Add better handling of future timestamps.
                         */
                        $format = $this->getDateFormatString( 'both', $user->getDatePreference() ?: 'default' );
                        $ts = $this->sprintfDate( $format, $ts->getTimestamp( TS_MW ) );
index 04ad974..8070e2d 100644 (file)
        "license-nopreview": "(العرض المسبق غير متوفر)",
        "upload_source_url": "  (مسار صحيح، يمكن الوصول إليه)",
        "upload_source_file": " (ملف على حاسوبك)",
-       "listfiles-delete": "أحذÙ\81",
+       "listfiles-delete": "حذف",
        "listfiles-summary": "هذه الصفحة الخاصة تعرض كل الملفات المرفوعة.",
        "listfiles_search_for": "ابحث عن اسم الميديا:",
        "imgfile": "ملف",
index 34aebd5..9b12248 100644 (file)
@@ -24,7 +24,7 @@
        "tog-previewontop": "ورّي نضرة قبليّة تاع واش يصرا، فوق الجيهة تاع التبدال",
        "tog-previewonfirst": "بين شوفه-قبليه مع اول تبديله",
        "tog-enotifwatchlistpages": "ابحت لي إيمال كي تتبدّل صفحة ولا فيشي من الـليستة تاع الـتتباع تاعي",
-       "tog-enotifusertalkpages": "ابعثÙ\84Ù\8a Ø¨Ø±Ù\8aÙ\87 Ù\83Ù\84 Ù\85ا ØªØ¨Ø¯Ù\84ت Ø¨Ø§Ø¬Øª Ù\86Ù\82اش ديالي",
+       "tog-enotifusertalkpages": "ابعثÙ\84Ù\8a Ø¨Ø±Ù\8aÙ\91Ø© Ù\83Ù\84Ù\91 Ù\85ا ØªØ¨Ø¯Ù\91Ù\84ت Ø¨Ø§Ø¬ØªÙ° Ø§Ù\84تÙ\82رعÙ\8aج ديالي",
        "tog-enotifminoredits": "ابعت لي بريه حتا يلا كانت تبدالات صغيرة فلباجات و الـفيشيّات",
        "tog-enotifrevealaddr": "بين لادريستي إلكترونيك في براوات الاعلام",
        "tog-shownumberswatching": "بين شحال كاين من مستعمل يتبع الباجه",
        "moredotdotdot": "كتر...",
        "morenotlisted": "هاد الليستة ما راهيش مكمولة",
        "mypage": "باجه",
-       "mytalk": "نقاش",
+       "mytalk": "تقرعيج",
        "anontalk": "تناقش على الـ ip هادي",
        "navigation": "تبحار",
        "and": "&#32;و",
        "filenotfound": "ما قدرش مصيبتٰ الفيشي \"$1\".",
        "unexpected": "قيمة ما شي مستنية : \"$1\"=\"$2\".",
        "formerror": "غلطة: ما قدرش ترسال الستيمارة",
+       "badarticleerror": "هاد الفعلة ما تنجمش تندار ف هاد الباجة.",
+       "cannotdelete": "ما تنجّمش تمحيتٰ الباجة ولا الفيشي \"$1\".\nبالاك كان دار المحيان شي واحد من قبَل.",
+       "cannotdelete-title": "ما يمكنش محيان الباجة \"$1\".",
+       "delete-hook-aborted": "المحيان راه منحّي من عند كاش توسيعة.\nما عندنا حتا تفسار على هاد الشي.",
+       "no-null-revision": "ما يمكنش تخلاق مراجعة جديدة خاوية لل باجة \"$1\".",
        "badtitle": "عنوان عيان",
        "badtitletext": "عنوان الباجه المطلوب إما ماشي صحيح والا فارغ، وبالاك الوصيل بين اللغات والا بين البروجيات ماشي صحيح.\nبالاك فيه حروف ما تصلحش  باس يستعملوها فالعناوين.",
+       "perfcached": "الموطايات هادي راهي مخبّية و بالاك تاني يكون فات عليها الوقت. {{PLURAL:$1||ناتج واحد|زوج نواتج|$1 نواتج|$1 ناتج}} على الكتَر {{PLURAL:$1||مخبّي|مخبّيين}}.",
        "viewsource": "شوف الاصل",
        "yourname": "اسم المستخدم:",
        "yourpassword": "كلمة السر:",
        "sp-contributions-blocklog": "ريجيسترالمنع",
        "sp-contributions-uploads": "مرفوعات",
        "sp-contributions-logs": "ريجيسترات",
-       "sp-contributions-talk": "نقاش",
+       "sp-contributions-talk": "تقرعيج",
        "sp-contributions-search": "تفتاش المشاركات",
        "sp-contributions-username": "عنوان أيبي والال اسم مستخدم:",
        "sp-contributions-toponly": "ما تورّي غير المشاركات التوالا تاع المقالات",
        "tooltip-pt-mycontris": "ليسته نتع مساهماتك",
        "tooltip-pt-login": "مادابيك تسجل الدخول تاعك، بصّح ماشي ملزوم عليك",
        "tooltip-pt-logout": "سجل خروج",
-       "tooltip-ca-talk": "نقاش على باجت المحتوى",
+       "tooltip-ca-talk": "تقرعيج على باجتٰ المحتاوا",
        "tooltip-ca-edit": "تنجم تحرر هاذ الباجه ،ماذابيك تستعمل قفله المراجعه قبل ما تحفظ",
        "tooltip-ca-addsection": "ابدأ طرف جديد",
        "tooltip-ca-viewsource": "هاذ الباجه محميه. و شنو تقدرو تشوفو الأصلي نتاعها",
index 53e2e7b..45b37ee 100644 (file)
        "talkpagelinktext": "Alderique",
        "specialpage": "Páxina especial",
        "personaltools": "Ferramientes personales",
-       "postcomment": "Seición nueva",
        "articlepage": "Ver la páxina de conteníu",
        "talk": "Alderique",
        "views": "Vistes",
        "externaldberror": "O hebo un fallu d'autenticación de la base de datos o nun tienes permisu p'anovar la to cuenta esterna.",
        "login": "Entrar",
        "nav-login-createaccount": "Entrar / crear cuenta",
-       "loginprompt": "Ha de tener les «cookies» activaes p'aniciar sesión en {{SITENAME}}.",
        "userlogin": "Entrar / crear cuenta",
        "userloginnocreate": "Aniciar sesión",
        "logout": "Salir",
        "accmailtext": "Unvióse a $2 una contraseña xenerada al debalu pal usuariu [[User talk:$1|$1]]. Pue camudase na páxina ''[[Special:ChangePassword|camudar contraseña]]'' depués d'aniciar sesión.",
        "newarticle": "(Nuevu)",
        "newarticletext": "Siguisti un enllaz a un artículu qu'inda nun esiste.\nPa crear la páxina, empecipia a escribir nel cuadru d'embaxo (mira la [$1 páxina d'ayuda] pa más información).\nSi llegasti equí por enquivocu, calca nel botón '''atrás''' del to restolador.",
-       "anontalkpagetext": "----\n''Esta ye la páxina d'alderique pa un usuariu anónimu qu'inda nun creó una cuenta o que nun la usa.''\nPoro, tenemos qu'usar la direición numbérica IP pa identificalu/la.\nEsa IP pue tar compartida por varios usuarios.\nSi ye un usuariu anónimu y cree qu'hai comentarios irrelevantes empobinaos a vusté, por favor, [[Special:UserLogin/signup|cree una cuenta]] o [[Special:UserLogin/signup|anicie sesión]] pa torgar futures confusiones con otros usuarios anónimos.",
-       "noarticletext": "Nestos momentos nun hai testu nesta páxina.\nPue [[Special:Search/{{PAGENAME}}|buscar esti títulu de páxina]] n'otres páxines,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar los rexistros rellacionaos],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta páxina]</span>.",
+       "anontalkpagetext": "----\n''Esta ye la páxina d'alderique pa un usuariu anónimu qu'inda nun creó una cuenta o que nun la usa.''\nPola mor d'ello ha usase la direición numbérica IP pa identificalu/la.\nTala IP pue compartise por varios usuarios.\nSi yes un usuariu anónimu y notes qu'hai comentarios irrelevantes empobinaos pa ti, por favor [[Special:UserLogin/signup|crea una cuenta]] o [[Special:UserLogin/signup|identifícate]] pa torgar futures confusiones con otros usuarios anónimos.",
+       "noarticletext": "Nestos momentos nun hai testu nesta páxina.\nPues [[Special:Search/{{PAGENAME}}|buscar esti títulu de páxina]] n'otres páxines,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar los rexistros rellacionaos],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta páxina]</span>.",
        "noarticletext-nopermission": "Nestos momentos nun hai testu nesta páxina.\nPue [[Special:Search/{{PAGENAME}}|buscar esti títulu de páxina]] n'otres páxines o <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar los rexistros rellacionaos]</span>, pero nun tiene permisu pa crear esta páxina.",
        "missing-revision": "La revisión #$1 de la páxina llamada \"{{FULLPAGENAME}}\" nun esiste.\n\nDe vezu la causa d'esto ye siguir un enllaz antiguu del historial a una páxina que se desanició.\nSe puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistru de desanicios].",
        "userpage-userdoesnotexist": "La cuenta d'usuariu «$1» nun ta rexistrada.\nPor favor comprueba si quies crear/editar esta páxina.",
        "currentrev": "Revisión actual",
        "currentrev-asof": "Revisión actual a fecha de $1",
        "revisionasof": "Revisión a fecha de $1",
-       "revision-info": "Revisión a fecha de $1; $2",
+       "revision-info": "La revisión del $4 a les $5 por {{GENDER:$6|$2}}$7",
        "previousrevision": "←Revisión anterior",
        "nextrevision": "Revisión siguiente→",
        "currentrevisionlink": "Revisión actual",
        "revdelete-text-text": "Les revisiones desaniciaes inda apaecerán nel historial de la páxina, pero partes del conteníu nun sedrán accesibles al públicu.",
        "revdelete-text-file": "Les versiones del ficheru desaniciaes inda apaecerán nel historial del ficheru, pero partes del conteníu nun sedrán accesibles al públicu.",
        "logdelete-text": "Los socesos del rexistru desaniciaos inda apaecerán nos rexistros, pero partes del conteníu nun sedrán accesibles al públicu.",
-       "revdelete-text-others": "Otros alministradores de {{SITENAME}} inda tendrán accesu al conteníu anubríu y puen desfacer l'anubrimientu con esta mesma interfaz, mentanto nun se configuren otres torgues más.",
+       "revdelete-text-others": "Otros alministradores inda tendrán accesu al conteníu anubríu y puen desfacer el desaniciu, mentanto nun se configuren otres torgues más.",
        "revdelete-confirm": "Confirma que quies facer esto, qu'entiendes les consecuencies, y que vas facer esto d'alcuerdo [[{{MediaWiki:Policy-url}}|cola política]].",
        "revdelete-suppress-text": "La supresión '''namái''' tendría d'usase nos casos darréu:\n* Información que pudiere ser bilordiosa\n* Información personal inapropiada\n*: ''direiciones de llares y númberos de teléfonu, númberos d'identidá nacional, etc.''",
        "revdelete-legend": "Establecer torgues de visibilidá",
        "mergehistory-empty": "Nun se pue fusionar nenguna revisión.",
        "mergehistory-success": "$3 {{PLURAL:$3|revisión|revisiones}} de [[:$1]] fusionaes correutamente en [[:$2]].",
        "mergehistory-fail": "Nun se pudo facer la fusión d'historiales, por favor verifica la páxina y los parámetros temporales.",
+       "mergehistory-fail-toobig": "Nun pudo fusionase l'historial porque moveríense más del máximu de $1 {{PLURAL:$1|revisión|revisiones}}.",
        "mergehistory-no-source": "La páxina d'orixe $1 nun esiste.",
        "mergehistory-no-destination": "La páxina de destín $1 nun esiste.",
        "mergehistory-invalid-source": "La páxina d'orixe ha tener un títulu válidu.",
        "powersearch-togglelabel": "Comprobar:",
        "powersearch-toggleall": "Toos",
        "powersearch-togglenone": "Dengún",
+       "powersearch-remember": "Recordar la seleición pa guetes futures",
        "search-external": "Busca esterna",
        "searchdisabled": "La busca en {{SITENAME}} ta desactivada. Mentanto, pues buscar en Google. Has fixate en que'l conteníu de los sos índices de {{SITENAME}} pue tar desfasáu.",
        "search-error": "Hebo un error al buscar: $1",
        "largefileserver": "Esti ficheru ye mayor de lo que permite la configuración del sirvidor.",
        "emptyfile": "El ficheru que xubisti paez tar vaciu.\nEsto podría ser pola mor d'un enquivocu nel nome del ficheru.\nPor favor, camienta si daveres quies xubir esti archivu.",
        "windows-nonascii-filename": "Esta wiki nun permite nomes de ficheru con caráuteres especiales.",
-       "fileexists": "Yá esiste un ficheru con esti nome, por favor comprueba <strong>[[:$1]]</strong> si nun tas seguru de querer camudalu.\n[[$1|thumb]]",
+       "fileexists": "Yá esiste un ficheru con esti nome, por favor comprueba <strong>[[:$1]]</strong> si nun tas {{GENDER:|seguru|segura}} de querer camudalu.\n[[$1|thumb]]",
        "filepageexists": "La páxina de descripción d'esti ficheru creóse yá en <strong>[[:$1]]</strong>, pero anguaño nun esiste nengún ficheru con esti nome.\nEl resume que pongas nun va apaecer na páxina de descripción.\nPa facer que'l to resume apaeza, vas tener qu'editalu manualmente.\n[[$1|thumb]]",
-       "fileexists-extension": "Yá esiste un ficheru con un nome asemeyáu: [[$2|thumb]]\n* Nome del ficheru que se quier xubir: <strong>[[:$1]]</strong>\n* Nome del ficheru esistente: <strong>[[:$2]]</strong>\nPor favor escueyi un nome diferente.",
+       "fileexists-extension": "Yá esiste un ficheru con un nome asemeyáu: [[$2|thumb]]\n* Nome del ficheru que se quier xubir: <strong>[[:$1]]</strong>\n* Nome del ficheru esistente: <strong>[[:$2]]</strong>\n¿Quies meyor usar un nome más distinguible?",
        "fileexists-thumbnail-yes": "El ficheru paez ser una imaxe de tamañu menguáu ''(miniatura)''.\n [[$1|thumb]]\nPor favor comprueba el ficheru <strong>[[:$1]]</strong>.\nSi'l ficheru comprobáu tien el mesmu tamañu que la imaxe orixinal, nun ye necesario xubir una miniatura estra.",
        "file-thumbnail-no": "El ficheru entama con <strong>$1</strong>.\nPaez ser una imaxe de tamañu menguáu ''(miniatura)''.\nSi tienes esta imaxe a resolución completa xúbila; si non, por favor camuda'l nome del ficheru.",
        "fileexists-forbidden": "Yá esiste un ficheru con esti nome, y nun se pue renomar.\nSi tovía asina quies xubir el ficheru, por favor vuelvi atrás y usa otru nome.\n[[File:$1|thumb|center|$1]]",
        "license": "Llicencia:",
        "license-header": "Llicencia",
        "nolicense": "Nenguna seleicionada",
+       "licenses-edit": "Editar les opciones de llicencia",
        "license-nopreview": "(Previsualización non disponible)",
        "upload_source_url": " (una URL válida y accesible públicamente)",
        "upload_source_file": " (un archivu del to ordenador)",
+       "listfiles-delete": "desaniciar",
        "listfiles-summary": "Esta páxina especial amuesa tolos ficheros xubíos.",
        "listfiles_search_for": "Buscar por nome d'archivu multimedia:",
        "imgfile": "archivu",
        "filedelete-maintenance": "El desaniciu y restauración de ficheros ta desactivao temporalmente mientres ta en mantenimientu.",
        "filedelete-maintenance-title": "Nun se pue desaniciar el ficheru",
        "mimesearch": "Busca MIME",
-       "mimesearch-summary": "Esta páxina activa'l filtráu d'archivos en función de la so triba MIME. Entrada: contenttype/subtype, p.ex. <code>image/jpeg</code>.",
+       "mimesearch-summary": "Esta páxina permite filtriar los ficheros pol so tipu MIME.\nEntrada: contenttype/subtype o contenttype/*, p.ex. <code>image/jpeg</code>.",
        "mimetype": "Triba MIME:",
        "download": "descargar",
        "unwatchedpages": "Páxines ensin vixilar",
        "wantedpages-badtitle": "Títulu inválidu nel conxuntu de resultaos: $1",
        "wantedfiles": "Archivos buscaos",
        "wantedfiletext-cat": "Los ficheros siguientes tan usándose, pero nun esisten. Ye posible qu'apaezan ficheros de repositorios esternos ensin qu'esistan. Cualesquier falsu positivu tará <del>tacháu</del>. Amás, les páxines qu'inxerten ficheros que nun esisten apaecen na llista de [[:$1]].",
+       "wantedfiletext-cat-noforeign": "Los ficheros siguientes tán usándose, pero nun existen. Amás, hai una llista de páxines qu'incluyen ficheros que non existen en [[:$1]].",
        "wantedfiletext-nocat": "Los ficheros siguientes tan usándose, pero nun esisten. Ye posible qu'apaezan ficheros de repositorios esternos ensin qu'esistan. Cualesquier falsu positivu tará <del>tacháu</del>.",
+       "wantedfiletext-nocat-noforeign": "Los ficheros siguientes tán usándose, pero nun existen.",
        "wantedtemplates": "Plantíes más buscaes",
        "mostlinked": "Páxines más enllaciaes",
        "mostlinkedcategories": "Categoríes más enllaciaes",
-       "mostlinkedtemplates": "Plantíes más enllaciaes",
+       "mostlinkedtemplates": "Páxines más trescluíes",
        "mostcategories": "Páxines con más categoríes",
        "mostimages": "Archivos más enllaciaos",
        "mostinterwikis": "Páxines con más interwikis",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|alderique]])",
        "unknown_extension_tag": "Etiqueta d'estensión \"$1\" desconocida",
        "duplicate-defaultsort": "Avisu: La clave d'ordenación predeterminada \"$2\" anula la clave d'ordenación anterior \"$1\".",
+       "duplicate-displaytitle": "<strong>Avisu:</strong> El títulu a amosar \"$2\" anula el títulu anterior \"$1\".",
        "version": "Versión",
        "version-extensions": "Estensiones instalaes",
+       "version-skins": "Temes instalaos",
        "version-specialpages": "Páxines especiales",
        "version-parserhooks": "Hooks d'análisis sintáuticu",
        "version-variables": "Variables",
        "version-antispam": "Prevención del corréu puxarra",
-       "version-skins": "Apariencia",
        "version-other": "Otros",
        "version-mediahandlers": "Remanadores d'archivos multimedia",
        "version-hooks": "Hooks",
        "version-hook-name": "Nome del hook",
        "version-hook-subscribedby": "Suscritu por",
        "version-version": "(Versión $1)",
+       "version-no-ext-name": "[ensin nome]",
        "version-license": "Llicencia de MediaWiki",
        "version-ext-license": "Llicencia",
        "version-ext-colheader-name": "Estensión",
+       "version-skin-colheader-name": "Apariencia",
        "version-ext-colheader-version": "Versión",
        "version-ext-colheader-license": "Llicencia",
        "version-ext-colheader-description": "Descripción",
        "expand_templates_remove_nowiki": "Quitar les etiquetes <nowiki> nos resultaos",
        "expand_templates_generate_xml": "Amosar l'árbole d'análisis sintáuticu XML",
        "expand_templates_generate_rawhtml": "Ver el HTML en bruto",
-       "expand_templates_preview": "Vista previa"
+       "expand_templates_preview": "Vista previa",
+       "pagelanguage": "Selector de llingua de la páxina",
+       "pagelang-name": "Páxina",
+       "pagelang-language": "Llingua",
+       "pagelang-use-default": "Usar la llingua predeterminada",
+       "pagelang-select-lang": "Escoyer llingua",
+       "right-pagelang": "Cambiar la llingua de la páxina",
+       "action-pagelang": "cambiar la llingua de la páxina",
+       "log-name-pagelang": "Rexistru de cambios de llingua",
+       "log-description-pagelang": "Esti ye un rexistru de los cambios de llingua de les páxines.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} la llingua de la páxina $3 del $4 al $5."
 }
index 1669b9d..eefbc2c 100644 (file)
        "externaldberror": "Verilənlər bazasının doğruluğunu yoxlamada xəta baş verib və yaxud sizin xarici istifadəçi qeydiyyatını yeniləmək hüququnuz yoxdur.",
        "login": "Daxil ol",
        "nav-login-createaccount": "Daxil ol / hesab yarat",
-       "loginprompt": "{{SITENAME}} saytına daxil olmaq üçün \"veb kökələrinin\" (cookies) istifadəsinə icazə verilməlidir.",
        "userlogin": "Daxil ol və ya istifadəçi yarat",
        "userloginnocreate": "Daxil ol",
        "logout": "Çıxış",
        "noemailcreate": "Düzgün e-poçt ünvanı qeyd etməlisiniz",
        "passwordsent": "Yeni parol \"$1\" üçün qeydiyyata alınan e-poçt ünvanına göndərilmişdir.\nXahiş edirik, e-məktubu aldıqdan sonra yenidən daxil olasınız.",
        "blocked-mailpassword": "İP ünvanınız bloklu olduğuna görə, yeni parol göndərmə mümkün deyil.",
-       "eauthentsent": "Göstərilən bu e-poçt ünvanına məktub göndərildi. \nGələcəkdə e-poçt almaq üçün,bu e-poçtun sizə aid olması haqqındakı qaydalarla tanış olun.",
+       "eauthentsent": "Göstərilən e-poçt ünvanına məktub göndərildi. \nGələcəkdə həmin ünvana e-məktub ala bilmək üçün, ünvanın sizə aid olmasının təsdiq edilməsi ilə bağlı məktubda verilən göstərişlərə riayət etməlisiniz.",
        "throttled-mailpassword": "Bir parol sıfırlama e-poçtu son {{PLURAL:$1|bir saat|$1 saat}} içində zatən göndərildi. Xidməti pis niyyətlə istifadə etməyi önləmək üçün, hər {{PLURAL:$1|bir saatda|$1 saatda}} sadəcə bir parol sıfırlama e-poçtu göndəriləcəkdir.",
        "mailerror": "Məktub göndərmə xətası: $1",
        "acct_creation_throttle_hit": "Sizin IP ünvanınızdan bu viki-də son bir gün ərzində {{PLURAL:$1|1 hesab|$1 hesab}} açılmışdır. Bu bir gün ərzində icazə verilən maksimum say olduğu üçün, indiki anda daha çox hesab aça bilməzsiniz.",
        "deletereasonotherlist": "Digər səbəb",
        "deletereason-dropdown": "*Əsas silmə səbəbi\n** Müəllif istəyi\n** Müəllif hüququ pozuntusu\n** Vandalizm",
        "delete-edit-reasonlist": "Silmə səbəblərinin redaktəsi",
-       "rollback": "Əvvəlki versiya",
+       "rollback": "əvvəlki halına qaytar",
        "rollback_short": "əvvəlki halına qaytar",
        "rollbacklink": "əvvəlki halına qaytar",
+       "rollbacklinkcount": "$1 {{PLURAL:$1|dəyişikliyi|dəyişikliyi}} geri qaytar",
        "rollbackfailed": "Geri qaytarma uğursuzdur",
        "cantrollback": "Redaktə geri qaytarıla bilməz; axırıncı redaktə səhifədə olan yeganə fəaliyyətdir.",
        "revertpage": "[[Special:Contributions/$2|$2]] ([[User talk:$2|Müzakirə]]) tərəfindən edilmiş dəyişikliklər [[User:$1|$1]] tərəfindən edilmiş dəyişikliklərə qaytarıldı.",
        "sp-contributions-search": "Fəaliyyətləri axtar",
        "sp-contributions-username": "IP-ünvanı və ya istifadəçi adı:",
        "sp-contributions-toponly": "Son redaktə olan dəyişiklikləri göstər",
+       "sp-contributions-newonly": "Yalnız yeni səhifə yaradılan dəyişiklikləri göstər",
        "sp-contributions-submit": "Axtar",
        "whatlinkshere": "Bu səhifəyə bağlantılar",
        "whatlinkshere-title": "\"$1\" məqaləsinə keçid verən səhifələr",
index 4f28db5..4e2de7b 100644 (file)
@@ -24,7 +24,7 @@
        "tog-newpageshidepatrolled": "Яңы биттәр исемлегендә тикшерелгән үҙгәртеүҙәрҙе йәшер",
        "tog-extendwatchlist": "Барлыҡ үҙгәртеүҙәрҙе үҙ эсенә алған, киңәйтелгән күҙәтеү исемлеге",
        "tog-usenewrc": "Һуңғы төҙәтеүҙәр һәм күҙәтеү исемлегендәге үҙгәрештәрҙе төркөмдәргә бүлергә",
-       "tog-numberheadings": "Башисемдәрҙе автоматик рәүештә номерлаe",
+       "tog-numberheadings": "Башисемдәрҙе автоматик рәүештә номерланһын",
        "tog-showtoolbar": "Мөхәррирләгән ваҡытта өҫкө ҡоралдар панелен күрһәтергә (JavaScript кәрәк)",
        "tog-editondblclick": "Биттәрҙе ике сиртеү менән мөхәррирләргә",
        "tog-editsectiononrightclick": "Бүлектәрҙе исемдәренә төрткөнөң уң яғына сиртеп үҙгәртергә",
        "october-date": "Октябрь $1",
        "november-date": "Ноябрь $1",
        "december-date": "Сентябрь $1",
-       "pagecategories": "{{PLURAL:$1|1=Категория|Категория}}",
+       "pagecategories": "{{PLURAL:$1|1=Категория|Категориялар}}",
        "category_header": "«$1» категорияһындағы биттәр",
        "subcategories": "Эске категориялар",
        "category-media-header": "«$1» категорияһындағы файлдар",
        "category-empty": "\"Был категория әлегә буш.\"",
-       "hidden-categories": "{{PLURAL:$1|1=Йәшерен категория|Йәшерен категориялар}}",
+       "hidden-categories": "{{PLURAL:$1|Йәшерен категория|Йәшерен категориялар}}",
        "hidden-category-category": "Йәшерен категориялар",
-       "category-subcat-count": "{{PLURAL:$2|1=Был категорияла тик киләһе эске категория ғына бар.|$2 эске категорияның $1 эске категорияһы күрһәтелгән.}}",
-       "category-subcat-count-limited": "Был категорияла {{PLURAL:$1|$1 эске категория}} бар.",
+       "category-subcat-count": "{{PLURAL:$2|Был категорияла тик киләһе эске категория ғына бар.|Барлығы $2 категориянан, был категорияла киләһе  {{PLURAL:$1|эске категория|$1 эске категория}} күрһәтелә.}}",
+       "category-subcat-count-limited": "Был категорияға киләһе {{PLURAL:$1|эске категория|$1 эске категория}} ингән.",
        "category-article-count": "{{PLURAL:$2|1=Был категорияла бер генә бит бар.|Категориялағы $2 биттең $1 бите күрһәтелгән.}}",
        "category-article-count-limited": "Был категорияла {{PLURAL:$1|$1 бит}} бар.",
        "category-file-count": "{{PLURAL:$2|Был категорияла бер генә файл бар.|Категориялағы $2 файлдың {{PLURAL:$1|$1 файлы күрһәтелгән}}.}}",
-       "category-file-count-limited": "Ð\91Ñ\83 категорияла {{PLURAL:$1|$1 файл}} бар.",
+       "category-file-count-limited": "Ð\91Ñ\8bл категорияла {{PLURAL:$1|$1 файл}} бар.",
        "listingcontinuesabbrev": "(дауамы)",
        "index-category": "Индексланған биттәр",
        "noindex-category": "Индексланмаған биттәр",
        "talkpagelinktext": "әңг.",
        "specialpage": "Ярҙамсы бит",
        "personaltools": "Шәхси ҡоралдар",
-       "postcomment": "Яңы бүлек",
        "articlepage": "Мәҡәләне ҡарап сығырға",
        "talk": "Әңгәмә",
        "views": "Ҡарауҙар",
        "invalidtitle-knownnamespace": "\"$2\" исем арауығы һәм \"$3\"  тексты исем өсөн ярамай",
        "invalidtitle-unknownnamespace": "\"$2\" тексты һәм \"$1\" арауыҡ өсөн билдәһеҙ номерлы исем ярамай",
        "exception-nologin": "Танылмағанһығыҙ",
-       "exception-nologin-text": "Ð\91Ñ\8bл Ð±Ð¸Ñ\82Ñ\82е Ò¡Ð°Ñ\80аÑ\80 Ð¹Ó\99ки Ò»Ð¾Ñ\80аÑ\82Ñ\8bлÒ\93ан Ò\93Ó\99мÓ\99лде Ð±Ð°Ñ\88ҡаÑ\80Ñ\8bÑ\80 Ó©Ñ\81өн Ñ\81иÑ\81Ñ\82емала Ñ\82анÑ\8bлÑ\8bÑ\83 кәрәк.",
+       "exception-nologin-text": "Ð\91Ñ\8bл Ð±Ð¸Ñ\82Ñ\82е Ò¡Ð°Ñ\80аÑ\83 Ð¹Ó\99ки Ò»Ð¾Ñ\80аÑ\82Ñ\8bлÒ\93ан Ò\93Ó\99мÓ\99лде Ð±Ð°Ñ\88ҡаÑ\80Ñ\8bÑ\83 Ó©Ñ\81өн Ñ\81иÑ\81Ñ\82емала [[Special:Userlogin|Ñ\82анÑ\8bлÑ\8bÑ\80Ò\93а]] кәрәк.",
        "virus-badscanner": "Көйләү хатаһы: Билдәһеҙ вирустар сканеры: ''$1''",
        "virus-scanfailed": "сканлау хатаһы ($1 коды)",
        "virus-unknownscanner": "беленмәгән антивирус:",
        "externaldberror": "Тышҡы мәғлүмәт базаһы менән танылғанда хата барлыҡҡа килде йәки тышҡы үҙ көйләүҙәрегеҙҙе үҙгәртер өсөн хоҡуҡтарығыҙ етәрле түгел.",
        "login": "Танылыу",
        "nav-login-createaccount": "Танылыу йәки теркәлеү",
-       "loginprompt": "{{SITENAME}} проектына кереү өсөн «cookies» рөхсәт ителгән булырға тейеш.",
        "userlogin": "Танылыу йәки теркәлеү",
        "userloginnocreate": "Танылыу",
        "logout": "Тамамлау",
        "nologinlink": "Иҫәп яҙыуын булдырырға",
        "createaccount": "Яңы ҡатнашыусыны теркәү",
        "gotaccount": "Әгәр Һеҙ теркәлеү үткән булһағыҙ? '''$1'''.",
-       "gotaccountlink": "Үҙегеҙ менән таныштырығыҙ",
+       "gotaccountlink": "Танылыу",
        "userlogin-resetlink": "Танылыу мәғлүмәттәрен оноттоғоҙмо?",
        "userlogin-resetpassword-link": "Серһүҙҙе ҡабул итмәү",
        "userlogin-loggedin": " Һеҙ {{GENDER:$1|$1}} булараҡ индегеҙ инде. Башҡа файҙаланыусы булып инер өсөн аҫтағы ҡалыпты ҡулланығыҙ.",
        "password-login-forbidden": "Был ҡатнашыусы исемен һәм серһүҙҙе ҡулланыу тыйылған",
        "mailmypassword": "Яңы серһүҙ ебәрергә",
        "passwordremindertitle": "{{SITENAME}} өсөн яңы ваҡытлыса серһүҙ",
-       "passwordremindertext": "Кемдер (бәлки, һеҙ, IP-адресы: $1) {{SITENAME}} ($4) өсөн яңы серһүҙ һоратты. $2 ҡатнашыусыһы өсөн ваҡытлыса яңы серһүҙ яһалды: $3. Әгәр был һеҙ булһағыҙ, системага керегеҙ һәм серһүҙ алмаштырығыҙ. Яңы серһүҙ $5 {{PLURAL:$5|көн}} ғәмәлдә буласаҡ.\n\nӘгәр һеҙ серһүҙҙе алмаштырыуҙы һоратмаған йәки онотоп кире иҫләгән булһағыҙ һәм үҙгәртергә теләмәһәгеҙ, был хәбәргә иғтибар итмәгеҙ һәм элекке серһүҙегеҙҙе ҡулланыуығыҙҙы дауам итегеҙ.",
+       "passwordremindertext": "Кемдер (бәлки, һеҙ, IP-адресы: $1) {{SITENAME}} ($4) өсөн яңы серһүҙ һоратты. $2 ҡатнашыусыһы өсөн ваҡытлыса яңы серһүҙ яһалды: $3. Әгәр был һеҙ булһағыҙ, системага керегеҙ һәм серһүҙ алмаштырығыҙ. Яңы серһүҙ $5 {{PLURAL:$5|көн}} ғәмәлдә буласаҡ.\n\nӘгәр һеҙ серһүҙҙе алмаштырыуҙы һоратмаған йәки онотоп кире иҫләгән булһағыҙ һәм үҙгәртергә теләмәһәгеҙ, был хәбәргә иғтибар итмәгеҙ һәм элекке серһүҙҙе ҡулланыуҙы дауам итегеҙ.",
        "noemail": "$1 исемле ҡулланыусы өсөн электрон почта адресы белдерелмәгән.",
        "noemailcreate": "Дөрөҫ электрон почта адресы күрһәтеү кәрәк",
        "passwordsent": "Яңы серһүҙ $1 исемле ҡатнашыусының электрон почта адресына ебәрелде.\n\nЗинһар, серһүҙҙе алғас, системаға яңынан керегеҙ.",
        "loginlanguagelabel": "Тел: $1",
        "suspicious-userlogout": "Һеҙҙең сеансты тамамлау тураһында һорауығыҙ кире ҡағылды, сөнки ул төҙөк булмаған браузер йәки кэшлаусы прокси тарафынан ебәрелгән һорауға оҡшаған.",
        "createacct-another-realname-tip": "Ысын исемегеҙ (мотлаҡ түгел).\nУны яҙып ҡуйһағыҙ, ул биткә кем төҙәтеү индергәнен күрһәтеү өсөн ҡулланыласаҡ.",
+       "pt-login": "Танылыу",
+       "pt-login-button": "Танылыу",
+       "pt-userlogout": "Тамамлау",
        "php-mail-error-unknown": "PHP-ның mail() функцияһында билдәһеҙ хата",
        "user-mail-no-addy": "Электрон почта адресы булмайынса электрон хәбәр ебәреп ҡараны",
        "user-mail-no-body": "Буш йә мәғәнәһеҙ йөкмәткеле ҡыҫҡа электрон хат ебәрергә тырышҡан.",
        "resetpass-wrong-oldpass": "Хаталы ваҡытлыса йәки ағымдағы серһүҙ.\nҺеҙ, бәлки, серһүҙегеҙҙе алмаштырғанһығыҙ йәки яңы серһүҙ һоратҡанһығыҙ.",
        "resetpass-temp-password": "Ваҡытлыса серһүҙ",
        "resetpass-abort-generic": "Серһүҙҙе үҙгәртеү киңәйеү тарафынан өҙөлдө.",
+       "resetpass-expired": "Һеҙҙең серһүҙҙең ғәмәл ваҡыты үткән. Зинһар, системала танылыу өсөн яңы серҙһүҙ ҡуйығыҙ.",
        "passwordreset": "Серһүҙҙе ташлатыу",
        "passwordreset-text-one": "Серһүҙегеҙҙе ташлар өсөн ош ҡалыпты тултырығыҙ.",
        "passwordreset-text-many": "{{PLURAL:$1|Серһүҙҙе ташлар өсөн яландарҙың береһен тултырығыҙ.}}",
        "accmailtext": "[[User talk:$1|$1]] өсөн осраҡлы яһалған серһүҙ $2 адресына ебәрелде.\n\nТанылғандан һуң был иҫәп яҙмаһы өсөн серһүҙҙе ''[[Special:ChangePassword|серһүҙҙе үҙгәртеү өсөн махсус биттә үҙгәртә алаһығыҙ]]''.",
        "newarticle": "(Яңы)",
        "newarticletext": "Һеҙ һылтанма буйынса әлегә яһалмаған биткә күстегеҙ.\nЯңы бит яһар өсөн аҫтағы тәҙрәгә текст керетегеҙ (тулыраҡ мәғлүмәт өсөн [$1 ярҙам битен] ҡарағыҙ).\nӘгәр был биткә яңылыш килеп эләккән булһағыҙ, браузерығыҙҙың '''артҡа''' төймәһенә баҫығыҙ.",
-       "anontalkpagetext": "----''Был фекер алышыу бите, иҫәп яҙыуы булдырмаған йәки уны ҡулланмаған аноним ҡатнашыусының бите.\nШуның өсөн ҡулланыусыны таныу өсөн IP-адресы ҡулланыла.\nӘгәр һеҙ аноним ҡулланыусы булһағыҙ һәм һеҙгә ебәрелмәгән хәбәрҙәр алдым тиһәгеҙ (бер IP-адрес күп ҡулланыусы өсөн булырға мөмкин) һәм башҡа бындай аңлашылмаусанлыҡтар килеп сыҡмаһын өсөн, зинар, [[Special:UserLogin|системаға керегеҙ]] йәки [[Special:UserLogin/signup|теркәлегеҙ]].''",
+       "anontalkpagetext": "----\n<em>Был фекер алышыу бите, иҫәп яҙыуы булдырмаған йәки уны ҡулланмаған аноним ҡатнашыусының бите.</em>\nШуның өсөн ҡулланыусыны таныу өсөн IP-адресы ҡулланыла.\nӘгәр һеҙ аноним ҡулланыусы булһағыҙ һәм һеҙгә ебәрелмәгән хәбәрҙәр алдым тиһәгеҙ (бер IP-адрес күп ҡулланыусы өсөн булырға мөмкин) һәм башҡа бындай аңлашылмаусанлыҡтар килеп сыҡмаһын өсөн, зинар, [[Special:UserLogin|системаға керегеҙ]] йәки [[Special:UserLogin/signup|теркәлегеҙ]].",
        "noarticletext": "Хәҙерге ваҡытта был биттә текст юҡ.\nҺеҙ [[Special:Search/{{PAGENAME}}|был исемде башҡа биттәрҙә эҙләй]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} тап килгән журнал яҙмаларын таба]\nйәки '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} бындай исемле яңы бит яһай]'''</span> алаһығыҙ.",
        "noarticletext-nopermission": "Хәҙерге ваҡытта был биттә текст юҡ.\nҺеҙ башҡа биттәрҙә [[Special:Search/{{PAGENAME}}|был исемде]] йәки\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналдағы яҙмаларҙы] эҙләй алаһығыҙ, тик һеҙҙең бит яһау хоҡуғығыҙ юҡ.</span>",
        "missing-revision": "\"{{FULLPAGENAME}}\" исемле биттең $1 номерлы өлгөһө юҡ.\n\nБыл хәл, ғәҙәттә, юйылған биткә яһалған һылтанманын ваҡыты үтеүенән барлыҡҡа килә.\nТулыраҡ мәғлүмәт өсөн ҡарағыҙ: [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} юйыу яҙмалары].",
        "revdelete-hide-text": "Биттең был версияһының текстын йәшерергә",
        "revdelete-hide-image": "Файл эстәлеген йәшерергә",
        "revdelete-hide-name": "Ғәмәлде һәм маҡсатын йәшерергә",
-       "revdelete-hide-comment": "Үҙгәртеү тасуирламаларын йәшерергә",
-       "revdelete-hide-user": "Мөхәррирләүсенең исемен/IP-адресын йәшерергә",
+       "revdelete-hide-comment": "Үҙгәртеүҙәр тасуирламаһы",
+       "revdelete-hide-user": "Мөхәррирләүсенең исеме/IP-адресы",
        "revdelete-hide-restricted": "Мәғлүмәттәрҙе хакимдәрҙән дә йәшерергә",
        "revdelete-radio-same": "(үҙгәртмәҫкә)",
-       "revdelete-radio-set": "Эйе",
-       "revdelete-radio-unset": "Юҡ",
+       "revdelete-radio-set": "Ð\99Ó\99Ñ\88еÑ\80ен",
+       "revdelete-radio-unset": "Ð\9aÒ¯Ñ\80енгÓ\99н",
        "revdelete-suppress": "Мәғлүмәттәрҙе шулай уҡ хакимдәрҙән дә йәшерергә",
        "revdelete-unsuppress": "Тергеҙелгән версияларҙан бар сикләүҙәрҙе алырға",
        "revdelete-log": "Сәбәп:",
-       "revdelete-submit": "Һайланған {{PLURAL:$1|1=версия|версиялар}} өсөн ҡулланырға",
+       "revdelete-submit": "Һайланған {{PLURAL:$1|версия|версиялар}} өсөн ҡулланырға",
        "revdelete-success": "'''Версия күренеүсәнлеге уңышлы үҙгәртелде.'''",
        "revdelete-failure": "'''Версия күренеүсәнлеген үҙгәртеп булмай:'''\n$1",
        "logdelete-success": "'''Яҙма күренеүсәнлеге үҙгәртелде.'''",
        "duplicate-defaultsort": "'''Иҫкәртеү:''' \"$2\" ғәҙәттәге тәпртипкә килтереү асҡысы элекке \"$1\" ғәҙәттәге тәртипкә килтереү асҡысын үҙгәртә.",
        "version": "MediaWiki өлгөһө",
        "version-extensions": "Ҡуйылған киңәйтеүҙәр",
+       "version-skins": "Күренештәр",
        "version-specialpages": "Махсус биттәр",
        "version-parserhooks": "Уҡыу ҡоралдары",
        "version-variables": "Үҙгәреүсән дәүмәлдәр",
        "version-antispam": "Спамға ҡаршы ҡорал",
-       "version-skins": "Күренештәр",
        "version-other": "Башҡалар",
        "version-mediahandlers": "Медиа эшкәртеүсе ҡоралдар",
        "version-hooks": "Эләктереп алыусылар",
index 52c7e41..f8947bb 100644 (file)
        "wantedcategories": "Bnutzde, ower néd åglégte Kategorien",
        "wantedpages": "Gwynschde Seiten",
        "wantedpages-badtitle": "Ungütiger Titel im Ergeewnis: $1",
-       "wantedfiles": "Fööhernde Daatein",
-       "wantedtemplates": "Fööhernde Vurlong",
+       "wantedfiles": "Datein, wo ma braucha",
+       "wantedtemplates": "Voalong, wo ma braucha",
        "mostlinked": "Haiffig valinkte Seiten",
        "mostlinkedcategories": "Haiffig brauchde Kategorien",
        "mostlinkedtemplates": "Haiffig brauchde Vurlong",
index 682264a..16385c7 100644 (file)
        "revdelete-text-text": "Выдаленыя вэрсіі будуць па-ранейшаму бачныя ў гісторыі старонкі, але некаторыя часткі іх зьместу будуць недаступныя для ўдзельнікаў.",
        "revdelete-text-file": "Выдаленыя вэрсіі файла будуць па-ранейшаму бачныя ў гісторыі старонкі, але часткі іх зьместу будуць недаступныя для ўдзельнікаў.",
        "logdelete-text": "Выдаленыя падзеі ў журнале будуць па-ранейшаму даступныя ў журналах, але часткі іх зьместу будуць недаступныя ўдзельнікам.",
-       "revdelete-text-others": "Іншыя адмністратары {{GRAMMAR:родны|{{SITENAME}}}} па-ранейшаму будуць мець магчымасьць пабачыць і аднавіць схаваны зьмест праз гэты ж інтэрфэйс, калі ня будуць усталяваныя дадатковыя абмежаваньні.",
+       "revdelete-text-others": "Іншыя адмністратары па-ранейшаму будуць мець магчымасьць пабачыць і аднавіць схаваны зьмест, калі ня будуць усталяваныя дадатковыя абмежаваньні.",
        "revdelete-confirm": "Калі ласка, пацьвердзіце, што Вы сапраўды жадаеце зрабіць гэта, разумееце наступствы і робіце гэта ў адпаведнасьці з [[{{MediaWiki:Policy-url}}|правіламі]].",
        "revdelete-suppress-text": "Скрываньне можа выкарыстоўвацца '''толькі''' ў наступных выпадках:\n* патэнцыйна паклёпніцкая інфармацыя\n* раскрыцьцё асабістых зьвестак\n*: ''хатнія адрасы, тэлефонныя нумары, нумары пашпартоў і г. д.''",
        "revdelete-legend": "Усталяваць абмежаваньні бачнасьці",
        "right-deletedtext": "прагляд выдаленага тэксту і зьменаў паміж выдаленымі вэрсіямі старонак",
        "right-browsearchive": "пошук выдаленых старонак",
        "right-undelete": "аднаўленьне старонак",
-       "right-suppressrevision": "прагляд і аднаўленьне вэрсіяў, схаваных ад адміністратараў",
+       "right-suppressrevision": "праглядаць, хаваць і аднаўляць пэўныя вэрсіі старонак, зробленыя любым удзельнікам",
+       "right-viewsuppressed": "праглядаць вэрсіі старонак, схаваныя ад усіх удзельнікаў",
        "right-suppressionlog": "прагляд прыватных журналаў",
        "right-block": "блякаваньне іншых удзельнікаў ад рэдагаваньняў",
        "right-blockemail": "блякаваньне іншых ўдзельнікаў ад дасылкі электроннай пошты",
        "pagelang-select-lang": "Абярыце мову",
        "right-pagelang": "Зьмяніць мову старонкі",
        "action-pagelang": "зьмену мовы старонкі",
-       "log-name-pagelang": "Журнал зьменаў мовы"
+       "log-name-pagelang": "Журнал зьменаў мовы",
+       "log-description-pagelang": "Гэта журнал зьменаў мовы старонак.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} мову старонкі $3 з $4 на $5."
 }
index 094e669..cfae5f8 100644 (file)
        "showdiff": "Розніца",
        "anoneditwarning": "Вы не ўвайшлі ў сістэму. Таму, калі вы запішаце старонку, у яе гісторыю трапіць ваш адрас IP.",
        "anonpreviewwarning": "''Вы не прайшлі ідэнтыфікацыю Захаванне будзе запісана з вашым IP адрасам у гісторыі правак гэтай старонкі.''",
-       "missingsummary": "'''Нагадваем''': вы не ўпісалі тлумачэння для сваёй праўкі. Калі націснуць Запісаць яшчэ раз, праўка будзе замацавана без тлумачэння.",
+       "missingsummary": "<strong>Нагадваем:</strong> вы не ўпісалі тлумачэння для сваёй праўкі. Калі націснуць \"{{int:savearticle}}\" яшчэ раз, праўка будзе замацавана без тлумачэння.",
        "missingcommenttext": "Калі ласка, увядзіце ніжэй каментарый.",
        "missingcommentheader": "'''Увага:''' вы нічога не ўпісалі ў тэму/загаловак гэтай заўвагі. Націсканне '{{int:savearticle}}' замацуе вашую праўку з пустой тэмай/загалоўкам.",
        "summary-preview": "Перадпаказ апісання:",
        "accmailtitle": "Быў адасланы пароль",
        "accmailtext": "На адрас $2 быў дасланы згенераваны пароль для [[User talk:$1|$1]]. Ён можа быць зменены на <em>[[Special:ChangePassword|старонцы змены пароля]]</em> пасля ўваходу ў сістэму.",
        "newarticle": "(Новы)",
-       "newarticletext": "Вы перайшлі да старонкі, якой яшчэ няма, і таму трапілі сюды. Каб пачаць новую старонку, пішыце яе тэкст у ніжэйпаказаным акне рэдагавання (падрабязнасці бач у [$1 даведцы]). Калі вы тут выпадкова, проста націсніце \"назад\" у браўзеры.",
+       "newarticletext": "Вы перайшлі да старонкі, якой яшчэ няма, і таму трапілі сюды. \nКаб пачаць новую старонку, пішыце яе тэкст у ніжэйпаказаным акне рэдагавання (падрабязнасці бач у [$1 даведцы]). \nКалі вы тут выпадкова, проста націсніце <strong>назад</strong> у браўзеры.",
        "anontalkpagetext": "----''Гэта старонка размовы з ананімным удзельнікам, які або не мае свайго рахунку, або ім не карыстаўся. Таму дзеля яго ці яе ідэнтыфікацыі мы мусім выкарыстаць лічбавы Адрас IP. Такі адрас IP могуць дзяліць між сабою некалькі асоб. Калі вы ананімны ўдзельнік, і лічыце, што атрымліваеце няслушныя заўвагі,[[Special:UserLogin/signup|стварыце рахунак]] або [[Special:UserLogin|акажыцеся]], каб вас больш не блыталі з іншымі ананімнымі ўдзельнікамі.''",
        "noarticletext": "Старонка не ўтрымлівае тэксту. Вы можаце [[Special:Search/{{PAGENAME}}|пашукаць гэткую назву]] ў іншых старонках ці <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах],\nабо [{{fullurl:{{FULLPAGENAME}}|action=edit}} папрацаваць з гэтай старонкай]</span>.",
        "noarticletext-nopermission": "Старонка не ўтрымлівае тэксту.\nВы можаце [[Special:Search/{{PAGENAME}}|пашукаць гэткую назву]] ў іншых старонках,\nці <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах]</span>, але вы не маеце дазволу на стварэнне гэтай старонкі.",
        "revdelete-text-text": "Сцёртыя версіі будуць па-ранейшаму паказвацца ў гісторыі старонкі, але частка іх зместу будзе недаступна для грамадскасці.",
        "revdelete-text-file": "Сцёртыя версіі файла будуць па-ранейшаму паказвацца ў гісторыі файла, але частка іх зместу будзе недаступна для грамадскасці.",
        "logdelete-text": "Сцёртыя запісы журнала будуць па-ранейшаму паказвацца ў журналах, але частка іх зместу будзе недаступна для грамадскасці.",
-       "revdelete-text-others": "Ð\86нÑ\88Ñ\8bÑ\8f Ð°Ð´Ð¼Ñ\96нÑ\96Ñ\81Ñ\82Ñ\80аÑ\82аÑ\80Ñ\8b Ð¿Ð»Ñ\8fÑ\86оÑ\9eкÑ\96 {{SITENAME}} Ð±Ñ\83дÑ\83Ñ\86Ñ\8c Ð¿Ð°-Ñ\80анейÑ\88амÑ\83 Ð¼ÐµÑ\86Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ð´Ð° Ñ\81Ñ\85аванага Ð·Ð¼ÐµÑ\81Ñ\82Ñ\83 Ñ\96 Ð·Ð¼Ð¾Ð³Ñ\83Ñ\86Ñ\8c Ð°Ð´Ð½Ð°Ð²Ñ\96Ñ\86Ñ\8c Ñ\8fго Ð¿Ñ\80аз Ð³Ñ\8dÑ\82Ñ\8b Ñ\81амÑ\8b Ñ\96нÑ\82Ñ\8dÑ\80Ñ\84ейÑ\81, калі не ўстанавіць дадатковыя абмежаванні.",
+       "revdelete-text-others": "Ð\86нÑ\88Ñ\8bÑ\8f Ð°Ð´Ð¼Ñ\96нÑ\96Ñ\81Ñ\82Ñ\80аÑ\82аÑ\80Ñ\8b Ð±Ñ\83дÑ\83Ñ\86Ñ\8c Ð¿Ð°-Ñ\80анейÑ\88амÑ\83 Ð¼ÐµÑ\86Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ð´Ð° Ñ\81Ñ\85аванага Ð·Ð¼ÐµÑ\81Ñ\82Ñ\83 Ñ\96 Ð·Ð¼Ð¾Ð³Ñ\83Ñ\86Ñ\8c Ð°Ð´Ð½Ð°Ð²Ñ\96Ñ\86Ñ\8c Ñ\8fго, калі не ўстанавіць дадатковыя абмежаванні.",
        "revdelete-confirm": "Пацвердзіце, што вы жадаеце гэта зрабіць, што вы разумееце наступствы, і што вы робіце гэта ў адпаведнасці з [[{{MediaWiki:Policy-url}}|арганізацыйнымі правіламі]].",
        "revdelete-suppress-text": "Заглушэнне належыць ужываць <strong>выключна</strong> ў наступных выпадках:\n* патэнцыяльна паклёпніцкія звесткі\n* недапушчальная асабістая інфармацыя\n*: <em>хатнія адрасы і тэлефоны, нумары страхавання і г.д.</em>",
        "revdelete-legend": "Настроіць абмежаванні бачнасці",
        "right-deletedtext": "Адкрыць выдалены тэкст і ўсе змены паміж выдаленымі версіямі",
        "right-browsearchive": "Шукаць у сцёртых старонках",
        "right-undelete": "Аднаўляць старонкі",
-       "right-suppressrevision": "Бачыць і аднаўляць версіі, схаваныя ад адміністратараў",
+       "right-suppressrevision": "Бачыць, хаваць і адкрываць схаваныя асобныя версіі ад усіх удзельнікаў",
+       "right-viewsuppressed": "Бачыць версіі, схаваныя ад усіх удзельнікаў",
        "right-suppressionlog": "Чытаць прыватныя журналы",
        "right-block": "Забараняць праўкі іншым удзельнікам",
        "right-blockemail": "Забараняць удзельніку адсыланне эл.пошты",
        "pageinfo-header-properties": "Уласцівасці старонкі",
        "pageinfo-display-title": "Паказаная назва",
        "pageinfo-default-sort": "Прадвызначаны ключ парадкавання",
-       "pageinfo-length": "Ð\94аÑ\9eжÑ\8bнÑ\8f старонкі (у байтах)",
+       "pageinfo-length": "Ð\90б'Ñ\91м старонкі (у байтах)",
        "pageinfo-article-id": "Ідэнтыфікатар старонкі",
        "pageinfo-language": "Мова змесціва старонкі",
        "pageinfo-content-model": "Мадэль змесціва старонкі",
index 0198e96..d8ad25d 100644 (file)
        "talkpagelinktext": "Kaozeal",
        "specialpage": "Pajenn dibar",
        "personaltools": "Ostilhoù personel",
-       "postcomment": "Rann nevez",
        "articlepage": "Sellet ouzh ar pennad",
        "talk": "Kaozeadenn",
        "views": "Gweladennoù",
        "externaldberror": "Pe ez eus bet ur fazi gwiriekaat diavaez er bank titouroù pe n'oc'h ket aotreet da nevesaat ho kont diavaez.",
        "login": "Kevreañ",
        "nav-login-createaccount": "Krouiñ ur gont pe kevreañ",
-       "loginprompt": "Ret eo deoc'h bezañ gweredekaet an toupinoù a-benn gellout kevreañ ouzh {{SITENAME}}.",
        "userlogin": "Kevreañ / krouiñ ur gont",
        "userloginnocreate": "Kevreañ",
        "logout": "Digevreañ",
        "license-nopreview": "(Dibosupl rakwelet)",
        "upload_source_url": " (Un URL reizh a c'hall bezañ tizhet gant an holl)",
        "upload_source_file": " (ur restr war hoc'h urzhiataer)",
+       "listfiles-delete": "dilemel",
        "listfiles-summary": "Diskouez a ra ar bajenn dibar-mañ an holl restroù bet ezporzhiet.",
        "listfiles_search_for": "Klask anv ar skeudenn :",
        "imgfile": "restr",
        "watchlistedit-raw-removed": "Tennet ez eus bet {{PLURAL:$1|1 pajenn|$1 pajenn}} :",
        "watchlistedit-clear-legend": "Diverkañ ar roll-evezhiañ",
        "watchlistedit-clear-titles": "Titloù :",
+       "watchlistedit-too-many": "Re a bajennoù zo da ziskwel amañ.",
        "watchlisttools-clear": "Diverkañ ar roll-evezhiañ",
        "watchlisttools-view": "Gwelet ar c'hemmoù degaset",
        "watchlisttools-edit": "Gwelet ha kemmañ ar roll evezhiañ",
        "version-hook-name": "Anv ar galv",
        "version-hook-subscribedby": "Termenet gant",
        "version-version": "($1)",
+       "version-no-ext-name": "[anv ebet]",
        "version-license": "Aotre-implijout MediaWiki",
        "version-ext-license": "Aotre-implijout",
        "version-ext-colheader-name": "Astenn",
+       "version-skin-colheader-name": "Gwiskadur",
        "version-ext-colheader-version": "Stumm",
        "version-ext-colheader-license": "Aotre-implijout",
        "version-ext-colheader-description": "Deskrivadur",
        "pagelang-language": "Yezh",
        "pagelang-use-default": "Implijout ar yezh dre ziouer",
        "pagelang-select-lang": "Dibab ar yezh",
-       "right-pagelang": "Cheñch yezh ar bajenn"
+       "right-pagelang": "Cheñch yezh ar bajenn",
+       "action-pagelang": "cheñch yezh ar bajenn"
 }
index 8ec8bb8..c42235a 100644 (file)
        "hidden-category-category": "Sakrivene kategorije",
        "category-subcat-count": "{{PLURAL:$2|Ova kategorija ima sljedeću podkategoriju.|Ova kategorija ima {{PLURAL:$1|sljedeću podkategoriju|sljedeće $1 podkategorije|sljedećih $1 podkategorija}}, od $2 ukupno.}}",
        "category-subcat-count-limited": "Ova kategorija sadrži {{PLURAL:$1|slijedeću $1 podkategoriju|slijedeće $1 podkategorije|slijedećih $1 podkategorija}}.",
-       "category-article-count": "{{PLURAL:$2|U ovoj kategoriji se nalazi $1 članak.|{{PLURAL:$1|Prikazan je $1 članak|Prikazana su $1 članka|Prikazano je $1 članaka}} od ukupno $2 u ovoj kategoriji.}}",
+       "category-article-count": "{{PLURAL:$2|U ovoj kategoriji nalazi se $1 članak.|{{PLURAL:$1|Prikazan je $1 članak|Prikazana su $1 članka|Prikazano je $1 članaka}} od ukupno $2 u ovoj kategoriji.}}",
        "category-article-count-limited": "{{PLURAL:$1|Slijedeća $1 stranica je|Slijedeće $1 stranice su|Slijedećih $1 stranica je}} u ovoj kategoriji.",
        "category-file-count": "{{PLURAL:$2|Ova kategorija ima slijedeću $1 datoteku.|{{PLURAL:$1|Prikazana je $1 datoteka|Prikazane su $1 datoteke|Prikazano je $1 datoteka}} u ovoj kategoriji, od ukupno $2.}}",
        "category-file-count-limited": "{{PLURAL:$1|Slijedeća $1 datoteka je|Slijedeće $1 datoteke su|Slijedećih $1 datoteka je}} u ovoj kategoriji.",
        "readonly": "Baza je zaključana",
        "enterlockreason": "Unesite razlog za zaključavanje, uključujući procjenu vremena otključavanja",
        "readonlytext": "Baza je trenutno zaključana za nove unose i ostale izmjene, vjerovatno zbog rutinskog održavanja, posle čega će biti vraćena u uobičajeno stanje.\n\nAdministrator koji ju je zaključao je ponudio ovo objašnjenje: $1",
-       "missing-article": "U bazi podataka nije pronađen tekst stranice tražen pod nazivom \"$1\" $2.\n\nDo ovoga dolazi kada se prati pomjeranje ili historija linka za stranicu koja je pobrisana.\n\n\nU slučaju da se ne radi o gore navedenom, moguće je da ste pronašli grešku u programu.\nMolimo Vas da ovo prijavite [[Special:ListUsers/sysop|administratoru]] sa navođenjem tačne adrese stranice",
+       "missing-article": "U bazi podataka nije pronađen tekst stranice tražen pod nazivom \"$1\" $2.\n\nDo ovoga dolazi kad se prati pomjeranje ili historija linka za stranicu koja je pobrisana.\n\n\nU slučaju da se ne radi o gore navedenom moguće je da ste pronašli grešku u programu.\nMolimo Vas da ovo prijavite [[Special:ListUsers/sysop|administratoru]] s navođenjem tačne adrese stranice.",
        "missingarticle-rev": "(revizija#: $1)",
        "missingarticle-diff": "(Razlika: $1, $2)",
        "readonly_lag": "Baza podataka je zaključana dok se sekundarne baze podataka na serveru ne sastave sa glavnom.",
        "userexists": "Korisničko ime koje ste unijeli je već u upotrebi.\nMolimo Vas da izaberete drugo ime.",
        "loginerror": "Greška pri prijavljivanju",
        "createaccounterror": "Ne može se napraviti račun: $1",
-       "nocookiesnew": "Korisnički nalog je napravljen, ali niste prijavljeni.  {{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili.  Vi ste onemogućili kolačiće na Vašem računaru.  Molimo Vas da ih omogućite, a onda se prijavite sa svojim novim korisničkim imenom i šifrom.",
+       "nocookiesnew": "Korisnički nalog je napravljen, ali niste prijavljeni. {{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili.  Vi ste onemogućili kolačiće na Vašem računaru. Molimo Vas da ih omogućite, a onda se prijavite sa svojim novim korisničkim imenom i šifrom.",
        "nocookieslogin": "{{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili.  Vi ste onemogućili kolačiće na Vašem kompjuteru.  Molimo Vas da ih omogućite i da pokušate ponovo sa prijavom.",
        "nocookiesfornew": "Korisnički račun nije napravljen, jer nismo mogli da potvrdimo njegov izvor.\nProvjerite da li su cookies omogućeni, ponovo učitajte ovu stranicu i pokušajte ponovo.",
        "noname": "Niste izabrali ispravno korisničko ime.",
        "loginsuccesstitle": "Prijavljivanje uspješno",
        "loginsuccess": "'''Sad ste prijavljeni na {{SITENAME}} kao \"$1\".'''",
-       "nosuchuser": "Ne postoji korisnik sa imenom \"$1\".\nKorisnička imena razlikuju velika i mala slova.\nProvjerite vaše kucanje ili [[Special:UserLogin/signup|napravite novi korisnički račun]].",
-       "nosuchusershort": "Ne postoji korisnik sa imenom \"$1\".\nProvjerite da li ste dobro ukucali.",
+       "nosuchuser": "Ne postoji korisnik s imenom \"$1\".\nKorisnička imena razlikuju velika i mala slova.\nProvjerite Vaš unos ili [[Special:UserLogin/signup|napravite novi korisnički račun]].",
+       "nosuchusershort": "Ne postoji korisnik s imenom \"$1\".\nProvjerite jeste li dobro ukucali.",
        "nouserspecified": "Morate izabrati korisničko ime.",
        "login-userblocked": "Ovaj korisnik je blokiran. Prijava nije dopuštena.",
        "wrongpassword": "Unijeli ste neispravnu šifru.\nMolimo Vas da pokušate ponovno.",
        "userjspreview": "'''Zapamtite ovo je samo izgled vaše JavaScript-e, još uvijek nije sačuvan!'''",
        "sitecsspreview": "'''Zapamtite ovo je samo izgled ovog CSS-a.'''\n'''Još uvijek nije sačuvan!'''",
        "sitejspreview": "'''Zapamtite ovo je samo izgled ovog koda JavaScripte.'''\n'''Još uvijek nije sačuvan!'''",
-       "userinvalidcssjstitle": "'''Upozorenje:''' Ne postoji interfejs pod imenom \"$1\".\nNe zaboravite da imena stranica s .css i .js kodom počinju malim slovom, npr. {{ns:user}}:Foo/vector.css, a ne {{ns:user}}:Foo/Vector.css.",
+       "userinvalidcssjstitle": "'''Upozorenje:''' Ne postoji interfejs pod imenom \"$1\".\nNe zaboravite da imena stranica s .css i .js kodom počinju malim slovom, npr, {{ns:user}}:Foo/vector.css, a ne {{ns:user}}:Foo/Vector.css.",
        "updated": "(Osvježeno)",
        "note": "'''Pažnja:'''",
        "previewnote": "'''Ne zaboravite da je ovo samo pregled'''\nIzmjene stranice nisu još sačuvane!",
        "continue-editing": "Idi na područje uređivanja",
-       "previewconflict": "Ovaj pregled reflektuje tekst u gornjem polju\nkako će izgledati ako pritisnete \"Sačuvaj članak\".",
+       "previewconflict": "Ovaj pregled prikazuje kako će tekst u gornjem polju\nizgledati ako kliknete \"Sačuvaj članak\".",
        "session_fail_preview": "'''Izvinjavamo se! Nismo mogli obraditi vašu izmjenu zbog gubitka podataka o prijavi. Molimo pokušajte ponovno. Ako i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]] i ponovno prijaviti.'''",
        "session_fail_preview_html": "'''Žao nam je! Nismo mogli da obradimo vašu izmjenu zbog gubitka podataka.'''\n\n''Zbog toga što {{SITENAME}} ima omogućen izvorni HTML, predpregled je sakriven kao predostrožnost protiv JavaScript napada.''\n\n'''Ako ste pokušali da napravite pravu izmjenu, molimo pokušajte ponovo. Ako i dalje ne radi, pokušajte da se [[Special:UserLogout|odjavite]] i ponovo prijavite.'''",
        "token_suffix_mismatch": "'''Vaša izmjena nije prihvaćena jer je Vaš web preglednik ubacio znakove interpunkcije u token uređivanja.\nIzmjena je odbačena da bi se spriječilo uništavanje teksta stranice.\nTo se događa ponekad kad korisite problematični anonimni proxy koji je baziran na web-u.'''",
        "right-createtalk": "Pravljenje stranica za razgovor",
        "right-createaccount": "Pravljenje korisničkog računa",
        "right-minoredit": "Označavanje izmjena kao malih",
-       "right-move": "Pomjeranje stranica",
-       "right-move-subpages": "Pomjeranje stranica sa svim podstranicama",
+       "right-move": "Preusmjeravanje stranica",
+       "right-move-subpages": "Preusmjeravanje stranica sa svim podstranicama",
        "right-move-rootuserpages": "Premještanje stranica osnovnih korisnika",
        "right-movefile": "Premještanje datoteka",
        "right-suppressredirect": "Ne pravi preusmjeravanje sa starog imena pri preusmjeravanju stranica",
        "upload_directory_missing": "Folder za postavljanje ($1) nedostaje i webserver ga ne može napraviti.",
        "upload_directory_read_only": "Folder za postavljanje ($1) na webserveru je postavljen samo za čitanje.",
        "uploaderror": "Greška pri slanju",
-       "upload-recreate-warning": "'''Upozorenje: Datoteka s tim imenom je obrisana ili pomjerena.'''\nZapisnik brisanja i pomjeranja za ovu stranicu je dostupan ovdje na uvid:",
+       "upload-recreate-warning": "'''Upozorenje: Datoteka s tim imenom je obrisana ili preusmjerena.'''\nZapisnik brisanja i preusmjeravanja za ovu stranicu dostupan je ovdje:",
        "uploadtext": "Koristite formu ispod za postavljanje datoteka.\nDa bi ste vidjeli ili pretražili ranije postavljene datoteke, pogledajte [[Special:FileList|spisak postavljenih datoteka]], ponovna postavljanja su također zapisana u [[Special:Log/upload|zapisnik postavljanja]], a brisanja u [[Special:Log/delete|zapisnik brisanja]].\n\nDa bi ste prikazali datoteku na stranici, koristite link na jedan od slijedećih načina:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Datoteka.jpg]]</nowiki></code>''' da upotrijebite potpunu veziju datoteke\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Datoteka.png|200px|thumb|lijevo|opis slike]]</nowiki></code>''' da upotrijebite smanjeni prikaz širine 200 piksela unutar okvira, s lijevim poravnanjem i ''opisom slike''.\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Datoteka.ogg]]</nowiki></code>''' za direkno povezivanje datoteke bez njenog prikazivanja",
        "upload-permitted": "Podržane vrste datoteka: $1.",
        "upload-preferred": "Preferirane vrste datoteka: $1.",
        "fileexists-extension": "Datoteka sa sličnim nazivom postoji: [[$2|thumb]]\n* Naziv datoteke koja se postavlja: <strong>[[:$1]]</strong>\n* Naziv postojeće datoteke: <strong>[[:$2]]</strong>\nMolimo Vas da izaberete drugačiji naziv.",
        "fileexists-thumbnail-yes": "Izgleda da je datoteka slika smanjene veličine ''(\"thumbnail\")''. [[$1|thumb]]\nMolimo provjerite datoteku <strong>[[:$1]]</strong>.\nAko je provjerena datoteka ista slika originalne veličine, nije potrebno postavljati dodatnu sliku.",
        "file-thumbnail-no": "Naziv datoteke počinje sa <strong>$1</strong>.\nIzgleda da se radi o smanjenoj slici ''(\"thumbnail\")''.\nAko imate ovu sliku u punoj rezoluciji, postavite nju; ili promijenite naslov ove datoteke.",
-       "fileexists-forbidden": "Datoteka sa ovim imenom već postoji i ne može biti prepisana.\nAko i dalje želite da postavite ovu datoteku, molimo Vas da se vratite i pošaljete ovu datoteku pod novim imenom. [[File:$1|thumb|center|$1]]",
-       "fileexists-shared-forbidden": "Datoteka sa ovim imenom već postoji u zajedničkoj ostavi; molimo Vas da se vratite i pošaljete ovu datoteku pod novim imenom. [[File:$1|thumb|center|$1]]",
+       "fileexists-forbidden": "Datoteka s ovim imenom već postoji i ne može biti prepisana.\nAko i dalje želite postaviti ovu datoteku, molimo Vas da se vratite i pošaljete ovu datoteku pod novim imenom. [[File:$1|thumb|center|$1]]",
+       "fileexists-shared-forbidden": "Datoteka s ovim imenom već postoji u zajedničkoj ostavi. Molimo Vas da se vratite i pošaljete ovu datoteku pod novim imenom. [[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "Ova datoteka je dvojnik {{PLURAL:$1|slijedećoj datoteci|slijedećim datotekama}}:",
        "file-deleted-duplicate": "Datoteka koje je identična ovoj datoteci ([[:$1]]) je ranije bila obrisana. Trebate provjeriti historiju brisanja te datoteke prije nego što nastavite sa njenim ponovnim postavljanjem.",
        "uploadwarning": "Upozorenje pri slanju",
        "upload-description": "Opis datoteke",
        "upload-options": "Opcije postavljanja",
        "watchthisupload": "Prati ovu datoteku",
-       "filewasdeleted": "Datoteka s ovim nazivom je ranije postavljana i nakon toga obrisana.\nPrije nego što nastavite da je ponovno postavite trebate provjeriti $1.",
+       "filewasdeleted": "Datoteka s ovim nazivom je ranije postavljana i nakon toga obrisana.\nPrije no što nastavite da je ponovo postavite trebate provjeriti $1.",
        "filename-bad-prefix": "Naziv datoteke koju postavljate počinje sa '''\"$1\"''', što je naziv koji obično automatski dodjeljuju digitalni fotoaparati i kamere.\nMolimo Vas da odaberete naziv datoteke koji opisuje njen sadržaj.",
        "filename-prefix-blacklist": " #<!-- ostavite ovu liniju onakvom kakva jeste --> <pre>\n# Sintaksa je slijedeća:\n#   * Sve od karaktera \"#\" pa do kraja je komentar\n#   * Svaka neprazna linija je prefiks za tipična imena datoteka koja automatski dodjeljuje digitalna kamera\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # neki mobilni telefoni\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # razni\n #</pre> <!-- ostavite ovu liniju onakvom kakva jeste -->",
        "upload-success-subj": "Uspješno slanje",
        "protectedpages-indef": "Samo neograničena zaštićenja",
        "protectedpages-cascade": "Samo prenosive zaštite",
        "protectedpages-noredirect": "Sakrij preusmjerenja",
-       "protectedpagesempty": "Trenutno nijedna stranica nije zaštićena ovim parametrima.",
+       "protectedpagesempty": "Trenutno nijedna stranica nije zaštićena ovim parametrima.",
        "protectedpages-page": "Stranica",
        "protectedpages-expiry": "Istječe",
        "protectedpages-reason": "Razlog",
        "protectedpages-unknown-timestamp": "Nepoznato",
        "protectedtitles": "Zaštićeni naslovi",
-       "protectedtitlesempty": "Nema naslova zaštićenih članaka sa ovim parametrima.",
+       "protectedtitlesempty": "Nijedan naslov članka trenutno nije zaštićen ovim parametrima.",
        "listusers": "Spisak korisnika",
        "listusers-editsonly": "Pokaži samo korisnike koji su uređivali",
        "listusers-creationsort": "Sortiraj po datumu pravljenja",
        "move": "Preusmjeri",
        "movethispage": "Premjesti ovu stranicu",
        "unusedimagestext": "Slijedeće datoteke postoje ali nisu uključene ni u jednu stranicu.\nMolimo obratite pažnju da druge web stranice mogu biti povezane s datotekom putem direktnog URLa, tako da i pored toga mogu biti prikazane ovdje pored aktivne upotrebe.",
-       "unusedcategoriestext": "Slijedeće stranice kategorija postoje iako ih ni jedan drugi članak ili kategorija ne koriste.",
+       "unusedcategoriestext": "Sljedeće stranice kategorija postoje iako ih nijedan drugi članak ili kategorija ne koriste.",
        "notargettitle": "Nema cilja",
        "notargettext": "Niste naveli ciljnu stranicu ili korisnika\nna kome bi se izvela ova funkcija.",
        "nopagetitle": "Ne postoji takva stranica",
        "all-logs-page": "Svi javni registri",
        "alllogstext": "Zajednički prikaz svih dostupnih zapisa sa {{SITENAME}}.\nMožete specificirati prikaz izabiranjem specifičnog spiska, korisničkog imena ili promjenjenog članka (razlikovati velika slova).",
        "logempty": "Ne postoji takav zapis.",
-       "log-title-wildcard": "Traži naslove koji počinju ovim tekstom",
+       "log-title-wildcard": "Traži naslove koji počinju ovim tekstom",
        "showhideselectedlogentries": "Pokaži/sakrij izabrane zapise u evidenciji",
        "allpages": "Sve stranice",
        "nextpage": "Sljedeća strana ($1)",
        "confirmdeletetext": "Brisanjem ćete obrisati stranicu ili sliku zajedno sa historijom iz baze podataka, ali će se iste moći vratiti kasnije.\nMolim potvrdite svoju namjeru, da razumijete posljedice i da ovo radite u skladu sa [[{{MediaWiki:Policy-url}}|pravilima]].",
        "actioncomplete": "Akcija završena",
        "actionfailed": "Akcija nije uspjela",
-       "deletedtext": "Članak \"$1\" je obrisan.\nPogledajte $2 za zapis o skorašnjim brisanjima.",
+       "deletedtext": "Članak \"$1\" je obrisan.\nPogledajte $2 za zapisnik nedavnih brisanja.",
        "dellogpage": "Protokol brisanja",
        "dellogpagetext": "Ispod je spisak najskorijih brisanja.",
        "deletionlog": "zapis brisanja",
        "blockipsuccesssub": "Blokiranje je uspjelo",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] je {{GENDER:$1|blokiran|blokirana|blokiran}}.<br />\nPogledajte [[Special:BlockList|spisak blokiranja]] za pregled blokiranja.",
        "ipb-blockingself": "Ovom akcijom ćete blokirati sebe! Da li ste sigurni da to želite?",
-       "ipb-confirmhideuser": "Upravo ćete blokirati korisnika sa uključenom opcijom ''sakrij korisnika''. Ovim će korisničko ime biti sakriveno u svim spiskovima i stavkama zapisnika. Da li ste sigurni da to želite?",
+       "ipb-confirmhideuser": "Upravo ćete blokirati korisnika s uključenom opcijom \"Sakrij korisnika\". Ovim će korisničko ime biti sakriveno u svim spiskovima i stavkama zapisnika. Jeste li sigurni da to želite?",
        "ipb-edit-dropdown": "Uredi razloge blokiranja",
        "ipb-unblock-addr": "Deblokiraj $1",
        "ipb-unblock": "Deblokiraj korisničko ime ili IP adresu",
        "lockfilenotwritable": "Datoteka zaključavanja baze je zaštićena za pisanje.\nAko želite otključati ili zaključati bazu, ova datoteka mora biti omogućena za pisanje od strane web servera.",
        "databasenotlocked": "Baza podataka nije zaključana.",
        "lockedbyandtime": "(od $1 dana $2 u $3)",
-       "move-page": "Pomjeranje $1",
+       "move-page": "Preusmjeravanje $1",
        "move-page-legend": "Premjestite stranicu",
-       "movepagetext": "Korištenjem ovog formulara možete preimenovati stranicu, premještajući cijelu historiju na novo ime.\nČlanak pod starim imenom će postati stranica koja preusmjerava na članak pod novim imenom. \nMožete automatski izmjeniti preusmjerenje do izvornog naslova.\nAko se ne odlučite na to, provjerite [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|neispravna preusmjeravanja]].\nDužni ste provjeriti da svi linkovi i dalje nastave voditi na prave stranice.\n\nImajte na umu da članak '''neće''' biti preusmjeren ukoliko već postoji članak pod imenom na koje namjeravate da preusmjerite osim u slučaju stranice za preusmjeravanje koja nema nikakvih starih izmjena.\nTo znači da možete vratiti stranicu na prethodno mjesto ako pogriješite, ali ne možete zamijeniti postojeću stranicu.\n\n'''Pažnja!'''\nOvo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice;\nMolimo dobro razmislite prije nego što preimenujete stranicu.",
-       "movepagetext-noredirectfixer": "Koristeći obrazac ispod ćete preimenovati stranicu i premjestiti cijelu njenu historiju na novi naziv.\nStari naziv će postati preusmjerenje na novi naziv.\nMolimo provjerite da li postoje [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nedovršena preusmjerenja]].\nVi ste za to odgovorni te morate provjeriti da li su linkovi ispravni i da li vode tamo gdje bi trebali.\n\nImajte na umu da stranica '''neće''' biti premještena ako već postoji stranica s tim imenom, osim ako je prazna ili je preusmjerenje ili nema ranije historije.\nOvo znali da možete preimenovati stranicu nazad gdje je ranije bila preimenovana ako ste pogriješili a ne možete ponovo preimenovati postojeću stranicu.\n\n'''Pažnja!'''\nImajte na umu da preusmjeravanje popularnog članka može biti\ndrastična i neočekivana promjena za korisnike; molimo budite sigurni da ste shvatili posljedice prije nego što nastavite.",
+       "movepagetext": "Korištenjem ovog formulara možete preimenovati stranicu, premještajući cijelu historiju na novo ime.\nČlanak pod starim imenom postat će stranica koja preusmjerava na članak pod novim imenom. \nMožete automatski izmijeniti preusmjerenje do izvornog naslova.\nAko se ne odlučite na to, provjerite [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|neispravna preusmjeravanja]].\nDužni ste provjeriti da svi linkovi i dalje nastave voditi na prave stranice.\n\nImajte na umu da članak '''neće''' biti preusmjeren ako već postoji članak pod imenom na koje ga namjeravate preusmjeriti osim u slučaju stranice za preusmjeravanje koja nema nikakvih starih izmjena.\nTo znači da možete vratiti stranicu na prethodno mjesto ako pogriješite, ali ne možete zamijeniti postojeću stranicu.\n\n'''Pažnja!'''\nOvo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice.\nMolimo da dobro razmislite prije no što preimenujete stranicu.",
+       "movepagetext-noredirectfixer": "Koristeći donji obrazac, preimenovat ćete stranicu i premjestiti cijelu njenu historiju na novi naziv.\nStari naziv postat će preusmjerenje na novi naziv.\nMolimo da provjerite postoje li [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nedovršena preusmjerenja]].\nVi ste za to odgovorni te morate provjeriti jesu li linkovi ispravni i vode li tamo kamo bi trebali voditi.\n\nImajte na umu da stranica '''neće''' biti premještena ako već postoji stranica s tim imenom, osim ako je prazna ili je preusmjerenje ili nema ranije historije.\nOvo znači da možete preimenovati stranicu nazad gdje je ranije bila preimenovana ako ste pogriješili, ali ne možete ponovo preimenovati postojeću stranicu.\n\n'''Pažnja!'''\nImajte na umu da preusmjeravanje popularnog članka može biti\ndrastična i neočekivana promjena za korisnike; molimo da budete sigurni da ste shvatili posljedice prije no što nastavite.",
        "movepagetalktext": "Odgovarajuća stranica za razgovor, ako postoji, će automatski biti premještena istovremeno '''osim:'''\n*Ako premještate stranicu preko imenskih prostora,\n*Neprazna stranica za razgovor već postoji pod novim imenom, ili\n*Odčekirajte donju kutiju.\n\nU tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.",
        "movearticle": "Premjestite stranicu",
        "moveuserpage-warning": "'''Upozorenje:''' Premještate korisničku stranicu. Molimo da zapamtite da će se samo stranica premjestiti a korisnik se ''neće'' preimenovati.",
        "movepagebtn": "pomjerite stranicu",
        "pagemovedsub": "Premještanje uspjelo",
        "movepage-moved": "'''\"$1\" je premještena na \"$2\"'''",
-       "movepage-moved-redirect": "Pomjeranje je napravljeno.",
+       "movepage-moved-redirect": "Preusmjerenje je napravljeno.",
        "movepage-moved-noredirect": "Pravljenje preusmjerenja je onemogućeno.",
-       "articleexists": "Stranica pod tim imenom već postoji, ili je ime koje ste izabrali neispravno.  Molimo Vas da izaberete drugo ime.",
+       "articleexists": "Stranica pod tim imenom već postoji ili je ime koje ste izabrali neispravno. Molimo Vas da izaberete drugo ime.",
        "cantmove-titleprotected": "Ne možete premjestiti stranicu na ovu lokaciju, jer je novi naslov zaštićen od pravljenja",
        "movetalk": "Premjestite \"stranicu za razgovor\" takođe, ako je moguće.",
        "move-subpages": "Premjesti sve podstranice (do $1)",
        "tooltip-pt-login": "Predlažemo da se prijavite, ali nije obvezno.",
        "tooltip-pt-logout": "Odjava sa projekta {{SITENAME}}",
        "tooltip-ca-talk": "Razgovor o sadržaju",
-       "tooltip-ca-edit": "Možete da uređujete ovaj članak. Molimo Vas, koristite dugme \"Prikaži izgled",
+       "tooltip-ca-edit": "Možete uređivati ovaj članak. Molimo Vas, koristite dugme \"Prikaži izgled\" prije spašavanja izmjena.",
        "tooltip-ca-addsection": "Započnite novu sekciju.",
        "tooltip-ca-viewsource": "Ovaj članak je zaključan. Možete ga samo vidjeti ili kopirati kod.",
        "tooltip-ca-history": "Prethodne verzije ove stranice.",
        "tooltip-ca-watch": "Dodajte stranicu u listu praćnih članaka",
        "tooltip-ca-unwatch": "Izbrišite stranicu sa liste praćnih članaka",
        "tooltip-search": "Pretraži projekat {{SITENAME}}",
-       "tooltip-search-go": "Idi na stranicu sa tačno ovim imenom ako postoji",
-       "tooltip-search-fulltext": "Pretraga stranica sa ovim tekstom",
+       "tooltip-search-go": "Idi na stranicu s tačno ovim imenom ako postoji",
+       "tooltip-search-fulltext": "Pretražite stranice s ovim tekstom",
        "tooltip-p-logo": "Glavna stranica",
        "tooltip-n-mainpage": "Posjetite početnu stranicu",
        "tooltip-n-mainpage-description": "Posjetite početnu stranicu",
        "tooltip-n-recentchanges": "Spisak nedavnih izmjena na wiki.",
        "tooltip-n-randompage": "Otvorite slučajan članak",
        "tooltip-n-help": "Mjesto gdje možete nešto da naučite.",
-       "tooltip-t-whatlinkshere": "Spisak svih članaka koji su povezani sa ovim",
+       "tooltip-t-whatlinkshere": "Spisak svih članaka koji su povezani s ovim",
        "tooltip-t-recentchangeslinked": "Nedavne izmjene na stranicama koje su povezane sa ovom",
        "tooltip-feed-rss": "RSS za ovu stranicu",
        "tooltip-feed-atom": "Atom za ovu stranicu",
        "scarytranscludefailed-httpstatus": "[Preuzimanje šablona nije uspjelo za $1: HTTP $2]",
        "scarytranscludetoolong": "[URL je predugačak]",
        "deletedwhileediting": "'''Upozorenje''': Ova stranica je obrisana prije nego što ste počeli uređivati!",
-       "confirmrecreate": "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovaj članak pošto ste počeli uređivanje sa razlogom:\n: ''$2''\n\nMolimo Vas da potvrdite da stvarno želite da ponovo napravite ovaj članak.",
-       "confirmrecreate-noreason": "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovaj članak pošto ste ga počeli uređivati. Molimo Vas da potvrdite da stvarno želite da ponovo napravite ovaj članak.",
+       "confirmrecreate": "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) obrisao je ovaj članak pošto ste počeli uređivanje s razlogom:\n: ''$2''\n\nMolimo Vas da potvrdite da stvarno želite ponovo napraviti ovaj članak.",
+       "confirmrecreate-noreason": "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) obrisao je ovaj članak nakon što ste ga počeli uređivati. Molimo Vas da potvrdite da stvarno želite ponovo napraviti ovaj članak.",
        "recreate": "Ponovno napravi",
        "unit-pixel": "px",
        "confirm_purge_button": "U redu",
        "version-poweredby-credits": "Ova wiki je zasnovana na '''[https://www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
        "version-poweredby-others": "ostali",
        "version-credits-summary": "Željeli bismo se zahvaliti sljedećim ljudima na njihovom doprinosu [[Special:Version|MediaWikiju]].",
-       "version-license-info": "Mediawiki je slobodni softver, možete ga redistribuirati i/ili mijenjati pod uslovima GNU opće javne licence kao što je objavljeno od strane Fondacije Slobodnog Softvera, bilo u verziji 2 licence, ili (po vašoj volji) nekoj od kasniji verzija.\n\nMediawiki se distriburia u nadi da će biti korisna, ali BEZ IKAKVIH GARANCIJA, čak i bez ikakvih posrednih garancija o KOMERCIJALNOSTI ili DOSTUPNOSTI ZA ODREĐENU SVRHU. Pogledajte GNU opću javnu licencu za više detalja.\n\nTrebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] zajedno s ovim programom, ako niste, pišite Fondaciji Slobodnog Softvera na adresu  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ili je pročitajte [//www.gnu.org/licenses/old-licenses/gpl-2.0.html online].",
+       "version-license-info": "Mediawiki je slobodni softver; možete ga redistribuirati i(li) mijenjati pod uvjetima opće javne GNU licence kao što je objavljeno od strane \"Free Software Foundationa\", bilo u verziji 2 licence ili (po Vašoj volji) nekoj od kasnijih verzija.\n\nMediawiki se distribuira u nadi da će biti korisna, ali BEZ IKAKVIH GARANCIJA, čak i bez ikakvih posrednih garancija o KOMERCIJALNOSTI ili DOSTUPNOSTI ZA ODREĐENU SVRHU. Pogledajte opću javnu GNU licencu za više detalja.\n\nTrebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU opće javne GNU licence] zajedno s ovim programom. Ako niste, pišite \"Free Software Foundationu\" na adresu: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ili je pročitajte [//www.gnu.org/licenses/old-licenses/gpl-2.0.html ovdje].",
        "version-software": "Instalirani softver",
        "version-software-product": "Proizvod",
        "version-software-version": "Verzija",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Veličina datoteke: $3<br />MIME vrsta: $4",
        "fileduplicatesearch-result-1": "Datoteka \"$1\" nema identičnih dvojnika.",
        "fileduplicatesearch-result-n": "Datoteka \"$1\" ima {{PLURAL:$2|1 identičnog|$2 identična|$2 identičnih}} dvojnika.",
-       "fileduplicatesearch-noresults": "Nije pronađena datoteka sa imenom \"$1\".",
+       "fileduplicatesearch-noresults": "Nije pronađena datoteka s imenom \"$1\".",
        "specialpages": "Posebne stranice",
        "specialpages-note-top": "Legenda",
        "specialpages-note": "* Normalne posebne stranice.\n* <strong class=\"mw-specialpagerestricted\">Zaštićene posebne stranice.</strong>",
        "htmlform-no": "Ne",
        "htmlform-yes": "Da",
        "htmlform-chosen-placeholder": "Izaberite opciju",
+       "htmlform-cloner-create": "Dodaj još",
        "sqlite-has-fts": "$1 sa podrškom pretrage cijelog teksta",
        "sqlite-no-fts": "$1 bez podrške pretrage cijelog teksta",
        "logentry-delete-delete": "$1 je {{GENDER:$2|obrisao|obrisala}} stranicu $3",
        "logentry-rights-rights-legacy": "$1 je {{GENDER:$2|promijenio|promijenila|promijenio}} članstvo grupe za $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$1|je automatski promijenjeno članstvo|su automatski promijenjena članstva}} iz $4 u $5",
        "rightsnone": "(nema)",
-       "feedback-bugornote": "Ako ste spremni detaljno opisati tehnički problem molimo [$1 prijavite \"bug\" (grešku)].\nInače, možete ispuniti jednostavan obrazac ispod. Vaš komentar biti će dodan na stranicu \"[$3 $2]\", zajedno s vašim korisničkim imenom i internetskog preglednika koji koristite.",
+       "feedback-bugornote": "Ako ste spremni detaljno opisati tehnički problem, molimo [$1 prijavite \"bug\" (grešku)].\nInače, možete ispuniti jednostavan obrazac ispod. Vaš komentar bit će dodan na stranicu \"[$3 $2]\" zajedno s Vašim korisničkim imenom.",
        "feedback-subject": "Tema:",
        "feedback-message": "Poruka:",
        "feedback-cancel": "Odustani",
        "api-error-empty-file": "Datoteka koju ste poslali je bila prazna.",
        "api-error-emptypage": "Stvaranje novih praznih stranica nije dozvoljeno.",
        "api-error-fetchfileerror": "Unutrašnja greška: pojavio se neki problem pri dobijanju podataka o datoteci.",
-       "api-error-fileexists-forbidden": "Datoteka s imenom \"$1\" već postoji, i ne može biti zamijenjena.",
+       "api-error-fileexists-forbidden": "Datoteka s imenom \"$1\" već postoji i ne može biti zamijenjena.",
        "api-error-fileexists-shared-forbidden": "Datoteka s imenom \"$1\" već postoji u zajedničkom spremištu i ne može biti prepisana.",
        "api-error-file-too-large": "Datoteka koju ste poslali je bila prevelika.",
        "api-error-filename-tooshort": "Ime datoteke je prekratko.",
index 25ce027..8534d23 100644 (file)
        "right-browsearchive": "Cercar pàgines esborrades",
        "right-undelete": "Restaurar pàgines esborrades",
        "right-suppressrevision": "Revisar i restaurar les versions amagades als administradors",
+       "right-viewsuppressed": "Mostra les revisions amagades de qualsevol usuari",
        "right-suppressionlog": "Veure registres privats",
        "right-block": "Blocar altres usuaris per a impedir-los l'edició",
        "right-blockemail": "Impedir que un usuari envii correu electrònic",
        "license": "Llicència:",
        "license-header": "Llicència",
        "nolicense": "No se n'ha seleccionat cap",
+       "licenses-edit": "Modifica les opcions de llicència",
        "license-nopreview": "(Previsualització no disponible)",
        "upload_source_url": " (un URL vàlid i accessible públicament)",
        "upload_source_file": " (un fitxer en el vostre ordinador)",
index 42f53e3..db28279 100644 (file)
@@ -13,7 +13,8 @@
                        "Muhammed taha",
                        "رزگار",
                        "아라",
-                       "Serwan"
+                       "Serwan",
+                       "Ebraminio"
                ]
        },
        "tog-underline": "ھێڵ ھێنان بەژێر بەستەرەکان:",
        "talkpagelinktext": "لێدوان",
        "specialpage": "په‌ڕه‌ی تایبه‌ت",
        "personaltools": "ئامڕازە تاکەکەسییەکان",
-       "postcomment": "بەشی نوێ",
        "articlepage": "پەڕەی ناوەرۆک ببینە",
        "talk": "وتووێژ",
        "views": "بینینەکان",
        "externaldberror": "یان هەڵەی ڕێگەپێدانی بنکەدراو هەیە یان ڕێگات پێ نادرێت بۆ نوێ کردنی هەژماری دەرەکیت.",
        "login": "بچۆ ژوورەوە",
        "nav-login-createaccount": "بچۆ ژوورەوە / ھەژمار دروست بکە",
-       "loginprompt": "بۆ چوونەژوورەوە بۆ {{SITENAME}} دەبێ کوکییەکان چالاک بکەیت.",
        "userlogin": "بچۆ ژوورەوە / ھەژمار دروست بکە",
        "userloginnocreate": "بچۆ ژوورەوە",
        "logout": "بچۆ دەرەوە",
        "undeleteviewlink": "دیتن",
        "undeleteinvert": "ھەڵبژاردەکان پێچەوانە بکە",
        "undeletecomment": "هۆکار:",
-       "undeletedrevisions": "{{PLURAL:$1|1 پێداچوونەوە|$1 پێداچوونەوە}} هێنرایەوە",
+       "undeletedrevisions": "{{PLURAL:$1|$1 پێداچوونەوە}} هێنرایەوە",
        "undeletedrevisions-files": "{{PLURAL:$1|1 پێداچوونەوە|$1 پێداچوونەوە}} و {{PLURAL:$2|1 پەڕگە|$2 پەڕگە}} هێنرایەوە",
        "undeletedfiles": "{{PLURAL:$1|1 پەڕگە|$1 پەڕگە}} هێنرایەوه",
        "cannotundelete": "ھێنانەوە سەرکەوتوو نەبوو:\n$1",
index 69dddfb..250b228 100644 (file)
        "loginerror": "Chyba při přihlašování",
        "createacct-error": "Chyba při zakládání účtu",
        "createaccounterror": "Nepodařilo se vytvořit uživatelský účet: $1",
-       "nocookiesnew": "Uživatelský účet byl vytvořen, ale nejste přihlášeni. {{SITENAME}} používá cookies k přihlášení uživatelů. Vy máte cookies vypnuty. Prosím zapněte je a přihlaste se znovu s vaším novým uživatelským jménem a heslem.",
+       "nocookiesnew": "Uživatelský účet byl vytvořen, ale nejste přihlášeni. {{SITENAME}} používá cookies k přihlášení uživatelů. Vy máte cookies vypnuty. Prosím, zapněte je a poté se přihlaste svým novým uživatelským jménem a heslem.",
        "nocookieslogin": "{{SITENAME}} používá cookies k přihlášení uživatelů. Vy máte cookies vypnuty. Prosím zapněte je a zkuste znovu.",
        "nocookiesfornew": "Uživatelský účet nebyl založen, neboť jsme nebyli schopni potvrdit jeho původ.\nUjistěte se, že máte povoleny cookies, obnovte tuto stránku a zkuste to znovu.",
        "noname": "Musíte uvést jméno svého účtu.",
        "revdelete-text-text": "Smazané editace se budou i nadále zobrazovat v historii stránky, ale části jejich obsahu nebudou veřejně přístupné.",
        "revdelete-text-file": "Smazané verze souborů se budou i nadále zobrazovat v historii stránky, ale části jejich obsahu nebudou veřejně přístupné.",
        "logdelete-text": "Smazané protokolovací záznamy se budou i nadále zobrazovat v historii stránky, ale části jejich obsahu nebudou veřejně přístupné.",
-       "revdelete-text-others": "Ostatní správci {{grammar:2sg|{{SITENAME}}}} budou i nadále moci ke skrytému obsahu přistupovat a mohou ho pomocí stejného rozhraní obnovit, pokud nejsou nastavena dodatečná omezení.",
+       "revdelete-text-others": "Ostatní správci budou i nadále moci ke skrytému obsahu přistupovat a mohou ho obnovit, pokud nejsou nastavena dodatečná omezení.",
        "revdelete-confirm": "Prosím potvrďte, že to opravdu chcete učinit, že si uvědomujete důsledky a že je to v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].",
        "revdelete-suppress-text": "Utajování by se mělo používat '''pouze''' v následujících případech:\n* Potenciálně pomlouvačné informace\n* Nevhodné osobní údaje\n*: ''adresy bydliště a telefonní čísla, rodná čísla apod.''",
        "revdelete-legend": "Nastavit omezení viditelnosti",
        "right-deletedtext": "Prohlížení smazaného textu a rozdílů mezi smazanými verzemi",
        "right-browsearchive": "Vyhledávání ve smazaných stránkách",
        "right-undelete": "Obnovování smazaných stránek",
-       "right-suppressrevision": "Prohlížení a obnovování revizí skrytých před správci",
+       "right-suppressrevision": "Prohlížení, skrývání a odkrývání revizí skrytých před všemi uživateli",
+       "right-viewsuppressed": "Prohlížení revizí skrytých před všemi uživateli",
        "right-suppressionlog": "Prohlížení skrytých protokolovacích záznamů",
        "right-block": "Blokování možnosti editace ostatním uživatelům",
        "right-blockemail": "Blokování možnosti poslat e-mail",
index c2efafd..c5b8ca4 100644 (file)
        "revdelete-text-text": "Gelöschte Versionen verbleiben noch in der Versionsgeschichte, jedoch sind Teile ihres Inhalts für die Öffentlichkeit nicht zugänglich.",
        "revdelete-text-file": "Gelöschte Dateiversionen verbleiben noch in der Datei-Versionsgeschichte, jedoch sind Teile ihres Inhalts für die Öffentlichkeit nicht zugänglich.",
        "logdelete-text": "Gelöschte Logbucheinträge verbleiben noch in den Logbüchern, jedoch sind Teile ihres Inhalts für die Öffentlichkeit nicht zugänglich.",
-       "revdelete-text-others": "Andere Administratoren auf {{SITENAME}} haben noch Zugriff auf den versteckten Inhalt und können ihn auch mithilfe dieser Spezialseite wiederherstellen, solange keine zusätzlichen Beschränkungen festgelegt werden.",
+       "revdelete-text-others": "Andere Administratoren haben noch Zugriff auf den versteckten Inhalt und können ihn auch wiederherstellen, solange keine zusätzlichen Beschränkungen festgelegt werden.",
        "revdelete-confirm": "Bitte bestätige, dass du beabsichtigst, dies zu tun, die Konsequenzen verstehst und es in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]] tust.",
        "revdelete-suppress-text": "Unterdrückungen sollten '''nur''' in den folgenden Fällen vorgenommen werden:\n* Potentiell beleidigende Informationen\n* Unangebrachte persönliche Informationen\n*: ''Adressen, Telefonnummern, Sozialversicherungsnummern etc.''",
        "revdelete-legend": "Setzen der Sichtbarkeitseinschränkungen",
        "right-deletedtext": "Gelöschte Texte und Versionsunterschiede zwischen gelöschten Versionen ansehen",
        "right-browsearchive": "Nach gelöschten Seiten suchen",
        "right-undelete": "Seiten wiederherstellen",
-       "right-suppressrevision": "Versionen ansehen und wiederherstellen, die auch vor Administratoren verborgen sind",
+       "right-suppressrevision": "Spezielle Seitenversionen von jedem Benutzer ansehen, verstecken und wiederherstellen",
+       "right-viewsuppressed": "Versteckte Versionen von jedem Benutzer ansehen",
        "right-suppressionlog": "Private Logbücher ansehen",
        "right-block": "Benutzer sperren (Schreibrecht)",
        "right-blockemail": "Benutzer am Versenden von E-Mails hindern",
index a707f2b..e42d716 100644 (file)
        "revdelete-text-text": "Deleted revisions will still appear in the page history, but parts of their content will be inaccessible to the public.",
        "revdelete-text-file": "Deleted file versions will still appear in the file history, but parts of their content will be inaccessible to the public.",
        "logdelete-text": "Deleted log events will still appear in the logs, but parts of their content will be inaccessible to the public.",
-       "revdelete-text-others": "Other administrators on {{SITENAME}} will still be able to access the hidden content and can undelete it again through this same interface, unless additional restrictions are set.",
+       "revdelete-text-others": "Other administrators will still be able to access the hidden content and to undelete it, unless additional restrictions are set.",
        "revdelete-confirm": "Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].",
        "revdelete-suppress-text": "Suppression should <strong>only</strong> be used for the following cases:\n* potentially libelous information\n* inappropriate personal information\n*: <em>home addresses and telephone numbers, national identification numbers, etc.</em>",
        "revdelete-legend": "Set visibility restrictions",
        "right-deletedtext": "View deleted text and changes between deleted revisions",
        "right-browsearchive": "Search deleted pages",
        "right-undelete": "Undelete a page",
-       "right-suppressrevision": "Review and restore revisions hidden from administrators",
+       "right-suppressrevision": "View, hide and unhide specific revisions of pages from any user",
+       "right-viewsuppressed": "View revisions hidden from any user",
        "right-suppressionlog": "View private logs",
        "right-block": "Block other users from editing",
        "right-blockemail": "Block a user from sending email",
index 590d8c2..340ff8a 100644 (file)
        "powersearch-togglelabel": "Elekti:",
        "powersearch-toggleall": "Ĉion",
        "powersearch-togglenone": "Nenion",
+       "powersearch-remember": "Memori elekton por estontaj serĉoj",
        "search-external": "Ekstera serĉo",
        "searchdisabled": "<p>Oni provizore malŝaltis serĉadon per la plenteksta\nindekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> aŭ per <i>jahu!</i>:</p>",
        "search-error": "Okazis eraro dum serĉado: $1",
        "right-upload": "Alŝuti dosierojn",
        "right-reupload": "Anstataŭigi ekzistantan dosieron",
        "right-reupload-own": "Anstataŭigi ekzistantan dosieron alŝutitan de la sama uzanto",
-       "right-reupload-shared": "Anstataŭigi dosierojn en la komuna bildprovizejo loke",
+       "right-reupload-shared": "Anstataŭigi dosierojn en la komuna bildprovizejo ĉi-loke",
        "right-upload_by_url": "Alŝuti dosieron de URL-adreso",
        "right-purge": "Refreŝigi la retejan kaŝmemoron por paĝo sen konfirma paĝo",
        "right-autoconfirmed": "Redakti duone protektitajn paĝojn",
        "right-deletedtext": "Rigardi forigitan tekston kaj ŝanĝojn inter forigitaj revizioj.",
        "right-browsearchive": "Serĉi forigitajn paĝojn",
        "right-undelete": "Restarigi paĝon",
-       "right-suppressrevision": "Kontroli kaj restarigi versiojn kaŝitajn de administrantoj",
+       "right-suppressrevision": "Montri, kaŝi kaj malkaŝi specifajn paĝajn versiojn de ajna uzanto",
        "right-suppressionlog": "Vidi privatajn protokolojn",
        "right-block": "Forbari aliajn uzantoj de redaktado",
        "right-blockemail": "Forbari uzanton de retpoŝta sendado",
        "listgrouprights-namespaceprotection-header": "Nomspacaj restriktoj",
        "listgrouprights-namespaceprotection-namespace": "Nomspaco",
        "listgrouprights-namespaceprotection-restrictedto": "Rajtoj, kiuj permesas al uzanto redakti",
+       "trackingcategories": "Kategorioj por kontrolado",
+       "trackingcategories-summary": "Ĉi tiu paĝo listigas kategoriojn por kontrolado, aŭtomate farita de la Mediavikia programaro. Ties nomoj estas ŝanĝebla, ŝanĝante la paran sistemmesaĝon en la nomspaco {{ns:8}}.",
+       "trackingcategories-msg": "Kategorio pri kontrolado",
        "trackingcategories-name": "Nomo de mesaĝo",
+       "trackingcategories-desc": "Kriterio por inkluzivi kategorion",
        "trackingcategories-nodesc": "Neniu priskribo estas disponebla.",
        "trackingcategories-disabled": "Kategorio estas malaktivigita",
        "mailnologin": "Neniu alsendota adreso",
index 635f15c..deec915 100644 (file)
        "revdelete-text-text": "Las revisiones eliminadas aún aparecerán en el historial de la página, pero parte de su contenido será inaccesible para el público.",
        "revdelete-text-file": "Las versiones de los archivos eliminados aún aparecerán en el historial del archivo, pero partes de su contenido serán inaccesibles para el público.",
        "logdelete-text": "Las revisiones eliminadas aún aparecerán en el historial de la página, pero parte de su contenido será inaccesible para el público.",
-       "revdelete-text-others": "Otros administradores en {{SITENAME}} aun serán capaces de acceder a los contenidos ocultos y pueden restaurarlos a través de esta interfaz, a menos que se establezcan restricciones adicionales.",
+       "revdelete-text-others": "Otros administradores aun serán capaces de acceder a los contenidos ocultos y restaurarlos, a menos que se establezcan restricciones adicionales.",
        "revdelete-confirm": "Por favor confirma que deseas realizar la operación, que entiendes las consecuencias y que estás ejecutando dicha acción acorde con [[{{MediaWiki:Policy-url}}|las políticas]].",
        "revdelete-suppress-text": "La herramienta de supresión '''solo''' debería usarse en los siguientes casos:\n* información potencialmente injuriosa o calumniante.\n* información personal inapropiada, tal como:\n*: ''nombres, domicilios, números de teléfono, números de la seguridad social e información análoga.''",
        "revdelete-legend": "Establecer restricciones de revisión:",
        "gender-unknown": "Prefiero no especificarlo",
        "gender-male": "Masculino",
        "gender-female": "Femenino",
-       "prefs-help-gender": "Opcional: empleado para que sea usado correctamente el género por parte del software. Esta información será pública.",
+       "prefs-help-gender": "Opcional: el software utiliza esta preferencia para dirigirse a ti con el género gramatical apropiado. Esta información es pública.",
        "email": "Correo electrónico",
        "prefs-help-realname": "El nombre real es opcional. Si decides proporcionarlo, se usará para dar atribución a tu trabajo.",
        "prefs-help-email": "La dirección de correo electrónico es opcional, pero es necesaria para el restablecimiento de tu contraseña, en caso de que la olvides.",
        "right-deletedtext": "Ver texto borrado y cambios entre revisiones borradas",
        "right-browsearchive": "Buscar páginas borradas",
        "right-undelete": "Restaurar una página",
-       "right-suppressrevision": "Revisar y restaurar revisiones escondidas por administradores",
+       "right-suppressrevision": "Ver, ocultar y mostrar revisiones específicas de páginas de cualquier usuario",
        "right-suppressionlog": "Ver registros privados",
        "right-block": "Bloquear a otros usuarios para que no editen",
        "right-blockemail": "Bloquear a un usuario para que no pueda mandar correos electrónicos",
        "license": "Licencia:",
        "license-header": "Licencia",
        "nolicense": "Ninguna seleccionada",
+       "licenses-edit": "Editar las opciones de licencia",
        "license-nopreview": "(Previsualización no disponible)",
        "upload_source_url": " (una URL válida y accesible públicamente)",
        "upload_source_file": "(un archivo en tu computadora)",
+       "listfiles-delete": "borrar",
        "listfiles-summary": "Esta página especial muestra todos los archivos subidos.\nCuando el usuario la filtra, solo se muestran los archivos cargados por el usuario en su versión más reciente.",
        "listfiles_search_for": "Buscar por nombre de imagen:",
        "imgfile": "archivo",
        "wantedpages-badtitle": "Título inválido en conjunto de resultados: $1",
        "wantedfiles": "Ficheros requeridos",
        "wantedfiletext-cat": "Los siguientes archivos están en uso, pero no existen. Es posible que algunos de ellos estén almacenados en repositorios externos y se hayan incluido aquí por error; dichas entradas aparecen <del>tachadas</del>. De igual manera, las páginas que incluyen archivos inexistentes se enumeran en [[:$1]].",
+       "wantedfiletext-cat-noforeign": "Los siguientes archivos están en uso, pero no existen. Además, las páginas con archivos que no existen están listadas en [[:$1]].",
        "wantedfiletext-nocat": "Los siguientes archivos están en uso, pero no existen. Es posible que algunos de ellos estén almacenados en repositorios externos y se hayan incluido aquí por error; dichas entradas aparecen <del>tachadas</del>.",
+       "wantedfiletext-nocat-noforeign": "Los siguientes archivos están en uso, pero no existen.",
        "wantedtemplates": "Plantillas requeridas",
        "mostlinked": "Artículos más enlazados",
        "mostlinkedcategories": "Categorías más enlazadas",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discusión]])",
        "unknown_extension_tag": "Etiqueta desconocida «$1»",
        "duplicate-defaultsort": "'''Atención:''' La clave de ordenamiento predeterminada «$2» anula la clave de ordenamiento anterior «$1».",
+       "duplicate-displaytitle": "<strong>Advertencia:</strong> El título visualizado \"$2\" sobreescribe al anterior \"$1\".",
        "version": "Versión",
        "version-extensions": "Extensiones instaladas",
        "version-skins": "Temas instalados",
index fb3bd43..0ddd8fc 100644 (file)
        "undo-summary": "Eemaldatud muudatus $1, mille tegi [[Special:Contributions/$2|$2]] ([[User talk:$2|arutelu]])",
        "undo-summary-username-hidden": "Eemaldatud redaktsioon $1, mille tegi peidetud kasutaja",
        "cantcreateaccounttitle": "Ei saa kontot luua",
-       "cantcreateaccount-text": "Kasutaja [[User:$3|$3]] on blokeerinud kasutajanime loomise sellelt IP-aadressilt ('''$1''').\nKasutaja $3 märkis põhjuseks ''$2''",
+       "cantcreateaccount-text": "[[User:$3|$3]] on blokeerinud konto loomise sellelt IP-aadressilt (<strong>$1</strong>).\n\n$3 märkis järgmise põhjuse: <em>$2</em>",
        "cantcreateaccount-range-text": "Kontode loomine IP-aadressidelt vahemikus '''$1''', millesse jääb sinu IP-aadress ('''$4'''), on blokeeritud. Blokeeris kasutaja [[User:$3|$3]].\n\n$3 tõi järgmise põhjuse: ''$2''",
        "viewpagelogs": "Vaata selle lehe logisid",
        "nohistory": "Sellel leheküljel ei ole eelmisi redaktsioone.",
        "revdelete-text-text": "Kustutatud redaktsioonid jäävad lehekülje ajalukku alles, aga osa nende sisust pole kõigile juurdepääsetav.",
        "revdelete-text-file": "Kustutatud failiversioonid jäävad faili ajalukku alles, aga osa nende sisust pole kõigile juurdepääsetav.",
        "logdelete-text": "Kustutatud logisündmused jäävad logisse alles, aga osa nende sisust pole kõigile juurdepääsetav.",
-       "revdelete-text-others": "Teised {{GRAMMAR:genitive|{{SITENAME}}}} administraatorid pääsevad ikkagi peidetud sisu juurde ja saavad sama liidese kaudu selle taastada, kui seatud pole lisapiiranguid.",
+       "revdelete-text-others": "Teised administraatorid pääsevad ikkagi peidetud sisu juurde ja saavad selle taastada, kui seatud pole lisapiiranguid.",
        "revdelete-confirm": "Kinnita, et soovid tõesti seda teha ning et saad aru tagajärgedest ja tegevus on kooskõlas [[{{MediaWiki:Policy-url}}|siinsete kokkulepetega]].",
        "revdelete-suppress-text": "Andmed tuleks varjata '''ainult''' järgmistel juhtudel:\n* võimalik laim\n* sobimatu isiklik teave\n*: ''kodune aadress ja telefoninumber, isikukood jne''",
        "revdelete-legend": "Nähtavuse piirangute seadmine",
        "right-deletedtext": "Vaadata kustutatud teksti ja võrrelda kustutatud redaktsioone",
        "right-browsearchive": "Otsida kustutatud lehekülgi",
        "right-undelete": "Taastada lehekülg",
-       "right-suppressrevision": "Üle vaadata ja taastada administraatorite eest peidetud redaktsioone",
+       "right-suppressrevision": "Vaadata, peita ja taastada kõigi kasutajate eest varjatud kindlaid redaktsioone",
+       "right-viewsuppressed": "Vaadata kõigi kasutajate eest varjatud redaktsioone",
        "right-suppressionlog": "Vaadata eralogisid",
        "right-block": "Keelata lehekülgede muutmist mõnel kasutajal",
        "right-blockemail": "Keelata kasutajal e-kirjade saatmine",
        "right-override-export-depth": "Eksportida lehekülgi, kaasates viidatud leheküljed kuni viienda tasemeni",
        "right-sendemail": "Saata teistele kasutajatele e-kirju",
        "right-passwordreset": "Vaadata parooli lähtestamise e-kirju",
-       "newuserlogpage": "Kasutaja loomise logi",
+       "newuserlogpage": "Konto loomise logi",
        "newuserlogpagetext": "Siin on logitud kasutajate registreerimine.",
        "rightslog": "Kasutajaõiguste logi",
        "rightslogtext": "See on logi kasutajate õiguste muutuste kohta.",
        "action-deletedhistory": "selle lehekülje kustutatud ajalugu vaadata",
        "action-browsearchive": "kustutatud lehekülgi otsida",
        "action-undelete": "lehekülgi taastada",
-       "action-suppressrevision": "seda peidetud redaktsiooni vaadata ja taastada",
+       "action-suppressrevision": "seda peidetud redaktsiooni vaadata ega taastada",
        "action-suppressionlog": "seda eralogi vaadata",
        "action-block": "selle kasutaja redigeerimisõigust blokeerida",
        "action-protect": "selle lehekülje kaitsetasemeid muuta",
        "license": "Litsents:",
        "license-header": "Litsents",
        "nolicense": "pole valitud",
+       "licenses-edit": "Redigeeri litsentsivalikut",
        "license-nopreview": "(Eelvaade ei ole saadaval)",
        "upload_source_url": "(avalikult ligipääsetav URL)",
        "upload_source_file": "(fail sinu arvutis)",
index 308fd3c..a9f5cad 100644 (file)
        "revdelete-text-text": "نسخه‌های حذف‌شده همچنان در تارییخچه نمایان خواند بود ولی قسمت‌هایی از محتویات غبرقابل دسترس برای عموم خواهد بود.",
        "revdelete-text-file": "نسخه‌های حذف‌شده همچنان در تاریخچهٔ پرونده نمایان خواهد بود ولی قسمت‌هایی از محتویات آن‌ها برای عموم غیرقابل دسترس خواهد بود.",
        "logdelete-text": "نسخه‌های حذف‌شده همچنان در سیاهه‌های نمایان خواهد بود ولی قسمت‌هایی از محتویات آن‌ها غیرقابل دسترس برای عموم خواهد بود.",
-       "revdelete-text-others": "سایر مدیران {{SITENAME}} هنوز می‌توانند این محتوای پنهان را ببینند و از همین طریق موارد حذف شده را احیا کنند، مگر آن که محدودیت‌های دیگری اعمال گردد.",
+       "revdelete-text-others": "سایر مدیران هنوز می‌توانند این محتوای پنهان را ببینند و از همین طریق موارد حذف شده را احیا کنند، مگر آن که محدودیت‌های دیگری اعمال گردد.",
        "revdelete-confirm": "لطفاً تأیید کنید که می‌خواهید این کار را انجام دهید، عواقب آن را درک می‌کنید و این کار را طبق [[{{MediaWiki:Policy-url}}|سیاست‌ها]] انجام می‌دهید.",
        "revdelete-suppress-text": "فرونشانی باید '''تنها''' برای موارد زیر استفاده شود:\n* اطلاعات به طور بالقوه افتراآمیز\n* اطلاعات نامناسب شخصی\n*: ''نشانی منزل، شماره تلفن، کد ملی و غیره.''",
        "revdelete-legend": "تنظیم محدودیت‌های پیدایی",
        "shown-title": "نمایش $1 {{PLURAL:$1|نتیجه|نتیجه}} در هر صفحه",
        "viewprevnext": "نمایش ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''صفحه‌ای با عنوان «[[:$1]]» در این ویکی وجود دارد.'''",
-       "searchmenu-new": "<strong>اÛ\8cجاد ØµÙ\81Ø­Ù\87Ù\94 Â«[[:$1]]» Ø¯Ø± Ø§Û\8cÙ\86 Ù\88Û\8cÚ©Û\8c!</strong> {{PLURAL:$2|0=|Ù\87Ù\85Ú\86Ù\86Û\8cÙ\86 Ù\85شاÙ\87دÙ\87Ù\94 ØµÙ\81Ø­Ù\87Ù\94 Ù¾Û\8cدا Ø´Ø¯Ù\87 Ø¨Ø§ Ø¬Ø³ØªØ¬Ù\88Û\8c Ø´Ù\85ا.|Ù\87Ù\85Ú\86Ù\86Û\8cÙ\86 Ù\85شاÙ\87دÙ\87Ù\94 Ø¬Ø³ØªØ¬Ù\88Û\8c Ù\86تاÛ\8cج Ù¾Û\8cدا Ø´Ø¯Ù\87.}}",
+       "searchmenu-new": "<strong>صÙ\81Ø­Ù\87Ù\94 Â«[[:$1]]» Ø±Ø§ Ø¯Ø± Ø§Û\8cÙ\86 Ù\88Û\8cÚ©Û\8c Ø¨Ø³Ø§Ø²Û\8cد!</strong> {{PLURAL:$2|0=Ù\87Ù\85Ú\86Ù\86Û\8cÙ\86 ØµÙ\81Ø­Ù\87Ù\94 Û\8cاÙ\81تâ\80\8cشدÙ\87 Ø¨Ø§ Ø¬Ø³ØªØ¬Ù\88Û\8cتاÙ\86 Ø±Ø§ Ø¨Ø¨Û\8cÙ\86Û\8cد.|Ù\87Ù\85Ú\86Ù\86Û\8cÙ\86 Ù\86تاÛ\8cج Ø¬Ø³ØªØ¬Ù\88Û\8c Û\8cاÙ\81تâ\80\8cشدÙ\87 Ø±Ø§ Ø¨Ø¨Û\8cÙ\86Û\8cد.}}",
        "searchprofile-articles": "صفحه‌های محتوایی",
        "searchprofile-images": "چندرسانه‌ای",
        "searchprofile-everything": "همه‌چیز",
        "right-deletedtext": "مشاهدهٔ متن حذف‌شده و تغییرات بین نسخه‌های حذف‌شده",
        "right-browsearchive": "جستجوی صفحه‌های حذف‌شده",
        "right-undelete": "احیای صفحه‌ها",
-       "right-suppressrevision": "بازبینی و احیای ویرایش‌هایی که از مدیران پنهان شده‌اند",
+       "right-suppressrevision": "مشاهده  و احیای ویرایش‌هایی که از کاربران پنهان شده‌اند",
+       "right-viewsuppressed": "مشاهده نسخه‌هایی که از کاربران مخفی شده‌اند",
        "right-suppressionlog": "مشاهدهٔ سیاهه‌های خصوصی",
        "right-block": "قطع دسترسی ویرایشی دیگر کاربران",
        "right-blockemail": "قطع دسترسی دیگر کاربران برای ارسال رایانامه",
        "undeleteviewlink": "نمایش",
        "undeleteinvert": "وارونه کردن انتخاب",
        "undeletecomment": "دلیل:",
-       "undeletedrevisions": "$1 نسخه احیا {{PLURAL:$1|شد|شدند}}",
+       "undeletedrevisions": "$1 نسخه احیا {{PLURAL:$1|شد}}",
        "undeletedrevisions-files": "$1 نسخه و $2 پرونده احیا {{PLURAL:$1|شد|شدند}}.",
        "undeletedfiles": "$1 پرونده احیا {{PLURAL:$1|شد|شدند}}.",
        "cannotundelete": "احیا ناموفق بود:\n$1",
        "sp-contributions-search": "جستجوی مشارکت‌ها",
        "sp-contributions-username": "نشانی آی‌پی یا نام کاربری:",
        "sp-contributions-toponly": "فقط ویرایش‌هایی که آخرین نسخه‌اند نمایش داده شود",
-       "sp-contributions-newonly": "Ù\81Ù\82Ø· Ù\86Ù\85اÛ\8cØ´ Ù\88Û\8cراÛ\8cØ´â\80\8cÙ\87اÛ\8cÛ\8c Ú©Ù\87 ØªÙ\88Ù\84Û\8cدâ\80\8cÙ\87اÛ\8c صفحه هستند",
+       "sp-contributions-newonly": "Ù\81Ù\82Ø· Ù\86Ù\85اÛ\8cØ´ Ù\88Û\8cراÛ\8cØ´â\80\8cÙ\87اÛ\8cÛ\8c Ú©Ù\87 Ø§Û\8cجاد صفحه هستند",
        "sp-contributions-submit": "جستجو",
        "whatlinkshere": "پیوندها به این صفحه",
        "whatlinkshere-title": "صفحه‌هایی که به «$1» پیوند دارند",
index 8cde960..15b04aa 100644 (file)
        "revdelete-text-text": "Poistetut versiot näkyvät edelleen sivun historiassa, mutta osa niiden sisällöstä ei enää ole saatavilla julkisesti.",
        "revdelete-text-file": "Poistetut tiedostoversiot näkyvät yhä sivun historiassa, mutta osa niiden sisällöstä ei ole saatavilla julkisesti.",
        "logdelete-text": "Poistetut lokimerkinnät näkyvät edelleen lokeissa, mutta osa niiden sisällöstä ei enää ole saatavilla julkisesti.",
-       "revdelete-text-others": "Muut ylläpitäjät sivustolla {{SITENAME}} kykenevät silti näkemään piilotetun sisällön ja voivat palauttaa sen takaisin näkyviin tämän saman käyttöliittymän kautta, paitsi silloin kun lisärajoituksia on asetettu.",
+       "revdelete-text-others": "Muut ylläpitäjät kykenevät silti näkemään piilotetun sisällön ja voivat palauttaa sen takaisin näkyviin, paitsi silloin kun lisärajoituksia on asetettu.",
        "revdelete-confirm": "Varmista, että haluat tehdä tämän – ymmärrät seuraukset ja teet tämän [[{{MediaWiki:Policy-url}}|käytäntöjen]] mukaisesti.",
        "revdelete-suppress-text": "Häivytystä pitäisi käyttää '''vain''' seuraavissa tapauksissa:\n* Mahdollisesti henkilön kunniaa loukkaavia tietoja\n* Sopimattomat henkilötiedot\n*: ''kotiosoitteet, puhelinnumerot, henkilötunnukset ja muut.''",
        "revdelete-legend": "Aseta version näkyvyyden rajoitukset",
        "right-deletedtext": "Tarkastella poistettujen sivujen tekstiä ja muutoksia poistettujen versioiden välillä",
        "right-browsearchive": "Hakea poistettuja sivuja",
        "right-undelete": "Palauttaa poistettuja sivuja",
-       "right-suppressrevision": "Tarkastella ja palauttaa ylläpitäjiltä piilotettuja versioita",
+       "right-suppressrevision": "Katsoa, piilottaa ja tuoda näkyviin tiettyjä sivujen versioita kaikilta käyttäjiltä",
+       "right-viewsuppressed": "Katsoa kaikilta käyttäjiltä piilotettuja versioita",
        "right-suppressionlog": "Tarkastella yksityisiä lokeja",
        "right-block": "Asettaa toiselle käyttäjälle muokkausesto",
        "right-blockemail": "Estää käyttäjää lähettämästä sähköpostia",
        "size-kilobytes": "$1 KiB",
        "size-megabytes": "$1 MiB",
        "size-gigabytes": "$1 GiB",
+       "size-terabytes": "$1 TiB",
+       "size-petabytes": "$1 PiB",
+       "size-exabytes": "$1 EiB",
+       "size-zetabytes": "$1 ZiB",
+       "size-yottabytes": "$1 YiB",
+       "bitrate-bits": "$1 bit/s",
+       "bitrate-kilobits": "$1 kbit/s",
+       "bitrate-megabits": "$1 Mbit/s",
+       "bitrate-gigabits": "$1 Gbit/s",
+       "bitrate-terabits": "$1 Tbit/s",
+       "bitrate-petabits": "$1 Pbit/s",
+       "bitrate-exabits": "$1 Ebit/s",
+       "bitrate-zetabits": "$1 Zbit/s",
+       "bitrate-yottabits": "$1 Ybit/s",
        "lag-warn-normal": "Muutokset, jotka ovat uudempia kuin $1 {{PLURAL:$1|sekunti|sekuntia}}, eivät välttämättä näy tällä sivulla.",
        "lag-warn-high": "Tietokannoilla on työjonoa. Muutokset, jotka ovat uudempia kuin $1 {{PLURAL:$1|sekunti|sekuntia}}, eivät välttämättä näy tällä sivulla.",
        "watchlistedit-normal-title": "Tarkkailulistan muokkaus",
index 2b43f7f..56ab13e 100644 (file)
                        "Akeron",
                        "Linedwell",
                        "Yona b",
-                       "SnowedEarth"
+                       "SnowedEarth",
+                       "Orikrin1998"
                ]
        },
        "tog-underline": "Souligner les liens :",
        "create-this-page": "Créer cette page",
        "delete": "Supprimer",
        "deletethispage": "Supprimer cette page",
-       "undeletethispage": "Annuler la suppression de cette page",
+       "undeletethispage": "Restaurer cette page",
        "undelete_short": "Restaurer {{PLURAL:$1|une modification|$1 modifications}}",
        "viewdeleted_short": "Voir {{PLURAL:$1|une modification supprimée|$1 modifications supprimées}}",
        "protect": "Protéger",
        "jumpto": "Aller à :",
        "jumptonavigation": "navigation",
        "jumptosearch": "rechercher",
-       "view-pool-error": "Désolé, les serveurs sont surchargés en ce moment.\nTrop d'utilisateurs cherchent à consulter cette page.\nVeuillez attendre un moment avant de retenter l'accès à cette page.\n\n$1",
+       "view-pool-error": "Désolé, les serveurs sont surchargés en ce moment.\nTrop d'utilisateurs cherchent à consulter cette page.\nVeuillez attendre un moment avant de retenter l'accès à celle ci.\n$1",
        "generic-pool-error": "Désolé, les serveurs sont surchargés pour le moment.\nTrop d’utilisateurs essayent de consulter cette ressource.\nVeuillez attendre un peu avant de réessayer d’accéder à celle-ci.",
        "pool-timeout": "Délai d'attente dépassé",
        "pool-queuefull": "La file d'attente est pleine",
        "badaccess-group0": "Vous n’avez pas les droits suffisants pour réaliser l’action demandée.",
        "badaccess-groups": "L’action que vous essayez de réaliser n’est permise qu’aux utilisateurs {{PLURAL:$2|du groupe|d'un des groupes}} : $1.",
        "versionrequired": "Version $1 de MediaWiki nécessaire",
-       "versionrequiredtext": "La version $1 de MediaWiki est nécessaire pour utiliser cette page. Consultez [[Special:Version|la page des versions]]",
+       "versionrequiredtext": "La version $1 de MediaWiki est nécessaire pour utiliser cette page. Consultez [[Special:Version|la page des versions]].",
        "ok": "Valider",
        "pagetitle": "$1 — {{SITENAME}}",
        "retrievedfrom": "Récupérée de « $1 »",
        "password-login-forbidden": "L'utilisation de ce nom d'utilisateur et de ce mot de passe a été interdite.",
        "mailmypassword": "Réinitialiser le mot de passe",
        "passwordremindertitle": "Nouveau mot de passe temporaire pour {{SITENAME}}",
-       "passwordremindertext": "Quelqu'un (probablement vous, ayant l'adresse IP $1) a demandé un nouveau mot de\npasse pour {{SITENAME}} ($4 ). Un mot de passe temporaire a été créé pour\nl'utilisateur « $2 » et est « $3 ». Si cela était votre intention, vous devrez\nvous connecter et choisir un nouveau mot de passe.\nVotre mot de passe temporaire expirera dans $5 jour{{PLURAL:$5||s}}.\n\nSi vous n'êtes pas l'auteur de cette demande, ou si vous vous souvenez à présent\nde votre ancien mot de passe et que vous ne souhaitez plus en changer, vous\npouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
+       "passwordremindertext": "Quelqu'un (probablement vous, ayant l'adresse IP $1) a demandé un nouveau mot de\npasse pour {{SITENAME}} ($4). Un mot de passe temporaire a été créé pour\nl'utilisateur « $2 » et est « $3 ». Si cela était votre intention, vous devrez\nvous connecter et choisir un nouveau mot de passe.\nVotre mot de passe temporaire expirera dans $5 jour{{PLURAL:$5||s}}.\n\nSi vous n'êtes pas l'auteur de cette demande, ou si vous vous souvenez à présent\nde votre ancien mot de passe et que vous ne souhaitez plus en changer, vous\npouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
        "noemail": "Aucune adresse de courriel n'a été enregistrée pour l'utilisateur « $1 ».",
        "noemailcreate": "Vous devez fournir une adresse de courriel valide",
        "passwordsent": "Un nouveau mot de passe a été envoyé à l'adresse de courriel de l'utilisateur « $1 ». Veuillez vous reconnecter après l'avoir reçu.",
        "passwordreset-emaildisabled": "Les fonctionnalités e-mail ont été désactivées sur ce wiki.",
        "passwordreset-username": "Nom d'utilisateur :",
        "passwordreset-domain": "Domaine :",
-       "passwordreset-capture": "Voir le courriel résultant?",
+       "passwordreset-capture": "Voir le courriel résultant ?",
        "passwordreset-capture-help": "Si vous cochez cette case, le courriel (avec le mot de passe temporaire) vous sera affiché en même temps qu'il sera envoyé à l'utilisateur.",
        "passwordreset-email": "Adresse de courriel :",
        "passwordreset-emailtitle": "Détails du compte sur {{SITENAME}}",
        "revdelete-text-text": "Les révisions supprimées continueront à apparaître dans l’historique de la page, mais une partie de leur contenu sera inaccessible au public.",
        "revdelete-text-file": "Les versions de fichier supprimées continueront à apparaître dans l’historique des fichiers, mais une partie de leur contenu sera indisponible au public.",
        "logdelete-text": "Les évènements du journal supprimés continueront à apparaître dans les journaux, mais une partie de leur contenu sera indisponible au public.",
-       "revdelete-text-others": "Les autres administrateurs de {{SITENAME}} seront toujours capables d'accéder au contenu caché et peuvent le restaurer à nouveau par cette interface, à moins que des restrictions additionnelles soient définies.",
+       "revdelete-text-others": "Les autres administrateurs seront toujours en mesure d'accéder au contenu caché et le restaurer, à moins que des restrictions supplémentaires soient fixées.",
        "revdelete-confirm": "Confirmez que vous voulez effectuer cette action, que vous en comprenez les conséquences, et que vous le faites en accord avec [[{{MediaWiki:Policy-url}}|les règles]].",
        "revdelete-suppress-text": "La suppression ne doit être utilisée '''que''' dans les cas suivants :\n* Informations potentiellement diffamatoires\n* Informations personnelles inappropriées\n*: ''adresse, numéro de téléphone, numéro de sécurité sociale, …''",
        "revdelete-legend": "Mettre en place des restrictions de visibilité :",
        "right-deletedtext": "Voir le texte supprimé et les différences entre les versions supprimées",
        "right-browsearchive": "Rechercher des pages supprimées",
        "right-undelete": "Restaurer une page supprimée",
-       "right-suppressrevision": "Examiner et restaurer les versions masquées aux administrateurs",
+       "right-suppressrevision": "Afficher, masquer et démasquer des révisions spécifiques de pages pour n’importe quel utilisateur",
+       "right-viewsuppressed": "Afficher les révisions masquées pour n’importe quel utilisateur",
        "right-suppressionlog": "Voir les journaux privés",
        "right-block": "Bloquer en écriture d'autres utilisateurs",
        "right-blockemail": "Empêcher un utilisateur d'envoyer des courriels",
index 8320af5..d970349 100644 (file)
@@ -9,7 +9,9 @@
                        "Vipuser",
                        "Xiaomingyan",
                        "아라",
-                       "Mywood"
+                       "Mywood",
+                       "Impersonator 1",
+                       "LNDDYL"
                ]
        },
        "tog-underline": "下劃連結",
        "talkpagelinktext": "談詑",
        "specialpage": "特殊頁",
        "personaltools": "個人工具",
-       "postcomment": "話滴想法",
        "articlepage": "看吖文章",
        "talk": "談詑",
        "views": "望下",
        "externaldberror": "外部驗證資料庫出錯,或倷更新伓正倷嗰外部帳戶。",
        "login": "登入",
        "nav-login-createaccount": "登入/新開隻帳戶",
-       "loginprompt": "要開到cookies才登入得正{{SITENAME}}。",
        "userlogin": "登入/新開隻帳戶",
        "userloginnocreate": "登入",
        "logout": "退出",
index ddda55f..bf20771 100644 (file)
        "revdelete-text-text": "As revisións borradas seguirán aparecendo no historial da páxina, pero partes do seu contido serán inaccesibles para o público.",
        "revdelete-text-file": "As revisións borradas do ficheiro seguirán aparecendo no historial do ficheiro, pero partes do seu contido serán inaccesibles para o público.",
        "logdelete-text": "Os rexistros de eventos borrados seguirán aparecendo nos rexistros, pero partes do seu contido serán inaccesibles para o público.",
-       "revdelete-text-others": "Os outros administradores de {{SITENAME}} seguirán tendo acceso aos contidos agochados e poderán restauralos a través desta mesma interface, a menos que se definan restricións adicionais.",
+       "revdelete-text-others": "Os outros administradores seguirán tendo acceso aos contidos agochados e poderán restauralos, a menos que se definan restricións adicionais.",
        "revdelete-confirm": "Por favor, confirme que quere levar a cabo esta acción, que comprende as consecuencias e que o fai de acordo [[{{MediaWiki:Policy-url}}|coas políticas]].",
        "revdelete-suppress-text": "A eliminación '''unicamente''' debería utilizarse nos seguintes casos:\n* Información potencialmente difamatoria\n* Información persoal inapropiada\n*: ''domicilios e números de teléfono, números da seguridade social etc.''",
        "revdelete-legend": "Aplicar restricións de visibilidade",
        "right-deletedtext": "Ver texto borrado e cambios entre revisións eliminadas",
        "right-browsearchive": "Procurar páxinas borradas",
        "right-undelete": "Restaurar unha páxina",
-       "right-suppressrevision": "Revisar e restaurar as revisións agochadas dos administradores",
+       "right-suppressrevision": "Revisar, agochar e restaurar revisións específicas de páxinas de calquera usuario",
+       "right-viewsuppressed": "Ver revisións agochadas por calquera usuario",
        "right-suppressionlog": "Ver rexistros privados",
        "right-block": "Bloquear outros usuarios fronte á edición",
        "right-blockemail": "Bloquear un usuario fronte ao envío dun correo electrónico",
        "license": "Licenza:",
        "license-header": "Licenza",
        "nolicense": "Ningunha seleccionada",
+       "licenses-edit": "Editar as opcións de licenza",
        "license-nopreview": "(A vista previa non está dispoñible)",
        "upload_source_url": "  (un URL válido e accesible publicamente)",
        "upload_source_file": "  (un ficheiro no seu ordenador)",
index f3a899f..d7d77c3 100644 (file)
        "revdelete-text-text": "גרסאות שנמחקו עדיין תופענה בהיסטוריית הדף, אך חלקים מהתוכן שלהן לא יהיו זמינים לציבור.",
        "revdelete-text-file": "גרסאות קבצים שנמחקו עדיין תופענה בהיסטוריית הקובץ, אך חלקים מהתוכן שלהן לא יהיו זמינים לציבור.",
        "logdelete-text": "פעולות יומן שנמחקו עדיין תופענה בדפי היומנים, אך חלקים מהתוכן שלהן לא יהיו זמינים לציבור.",
-       "revdelete-text-others": "×\9eפע×\99×\9c×\99 ×\9eער×\9bת ×\90×\97ר×\99×\9d ×\91×\90תר ×¢×\93×\99×\99×\9f ×\99×\95×\9b×\9c×\95 ×\9c×\92שת ×\9cת×\95×\9b×\9f ×\94נסתר ×\95×\99×\95×\9b×\9c×\95 ×\9cש×\97×\96ר ×\90×\95ת×\95 ×©×\95×\91 ×\93ר×\9a ×\94×\9e×\9eשק ×\94×\96×\94, אלא אם כן תוגדרנה הגבלות נוספות.",
+       "revdelete-text-others": "×\9eפע×\99×\9c×\99 ×\9eער×\9bת ×\90×\97ר×\99×\9d ×¢×\93×\99×\99×\9f ×\99×\95×\9b×\9c×\95 ×\9c×\92שת ×\9cת×\95×\9b×\9f ×\94נסתר ×\9b×\93×\99 ×\9cש×\97×\96ר ×\90×\95ת×\95, אלא אם כן תוגדרנה הגבלות נוספות.",
        "revdelete-confirm": "אנא אשרו שזה אכן מה שאתם מתכוונים לעשות, שאתם מבינים את התוצאות של מעשה כזה, ושהמעשה מבוצע בהתאם ל[[{{MediaWiki:Policy-url}}|נוהלי האתר]].",
        "revdelete-suppress-text": "יש להשתמש בהסתרה מלאה '''אך ורק''' במקרים הבאים:\n* מידע שעלול להיות לשון הרע\n* חשיפת מידע אישי\n*: '''כתובות בתים ומספרי טלפון, מספרי זיהוי מדינתיים, וכדומה'''",
        "revdelete-legend": "הגדרת הגבלות התצוגה",
        "right-deletedtext": "צפייה בטקסט מחוק ובהבדלים בין גרסאות מחוקות",
        "right-browsearchive": "חיפוש דפים מחוקים",
        "right-undelete": "שחזור דף מחוק",
-       "right-suppressrevision": "בדיקה ושחזור של גרסאות המוסתרות ממפעילי המערכת",
+       "right-suppressrevision": "הצגה, הסתרה וביטול הסתרה של גרסאות מסוימות של דפים מכל המשתמשים",
+       "right-viewsuppressed": "הצגת גרסאות שמוסתרות מכל המשתמשים",
        "right-suppressionlog": "צפייה ביומנים פרטיים",
        "right-block": "חסימת משתמשים אחרים מעריכה",
        "right-blockemail": "חסימת משתמש משליחת דואר אלקטרוני",
index 6845717..8ff0b40 100644 (file)
        "view": "दर्शाव",
        "view-foreign": "$1 पर देखें",
        "edit": "सम्पादन",
+       "edit-local": "स्थानीय विवरण सम्पादन",
        "create": "बनाएँ",
+       "create-local": "स्थानीय विवरण निर्माण",
        "editthispage": "इस पृष्ठ को बदलें",
        "create-this-page": "यह पृष्ठ बनाएँ",
        "delete": "हटाएँ",
        "talkpagelinktext": "चर्चा",
        "specialpage": "विशेष पृष्ठ",
        "personaltools": "वैयक्तिक औज़ार",
-       "postcomment": "नया अनुभाग",
        "articlepage": "सामग्री पृष्ठ देखें",
        "talk": "चर्चा",
        "views": "दर्शाव",
        "jumptonavigation": "भ्रमण",
        "jumptosearch": "खोज",
        "view-pool-error": "क्षमा करें, इस समय सर्वरों पर अतिभार है।\nबहुत सारे प्रयोक्ता इस पृष्ठ को देखने का प्रयास कर रहे हैं।\nकृपया कुछ समय प्रतीक्षा कर फिर से इस पृष्ठ को देखने का प्रयास करें।\n\n$1",
+       "generic-pool-error": "क्षमा करें, इस समय सर्वरों पर अत्यधिक भार है।\nइस सामग्री को बहुत अधिक प्रयोक्ता देखने का प्रयत्न कर रहे हैं।\nकृपया इसे देखने का पुनः यत्न कुछ समय पश्चात करें।",
        "pool-timeout": "तालाबन्दी के लिए प्रतीक्षा समय समाप्त",
        "pool-queuefull": "पूल पंक्ति भरी हुई है",
        "pool-errorunknown": "अज्ञात त्रुटि",
        "externaldberror": "या तो प्रमाणिकरण डाटाबेस में त्रुटि हुई है या फिर आपको अपना बाह्य खाता अपडेट करने की अनुमति नहीं है।",
        "login": "लॉग इन",
        "nav-login-createaccount": "सत्रारंभ / खाता खोलें",
-       "loginprompt": "{{SITENAME}} पर लॉग इन करने के लिए अपने ब्राउज़र पर कुकीज़ (cookies) सक्षम करें।",
        "userlogin": "सत्रारंभ / खाता खोलें",
        "userloginnocreate": "लॉग इन",
        "logout": "सत्रांत",
        "gotaccountlink": "लॉग इन",
        "userlogin-resetlink": "अपनी प्रवेश जानकारी भूल गए हैं?",
        "userlogin-resetpassword-link": "अपना पासवर्ड भूल गए?",
+       "userlogin-helplink2": "लॉग इन करने में सहायता",
        "userlogin-loggedin": "आप {{GENDER:$1|$1}} के रूप में पहले से लॉग्ड इन हैं।\nकिसी अन्य सदस्य के रूप में लॉग इन करने के लिए निम्नलिखित फ़ॉर्म का प्रयोग करें।",
        "userlogin-createanother": "एक अन्य खाता खोलें",
        "createacct-emailrequired": "ई-मेल पता",
        "edit-gone-missing": "पृष्ठ अद्यतित न किया जा सका।\nलगता है यह हटा दिया गया है।",
        "edit-conflict": "संपादन अंतर्विरोध",
        "edit-no-change": "आपने कोई बदलाव ही नहीं किए, अतः आपके इस संपादन को नज़रंदाज़ कर दिया गया है।",
+       "postedit-confirmation-created": "पृष्ठ निर्मित किया गया है।",
+       "postedit-confirmation-restored": "पृष्ठ पुरानी स्थिति पर लाया गया है।",
        "postedit-confirmation-saved": "आपका सम्पादन सहेजा गया है।",
        "edit-already-exists": "नया पृष्ठ बनाया नहीं जा सका।\nयह पहले से मौजूद है।",
        "defaultmessagetext": "संदेश का डिफ़ॉल्ट पाठ",
        "parser-template-loop-warning": "साँचा चक्र मिला: [[$1]]",
        "parser-template-recursion-depth-warning": "साँचा पुनरावर्ती गहराई सीमा पार ($1)",
        "language-converter-depth-warning": "भाषा कन्वर्टर गहराई सीमा से बाहर गया ( $1 )",
-       "node-count-exceeded-category": "पृष्ठ जिनमें नोड-संख्या पार की गई है",
+       "node-count-exceeded-category": "पृष्ठ जिनमें नोड-संख्या सीमा पार की गई है",
+       "node-count-exceeded-category-desc": "यह उन पृष्ठों की श्रेणी है जिनमें नोड-संख्या सीमा पार की गयी है।",
        "node-count-exceeded-warning": "पृष्ठ ने नोड-संख्या पार की है",
        "expansion-depth-exceeded-category": "पृष्ठ जिनमें विस्तार गहराई पार की गई है",
+       "expansion-depth-exceeded-category-desc": "यह उन पृष्ठों की श्रेणी है जिनमें विस्तार गहराई पार की गयी है।",
        "expansion-depth-exceeded-warning": "पृष्ठ में विस्तार गहराई पार की गई है",
        "parser-unstrip-loop-warning": "Unstrip लूप पाया गया",
        "parser-unstrip-recursion-limit": "Unstrip पुनरावर्तन सीमा पार की गई ($1)",
        "currentrev": "सद्य अवतरण",
        "currentrev-asof": "$1 के समय का अवतरण",
        "revisionasof": "$1 का अवतरण",
-       "revision-info": "$2 द्वारा परिवर्तित $1 का अवतरण",
+       "revision-info": "{{GENDER:$6|$2}} द्वारा परिवर्तित $1 का अवतरण$7",
        "previousrevision": "← पुराना अवतरण",
        "nextrevision": "नया अवतरण →",
        "currentrevisionlink": "वर्तमान अवतरण",
        "revdelete-no-file": "निर्दिष्ट फ़ाइल मौजूद नहीं है।",
        "revdelete-show-file-confirm": "क्या आप वाकई फ़ाइल \"<nowiki>$1</nowiki>\" के $2 को $3 बजे बने, हटाए जा चुके अवतरण को देखना चाहते हैं?",
        "revdelete-show-file-submit": "हाँ",
+       "revdelete-selected-text": "[[:$2]] {{PLURAL:$1|का|के}} चयनित अवतरण:",
+       "revdelete-selected-file": "[[:$2]] {{PLURAL:$1|का|के}} चयनित फ़ाइल अवतरण:",
        "logdelete-selected": "{{PLURAL:$1|चुना हुआ|चुने हुए}} लॉग इवेंट:",
        "revdelete-confirm": "पुष्टि करें कि आप यह कार्य करना चाहते हैं, आप इसका परिणाम समझते हैं, और आप ये [[{{MediaWiki:Policy-url}}|नीति]] के अनुसार कर रहे हैं।",
        "revdelete-suppress-text": "छिपाने का प्रयोग <strong>केवल</strong> इन परिस्थितियों में होना चाहिए:\n* संभावित अपमानजनक जानकारी\n* अनुपयुक्त निजी जानकारी\n*: <em>घर के पते व दूरभाष, राष्ट्रीय पहचान क्रमांक आदि।</em>",
        "right-move": "पृष्ठ स्थानांतरित करें",
        "right-move-subpages": "पृष्ठ उपपृष्ठों सहित स्थानांतरीत करें",
        "right-move-rootuserpages": "मूल सदस्य पृष्ठ स्थानांतरित करें",
+       "right-move-categorypages": "श्रेणी पृष्ठ स्थानांतरित करें",
        "right-movefile": "संचिकाएँ स्थानांतरित करें",
        "right-suppressredirect": "पृष्ठ स्थानांतरित करते समय पुनर्निर्देश ना छोड़ें",
        "right-upload": "फ़ाइल अपलोड करें",
        "action-createpage": "पृष्ठ बनाने",
        "action-createtalk": "वार्ता पृष्ठ बनाने",
        "action-createaccount": "यह सदस्य खाता खोलने",
+       "action-history": "इस पृष्ठ का इतिहास देखने",
        "action-minoredit": "इस बदलाव को छोटा बदलाव चिन्हित करने",
        "action-move": "इस पृष्ठ को स्थानांतरित करने",
        "action-move-subpages": "इस पृष्ठ व इसके उप-पृष्ठों को स्थानांतरित करने",
        "action-move-rootuserpages": "मूल सदस्य पृष्ठों को स्थानांतरित करने",
+       "action-move-categorypages": "श्रेणी पृष्ठ स्थानांतरित करने",
        "action-movefile": "इस फ़ाइल को स्थानांतरित करने",
        "action-upload": "इस फ़ाइल को अपलोड करने",
        "action-reupload": "मौजूदा फ़ाइल के स्थान पर नई सामग्री डालने",
        "windows-nonascii-filename": "यह विकि विशेष कैरैक्टरों के साथ फ़ाइल के नामों को स्वीकार नहीं करता।",
        "fileexists": "इस नाम की फ़ाइल पहले से मौजूद है, यदि यह फ़ाइल बदलने में आप साशंक हैं तो कृपया <strong>[[:$1]]</strong> देखें। [[$1|thumb]]",
        "filepageexists": "इस फ़ाइल के लिए विवरण पृष्ठ पहले ही <strong>[[:$1]]</strong> पर बनाया जा चुका है, पर इस नाम की कोई फ़ाइल अभी उपस्थित नहीं है। \nआप जो विवरण देंगे वह विवरण पृष्ठ पर नहीं दिखेगा। \nआपको अपने विवरण को वहाँ डालने के लिए उसका हस्त्य सम्पादन करना पड़ेगा।\n[[$1|thumb]]",
-       "fileexists-extension": "à¤\87स à¤¨à¤¾à¤® à¤¸à¥\87 à¤®à¤¿à¤²à¤¤à¥\87-à¤\9cà¥\81लतà¥\87 à¤¨à¤¾à¤® à¤\95à¥\80 à¤\8fà¤\95 à¤«à¤¼à¤¾à¤\87ल à¤ªà¤¹à¤²à¥\87 à¤¸à¥\87 à¤¹à¥\88: [[$2|thumb]]\n* à¤\85पलà¥\8bड à¤¹à¥\8b à¤°à¤¹à¥\80 à¤«à¤¼à¤¾à¤\87ल à¤\95ा à¤¨à¤¾à¤®: <strong>[[:$1]]</strong>\n* à¤®à¥\8cà¤\9cà¥\82दा à¤«à¤¼à¤¾à¤\87ल à¤\95ा à¤¨à¤¾à¤®: <strong>[[:$2]]</strong>\nà¤\95à¥\83पया à¤\85नà¥\8dय à¤¨à¤¾à¤® à¤\9aà¥\81नà¥\87à¤\82।",
+       "fileexists-extension": "à¤\87स à¤¨à¤¾à¤® à¤¸à¥\87 à¤®à¤¿à¤²à¤¤à¥\87-à¤\9cà¥\81लतà¥\87 à¤¨à¤¾à¤® à¤\95à¥\80 à¤\8fà¤\95 à¤«à¤¼à¤¾à¤\87ल à¤ªà¤¹à¤²à¥\87 à¤¸à¥\87 à¤¹à¥\88: [[$2|thumb]]\n* à¤\85पलà¥\8bड à¤¹à¥\8b à¤°à¤¹à¥\80 à¤«à¤¼à¤¾à¤\87ल à¤\95ा à¤¨à¤¾à¤®: <strong>[[:$1]]</strong>\n* à¤®à¥\8cà¤\9cà¥\82दा à¤«à¤¼à¤¾à¤\87ल à¤\95ा à¤¨à¤¾à¤®: <strong>[[:$2]]</strong>\nशायद à¤\86प à¤\87ससà¥\87 à¤µà¤¿à¤¶à¤¿à¤·à¥\8dà¤\9f à¤¨à¤¾à¤® à¤\95ा à¤ªà¥\8dरयà¥\8bà¤\97 à¤\95रना à¤\9aाहà¥\87à¤\82à¤\97à¥\87?",
        "fileexists-thumbnail-yes": "यह फ़ाइल बड़े चित्र का छोटा आकार ''(अंगूठाकार)'' प्रतीत होता है। [[$1|thumb]]\n<strong>[[:$1]]</strong> फ़ाइल को देखें।\nअगर जाँची गई फ़ाइल इसी आकार की है तो छोटे आकार की फ़ाइल अपलोड करने की आवश्यकता नहीं है।",
        "file-thumbnail-no": "इस फ़ाइल का नाम <strong>$1</strong> से शुरू हो रहा है।\nयह आकार घटाई हुई ''(अंगूठाकार)'' हो सकती है।\nअगर यह चित्र अपने मूल आकार में है तो इसे अपलोड करें, नहीं तो फ़ाइल बदलें।",
        "fileexists-forbidden": "इस नाम की फ़ाइल पहले ही मौजूद है, और इसकी जगह और नहीं अपलोड की जा सकती।\nयदि आप इस फ़ाइल को फिर भी अपलोड करना चाहते हैं, तो कृपया वापस जा के इसके लिए कोई अन्य नाम चुनें।\n[[File:$1|thumb|center|$1]]",
        "uploaddisabledtext": "फ़ाइल अपलोड अक्षम हैं।",
        "php-uploaddisabledtext": "पी॰एच॰पी में फ़ाइल अपलोड बंद हैं।\nकृपया file_uploads जमाव की जाँच करें।",
        "uploadscripted": "इस फ़ाइल में एच॰टी॰एम॰एल या स्क्रिप्ट कोड है, जो वेब ब्राउज़र द्वारा गलत पढ़ा जा सकता है।",
+       "uploadscriptednamespace": "इस एस॰वी॰जी फ़ाइल में अमान्य नामस्थान \"$1\" है।",
        "uploadinvalidxml": "अपलोड की गई फ़ाइल में स्थित XML पार्स नहीं की जा सकी।",
        "uploadvirus": "इस फ़ाइल में व्हाईरस हैं! अधिक जानकारी: $1",
        "uploadjava": "यह फ़ाइल एक ज़िप फ़ाइल है जिसमें एक जावा .class फ़ाइल है।\nजावा फ़ाइलों को अपलोड करना वर्जित है, क्योंकि इनके कारण सुरक्षा बाधाएँ पार की जा सकती हैं।",
        "license": "लाइसेन्सिंग:",
        "license-header": "लाइसेन्सिंग",
        "nolicense": "कुछ भी नहीं चुना",
+       "licenses-edit": "लाइसेंस विकल्प सम्पादन",
        "license-nopreview": "(झलक उपलब्ध नहीं है)",
        "upload_source_url": " (एक वैध, सभी जगहों से उपलब्ध यू॰आर॰एल)",
        "upload_source_file": " (आपके कम्प्यूटर से फ़ाइल)",
+       "listfiles-delete": "हटाएँ",
        "listfiles-summary": "यह विशेष पृष्ठ सभी अपलोड की गई फ़ाइलें दर्शाता है।",
        "listfiles_search_for": "मीडिया नाम के लिये खोजें:",
        "imgfile": "फ़ाइल",
        "filedelete-maintenance": "रखरखाव चल रहा है और रखरखाव के दौरान फ़ाइलों को हटाना और पुनर्स्थापित करना अक्षम है।",
        "filedelete-maintenance-title": "फ़ाइल हटा नहीं सकते",
        "mimesearch": "MIME खोज",
-       "mimesearch-summary": "MIME-प्रकारों के अनुसार फ़ाइलें खोजने के लिये इस पृष्ठ का इस्तेमाल किया जा सकता है।\nइनपुट: फ़ाइल का प्रकार/उपप्रकार, उदा. <code>image/jpeg</code>.",
+       "mimesearch-summary": "MIME-प्रकारों के अनुसार फ़ाइलें खोजने के लिये इस पृष्ठ का इस्तेमाल किया जा सकता है।\nइनपुट: फ़ाइल का प्रकार/उपप्रकार या प्रकार/*, उदा. <code>image/jpeg</code>।",
        "mimetype": "MIME प्रकार:",
        "download": "डाउनलोड",
        "unwatchedpages": "ध्यान न दिये हुए पृष्ठ",
        "wantedtemplates": "वांछित साँचे",
        "mostlinked": "सर्वाधिक से जुड़े हुए पृष्ठ",
        "mostlinkedcategories": "सर्वाधिक से जुड़ी हुई श्रेणियाँ",
-       "mostlinkedtemplates": "सरà¥\8dवाधिà¤\95 à¤¸à¥\87 à¤\9cà¥\81ड़à¥\87 à¤¹à¥\81à¤\8f à¤¸à¤¾à¤\81à¤\9aà¥\87",
+       "mostlinkedtemplates": "सरà¥\8dवाधिà¤\95 à¤\9fà¥\8dराà¤\82सà¤\95à¥\8dलà¥\82ड à¤\95ियà¥\87 à¤\97यà¥\87 à¤ªà¥\83षà¥\8dठ",
        "mostcategories": "सर्वाधिक श्रेणियों वाले पृष्ठ",
        "mostimages": "सर्वाधिक से जुड़ी हुई फ़ाइलें",
        "mostinterwikis": "सर्वाधिक अंतरविकी कड़ियों वाले पृष्ठ",
        "duplicate-defaultsort": "'''Warning:''' पुरानी मूल क्रमांकन कुंजी \"$1\" के बजाय अब मूल क्रमांकन कुंजी \"$2\" होगी।",
        "version": "रूपान्तर",
        "version-extensions": "इन्स्टॉल की हुई एक्स्टेंशन",
+       "version-skins": "इन्स्टॉल की गयी त्वचाएँ",
        "version-specialpages": "विशेष पृष्ठ",
        "version-parserhooks": "पार्सर हूक",
        "version-variables": "वेरिएबल",
        "version-antispam": "अवांछित-ईमेल रोकथाम",
-       "version-skins": "त्वचाएं",
        "version-other": "अन्य",
        "version-mediahandlers": "मीडिया संचालक",
        "version-hooks": "हूक",
index 62fd035..09f9936 100644 (file)
        "prefs-watchlist-token": "Token popisa praćenja:",
        "prefs-misc": "Razno",
        "prefs-resetpass": "Promijeni lozinku",
-       "prefs-changeemail": "Promijeni E-mail",
+       "prefs-changeemail": "promijeni e-mail",
        "prefs-setemail": "Postavite E-mail adresu",
        "prefs-email": "Mogućnosti e-maila",
        "prefs-rendering": "Izgled",
index f6e3c30..514b944 100644 (file)
        "revdelete-text-text": "Versiones delite continua a apparer in le historia del pagina, ma parte de lor contento essera inaccessibile pro le publico.",
        "revdelete-text-file": "Versiones delite de un file continua a apparer in le historia del file, ma parte de lor contento essera inaccessibile pro le publico.",
        "logdelete-text": "Eventos delite continua a apparer in le registros, ma parte de lor contento essera inaccessibile pro le publico.",
-       "revdelete-text-others": "Altere administratores in {{SITENAME}} continua a poter acceder al contento abscondite e pote restaurar lo per medio de iste mesme interfacie, a minus que additional restrictiones ha essite definite.",
+       "revdelete-text-others": "Altere administratores continua a poter acceder al contento celate e restaurar lo, a minus que additional restrictiones ha essite definite.",
        "revdelete-confirm": "Per favor confirma que tu ha le intention de facer isto, que tu comprende le consequentias, e que tu face isto in accordo con [[{{MediaWiki:Policy-url}}|le politica]].",
        "revdelete-suppress-text": "Le suppression debe '''solmente''' esser usate pro le sequente casos:\n* Information potentialmente diffamatori\n* Information personal inappropriate\n*: ''adresses de domicilio e numeros de telephono, numeros de securitate social, etc.''",
        "revdelete-legend": "Definir restrictiones de visibilitate",
        "right-deletedtext": "Vider texto delite e differentias inter versiones delite",
        "right-browsearchive": "Cercar in paginas delite",
        "right-undelete": "Restaurar un pagina",
-       "right-suppressrevision": "Revider e restaurar versiones celate ab administratores",
+       "right-suppressrevision": "Vider, celar e revelar versiones specific de paginas de qualcunque usator",
+       "right-viewsuppressed": "Vider versiones celate de qualcunque usator",
        "right-suppressionlog": "Vider registros private",
        "right-block": "Blocar altere usatores de facer modificationes",
        "right-blockemail": "Blocar un usator de inviar e-mail",
        "license": "Licentia:",
        "license-header": "Licentia",
        "nolicense": "Nulle licentia seligite",
+       "licenses-edit": "Modificar optiones de licentia",
        "license-nopreview": "(Previsualisation non disponibile)",
        "upload_source_url": " (un adresse URL valide e publicamente accessibile)",
        "upload_source_file": " (un file in tu computator)",
index 7bea4ef..ecd4f61 100644 (file)
                ]
        },
        "tog-underline": "Pinag-ugisan ti silpo:",
-       "tog-hideminor": "Ilemmeng dagiti bassit a panagbaliw kadagiti naudi a sinuk-sukatan",
-       "tog-hidepatrolled": "Ilemmeng dagiti napatruliaan nga inurnos kadagiti naudi a sinuk-sukatan",
+       "tog-hideminor": "Ilemmeng dagiti bassit a inurnos iti kaudian a balbaliw",
+       "tog-hidepatrolled": "Ilemmeng dagiti napatruliaan nga inurnos iti kaudian a balbaliw",
        "tog-newpageshidepatrolled": "Ilemmeng dagiti napatruliaan a panid manipud ti baro a listaan ti panid",
-       "tog-extendwatchlist": "Ipalawa ti listaan ti bambantayan tapno maipakita amin a nasukatan, tapno saan laeng a dagiti nabiit",
-       "tog-usenewrc": "Dagiti grupo a panagbaliw babaen ti panid kadagiti kinaudi a panagbaliw ken banbantayan",
+       "tog-extendwatchlist": "Ipalawa ti listaan ti bambantayan tapno maipakita amin a nasukatan, saan laeng a ti kabiitan",
+       "tog-usenewrc": "Dagiti grupo a panagbaliw babaen ti panid ti kaudian a balbaliw ken listaan ti bambantayan",
        "tog-numberheadings": "Automatiko a pabilangan dagiti paulo",
        "tog-showtoolbar": "Ipakita ti baras ti ramit ti panag-urnos",
        "tog-editondblclick": "Urnosen dagiti panid iti mamindua a panagpindut",
-       "tog-editsectiononrightclick": "Pakabaelan ti panag-urnos ti paset babaen ti kanawan a panagpindut kadagiti titulo ti paset",
-       "tog-watchcreations": "Agnayon kadagiti panid a pinartuatko ken papeles nga inkargak idiay listaan ti bambantayak",
-       "tog-watchdefault": "Agnayon kadagiti panid ken papeles nga inurnosko idiay listaan ti bambantayak",
-       "tog-watchmoves": "Agnayon kadagiti panid ken papeles nga inyalisko idiay listaan ti bambantayak",
-       "tog-watchdeletion": "Agnayon kadagiti panid ken papeles nga inikkatko idiay listaan ti bambantayak",
-       "tog-minordefault": "Markaan amin nga inurnos a kas sigud a bassit",
+       "tog-editsectiononrightclick": "Pakabaelan ti panag-urnos iti paset babaen ti panagpindut iti kanawan kadagiti titulo ti paset",
+       "tog-watchcreations": "Agnayon kadagiti panid a pinartuatko ken papeles nga inkargak iti listaan ti bambantayak",
+       "tog-watchdefault": "Agnayon kadagiti panid ken papeles nga inurnosko iti listaan ti bambantayak",
+       "tog-watchmoves": "Agnayon kadagiti panid ken papeles nga inyalisko iti listaan ti bambantayak",
+       "tog-watchdeletion": "Agnayon kadagiti panid ken papeles nga inikkatko iti listaan ti bambantayak",
+       "tog-minordefault": "Markaan amin dagiti inurnos a kas bassit babaen ti kasisigud",
        "tog-previewontop": "Ipakita ti panagipadas sakbay ti pagurnosan a kahon",
        "tog-previewonfirst": "Ipakita ti pinadas iti umuna a panag-urnos",
-       "tog-enotifwatchlistpages": "Esuratannak no mabaliwan ti panid wenno papeles idiay listaan dagiti bambantayak",
+       "tog-enotifwatchlistpages": "Esuratannak no mabaliwan ti panid wenno papeles iti listaan dagiti bambantayak",
        "tog-enotifusertalkpages": "Esuratannak no mabaliwan ti panid ti tungtungak",
        "tog-enotifminoredits": "Esuratannak pay para kadagiti bassit a panag-urnos kadagiti panid ken papeles",
-       "tog-enotifrevealaddr": "Iparang ti pagtaengan ti esuratko kadagiti panagipakaaammo nga esurat",
+       "tog-enotifrevealaddr": "Iparang ti pagtaengan ti esuratko iti panagipakaaammo kadagiti esurat",
        "tog-shownumberswatching": "Ipakita ti bilang dagiti agbuybuya nga agar-aramat",
        "tog-oldsig": "Ti adda a pirma:",
-       "tog-fancysig": "Tratuen ti pirma a kas wikitext (nga awan ti automatiko a panagsilpo)",
-       "tog-uselivepreview": "Usaren ti agdama a panagipadas (eksperimento)",
-       "tog-forceeditsummary": "Pakaammuannak no sumrek ti blanko a pakabuklan ti panag-urnos",
+       "tog-fancysig": "Tratuen ti pirma a kas wikitext (nga awan ti automatiko a silpo)",
+       "tog-uselivepreview": "Usaren ti agdama a panagipadas (eksperimental)",
+       "tog-forceeditsummary": "Pakaammuannak no sumrek iti blanko a pakabuklan ti panag-urnos",
        "tog-watchlisthideown": "Ilemmeng dagiti inurnosko manipud ti listaan ti bambantayan",
        "tog-watchlisthidebots": "Ilemmeng dagiti inurnos ti bot manipud ti listaan ti bambantayan",
        "tog-watchlisthideminor": "Ilemmeng dagiti bassit nga inurnos manipud ti listaan ti bambantayan",
-       "tog-watchlisthideliu": "Ilemmeng dagiti inurnos ti nakasterk nga agar-aramat manipud ti listaan ti bambantayan",
-       "tog-watchlisthideanons": "Ilemmeng dagiti inurnos ti di am-ammo nga agar-aramat manipud ti listaan ti bambantayan",
+       "tog-watchlisthideliu": "Ilemmeng dagiti inurnos babaen dagiti nakastrek nga agar-aramat manipud ti listaan ti bambantayan",
+       "tog-watchlisthideanons": "Ilemmeng dagiti inurnos babaen dagiti di ammo nga agar-aramat manipud ti listaan ti bambantayan",
        "tog-watchlisthidepatrolled": "Ilemmeng dagiti napatruliaan nga inurnos manipud ti listaan ti bambantayan",
-       "tog-ccmeonemails": "Patulodandak kadagiti kopia ti esurat nga ipatulodko kadagiti sabsabali nga agar-aramat",
+       "tog-ccmeonemails": "Patulodandak kadagiti kopia ti esurat nga ipatulodko kadagiti sabali nga agar-aramat",
        "tog-diffonly": "Saan nga iparang ti linaon ti panid dita baba dagiti pagiddiatan",
        "tog-showhiddencats": "Ipakita dagiti nailemmeng a kategoria",
        "tog-norollbackdiff": "Laksiden ti paggiddiatan kalpasan ti panagaramid ti panagisubli",
-       "tog-useeditwarning": "Pakaunaannak no pumanawak iti maysa pagurnosan a panid no adda ti saan a naidulin a sinuksukatan",
-       "tog-prefershttps": "Kankanayon nga agusar ti natalged a pannakaisilpo no nakastrek",
+       "tog-useeditwarning": "Pakaunaannak no pumanawak iti maysa pagurnosan a panid nga addaan iti saan a naidulin a sinuksukatan",
+       "tog-prefershttps": "Kankanayon nga agusar ti natalged a koneksion no nakastrek",
        "underline-always": "Kanayon",
        "underline-never": "Saan uray kaanoman",
-       "underline-default": "Kasisigud a kudil wenno pagbasabasa",
-       "editfont-style": "Urnosen ti kita ti letra iti lugar:",
+       "underline-default": "Kudil wenno kasisigud a pagbasabasa",
+       "editfont-style": "Estilo ti kita ti letra ti pagurnosan a lugar:",
        "editfont-default": "Kasisigud a pagbasabasa",
        "editfont-monospace": "Monospaced a kita ti letra",
        "editfont-sansserif": "Sans-serif a kita ti letra",
        "category_header": "Pampanid iti kategoria \"$1\"",
        "subcategories": "Dagiti subkategoria",
        "category-media-header": "Dagiti midia iti kategoria \"$1\"",
-       "category-empty": "''Daytoy a kategoria ket agdama a saan nga aglaon kadagiti panid wenno midia.''",
+       "category-empty": "<em>Daytoy a kategoria ket agdama a saan nga aglaon kadagiti panid wenno midia.</em>",
        "hidden-categories": "{{PLURAL:$1|Nailemmeng a kategoria|Nailemmeng a katkategoria}}",
        "hidden-category-category": "Nailemmeng a katkategoria",
-       "category-subcat-count": "{{PLURAL:$2|Daytoy a kategoria ket adda laeng ti sumaganad a subkategoria.|Daytoy a kategoria ket addaan ti sumaganad a {{PLURAL:$1|a subkategoria|$1 a subkatkategoria}}, manipud ti $2 a dagup.}}",
+       "category-subcat-count": "{{PLURAL:$2|Daytoy a kategoria ket addaan laeng ti sumaganad a subkategoria.|Daytoy a kategoria ket addaan ti sumaganad a {{PLURAL:$1|a subkategoria|$1 a subkatkategoria}}, manipud ti $2 a dagup.}}",
        "category-subcat-count-limited": "Daytoy a kategoria ket addaan ti sumaganad a {{PLURAL:$1|a subkategoria|$1 a subkatkategoria}}.",
        "category-article-count": "{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng ti sumaganad a panid.|Ti sumaganad a {{PLURAL:$1|a panid ket|$1 a pampanid ket dagiti}} adda iti daytoy a kategoria, manipud ti $2 a dagup.}}",
        "category-article-count-limited": "Ti sumaganad a {{PLURAL:$1|panid |$1 a pampanid}} ket adda iti agdama a kategoria.",
        "category-file-count-limited": "Ti sumaganad a {{PLURAL:$1|papeles|$1 a pappapeles}} ket adda iti agdama a kategoria.",
        "listingcontinuesabbrev": "tuloy.",
        "index-category": "Naipagsurotan a pampanid",
-       "noindex-category": "Di naipasurotan a pampanid",
-       "broken-file-category": "Pampanid nga adda nadadael a silsilpo kadagiti papeles",
+       "noindex-category": "Di naipagsurotan a pampanid",
+       "broken-file-category": "Pampanid nga addaan kadagiti nadadael a silpo ti papeles",
        "about": "Maipanggep",
        "article": "Naglaon a panid",
-       "newwindow": "(aglukat iti sabali a tawa)",
+       "newwindow": "(aglukat iti baro a tawa)",
        "cancel": "Ukasen",
        "moredotdotdot": "Adu pay...",
        "morenotlisted": "Daytoy a listaan ket saan a kompleto.",
        "actions": "Dagiti aramid",
        "namespaces": "Dagiti nagan ti espasio",
        "variants": "Sab-sabali a pagsasao",
-       "navigation-heading": "Pagdaliasatan ti pagpilian",
+       "navigation-heading": "Listaan ti pagdaliasatan",
        "errorpagetitle": "Biddut",
        "returnto": "Agsubli idiay $1.",
        "tagline": "Naggapo idiay {{SITENAME}}",
        "view-foreign": "Kitaen idiay $1",
        "edit": "Urnosen",
        "edit-local": "Urnosen ti lokal a deskripsion",
-       "create": "Agaramid",
+       "create": "Agpartuat",
        "create-local": "Agnayon ti lokal a deskripsion",
        "editthispage": "Urnosen daytoy a panid",
        "create-this-page": "Partuaten daytoy a panid",
        "categorypage": "Kitaen ti panid ti kategoria",
        "viewtalkpage": "Kitaen ti pagtungtungan",
        "otherlanguages": "Kadagiti sabali a pagsasao",
-       "redirectedfrom": "(Naibaw-ing manipud idiay $1)",
+       "redirectedfrom": "(Naibaw-ing manipud iti $1)",
        "redirectpagesub": "Baw-ing a panid",
-       "lastmodifiedat": "Daytoy a panid ket naudi a nabaliwan idi $1, idi $2.",
-       "viewcount": "Naserrekan daytoy a panid {{PLURAL:$1|iti naminsan|kadagiti $1 a beses}}.",
+       "lastmodifiedat": "Daytoy a panid ket naudi a nabaliwan idi $1, $2.",
+       "viewcount": "Naserrekanen daytoy a panid {{PLURAL:$1|iti naminsan|kadagiti $1 a beses}}.",
        "protectedpage": "Nasalakniban a panid",
        "jumpto": "Lumaktaw idiay:",
        "jumptonavigation": "pagdaliasatan",
        "jumptosearch": "biruken",
-       "view-pool-error": "Pasensian, dagiti servers ket nadagsenan unay tattan.\nAdu unay dagiti agar-aramat nga agbuy-buya ti daytoy a panid.\nPangaasi nga agurayka met bassit sakbay a padasem manen ti mangserrek daytoy a panid.\n\n$1",
-       "generic-pool-error": "Pasensian, dagiti server ket agdama a nadagsenan unay.\nAdu unay dagiti agar-aramat nga agbuybuya ti daytoy a rekurso.\nPangngaasi nga agurayka bassit sakbay a padasem manen a serrekan daytoy a rekurso.",
+       "view-pool-error": "Pasensian, dagiti server ket nadagsenan unay iti agdama.\nAdu unay dagiti agar-aramat nga agpadpadas nga agbuya iti daytoy a panid.\nPangngaasi nga agurayka bassit sakbay a padasem manen a serrekan daytoy a panid.\n\n$1",
+       "generic-pool-error": "Pasensian, dagiti server ket agdama a nadagsenan iti agdama.\nAdu unay dagiti agar-aramat nga agpadpadas nga agbuya iti daytoy a rekurso.\nPangngaasi nga agurayka bassit sakbay a padasem manen a serrekan daytoy a rekurso.",
        "pool-timeout": "Madamdama agur-uray para iti kandado",
-       "pool-queuefull": "Napunnon ti nagyanan ti pagur-urayan",
-       "pool-errorunknown": "Di am-ammo a biddut",
-       "pool-servererror": "Ti serbisio ti pagbilangan ti pisina ket saan a magun-od ($1).",
+       "pool-queuefull": "Napunnon ti pagyanan ti pagur-urayan",
+       "pool-errorunknown": "Di ammo a biddut",
+       "pool-servererror": "Ti serbisio ti pagbilangan ti pagyanan ti pagur-urayan ket saan a magun-od ($1).",
        "aboutsite": "Maipanggep ti {{SITENAME}}",
        "aboutpage": "Project:Maipanggep",
        "copyright": "Ti linaon ket magun-od babaen ti $1 malaksid no adda sabali a naibaga.",
        "privacypage": "Project:Annuroten ti kinapribado",
        "badaccess": "Biddut ti pammalubos",
        "badaccess-group0": "Awan pammalubosmo a mangpataray ti kiniddawmo nga aramid.",
-       "badaccess-groups": "Ti kiniddawmo nga aramid ket limitado laeng kadagiti agar-aramat {{PLURAL:$2|iti grupo|iti maysa kadagiti grupo}}: ti $1.",
+       "badaccess-groups": "Ti kiniddawmo nga aramid ket limitado laeng kadagiti agar-aramat {{PLURAL:$2|iti grupo|iti maysa kadagiti grupo}}: $1.",
        "versionrequired": "Masapul ti bersion $1 ti MediaWiki",
        "versionrequiredtext": "Masapul ti bersion $1 ti MediaWiki tapno maaramat daytoy a panid. \nKitaen ti [[Special:Version|panid ti bersion]].",
        "ok": "Sige",
        "retrievedfrom": "Naala manipud idiay \"$1\"",
-       "youhavenewmessages": "Addaanka ti $1 ($2).",
-       "youhavenewmessagesfromusers": "Adda $1 manipud {{PLURAL:$3|ti sabali nga agar-aramat|kadagiti $3 a sabsabali nga agar-aramat}} ($2).",
-       "youhavenewmessagesmanyusers": "Adda $1 manipud kadagiti adu nga agar-aramat ($2).",
-       "newmessageslinkplural": "{{PLURAL:$1|a baro a mensahem|999=a baro a menmensahem}}",
-       "newmessagesdifflinkplural": "kinaudi a {{PLURAL:$1|sinukatan|999=sinuksukatan}}",
-       "youhavenewmessagesmulti": "Adda dagiti baro a mensahem iti $1",
+       "youhavenewmessages": "{{PLURAL:$3|Addaanka}} $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Addaanka}} $1 manipud {{PLURAL:$3|ti sabali nga agar-aramat|kadagiti $3 a sabali nga agar-aramat}} ($2).",
+       "youhavenewmessagesmanyusers": "Addaanka $1 manipud kadagiti adu nga agar-aramat ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|iti baro a mensahe|999=kadagiti baro a mensahe}}",
+       "newmessagesdifflinkplural": "naudi a {{PLURAL:$1|sinukatan|999=sinuksukatan}}",
+       "youhavenewmessagesmulti": "Addaanka kadagiti baro a mensahe iti $1",
        "editsection": "urnosen",
        "editold": "urnosen",
        "viewsourceold": "kitaen ti taudan",
        "hidetoc": "ilemmeng",
        "collapsible-collapse": "Rebbaen",
        "collapsible-expand": "Palawaen",
-       "thisisdeleted": "Kitaen wenno isubli ti $1?",
-       "viewdeleted": "Kitaen ti $1?",
+       "thisisdeleted": "Kitaen wenno ipulang $1?",
+       "viewdeleted": "Kitaen $1?",
        "restorelink": "{{PLURAL:$1|ti maysa a naikkat a naurnos|dagiti $1 a naikkat a naurnos}}",
        "feedlinks": "Pakan:",
        "feed-invalid": "Imbalido a kita ti suskrision a pakan.",
        "feed-unavailable": "Saan a magun-od dagiti sindikasion ti pakan",
-       "site-rss-feed": "$1 a pakan ti RSS",
-       "site-atom-feed": "$1 a pakan ti Atom",
-       "page-rss-feed": "\"$1\" a pakan ti RSS",
-       "page-atom-feed": "Pakan nga Atom ti \"$1\"",
+       "site-rss-feed": "Pakan ti RSS ti $1",
+       "site-atom-feed": "Pakan ti Atom ti $1",
+       "page-rss-feed": "Pakan ti RSS ti \"$1\"",
+       "page-atom-feed": "Pakan ti Atom ti \"$1\"",
        "red-link-title": "$1 (awan ti panid)",
        "sort-descending": "Ilasin nga agpababa",
        "sort-ascending": "Ilasin nga agpangato",
        "nstab-help": "Panid ti tulong",
        "nstab-category": "Kategoria",
        "nosuchaction": "Awan ti kasta nga aramid",
-       "nosuchactiontext": "Ti tignay a nainaganan babaen ti URL ket imbalido.\nMabalin a madi ti naimakiniliam nga URL, wenno sinurotmo ti saan nga agpayso a silpo.\nMabalin a daytoy ket kiteb ti sopwer nga us-usaren babaen ti {{SITENAME}}.",
+       "nosuchactiontext": "Ti aramid a nainaganan babaen ti URL ket imbalido.\nMabalin a madi ti naimakiniliam nga URL, wenno sinurotmo ti saan a nasayaat a silpo.\nMabalinmo pay nga ibaga ti parikut ti sopwer nga us-usaren babaen ti {{SITENAME}}.",
        "nosuchspecialpage": "Awan ti kasta nga espesial a panid",
-       "nospecialpagetext": "<strong>Nagkiddawka ti imbalido nga espesial a panid.</strong>\n\nMasarakan ti listaan dagiti umisu nga espesial a pampanid iti [[Special:SpecialPages|{{int:specialpages}}]].",
+       "nospecialpagetext": "<strong>Nagkiddawka ti imbalido nga espesial a panid.</strong>\n\nTi listaan dagiti umisu nga espesial a pampanid ket mabirukan iti [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Biddut",
        "databaseerror": "Biddut iti database",
-       "databaseerror-text": "Adda napasamak a biddut ti usisa ti database.\nDaytoy ket mabalin a mangibagbaga ti parikut ti sopwer.",
-       "databaseerror-textcl": "Adda napasamak a biddut ti usisa ti database.",
+       "databaseerror-text": "Adda napasamak a biddut ti panagusisa ti database.\nDaytoy ket mabalin a mangibagbaga ti parikut ti sopwer.",
+       "databaseerror-textcl": "Adda napasamak a biddut ti pangusisa ti database.",
        "databaseerror-query": "Usisa: $1",
        "databaseerror-function": "Annong: $1",
        "databaseerror-error": "Biddut: $1",
-       "laggedslavemode": "'''Ballaag:''' Ti panid ket mabalin a saan nga aglaon kadagiti kinaudi a panagpabaro.",
+       "laggedslavemode": "<strong>Ballaag:</strong> Ti panid ket mabalin a saan nga aglaon kadagiti kinaudi a panagpabaro.",
        "readonly": "Narikepan ti database",
-       "enterlockreason": "Agikabil ti rason para iti pannakarikep, agraman ti maysa a karkulo no kaanonto a maluktan",
-       "readonlytext": "Ti database ket agdama a nairikpan kadagiti baro a panagikabil ken panagbaliw, mabalin a gapu dagiti kadawyan a pagsimpa, no malpas kadawyanto nga agsubli.\n\nTi administrador a nangrikep ket nangited ti daytoy a palawag: $1",
-       "missing-article": "Ti database ket saan a nakabiruk ti testo ti panid a mabirukanna koma, a napanaganan ti \"$1\" $2.\n\nDaytoy ket kadawyan a gapuanan babaen ti sumaganad a baak a paggiddiatan wenno silpo ti pakasaritaan ti maysa panid a dati a naikkat.\n\nNo saan a kasta, mabalin a nakasarakka ti kiteb ti sopwer.\n\nPangngaasi nga ipadamagmo kadagiti [[Special:ListUsers/sysop|administrador]], isuratmo ti pakaammo dayta nga URL.",
-       "missingarticle-rev": "(binaliwan#: $1)",
-       "missingarticle-diff": "(Sabali: $1, $2)",
-       "readonly_lag": "Automatiko a narikpan ti database kabayatan a dagiti tagabu a database server ket kumamakam iti agturay",
+       "enterlockreason": "Agikabil ti rason para iti pannakarikep, mangiraman ti maysa a karkulo no kaanonto a malukatan",
+       "readonlytext": "Ti database ket agdama a narikpan kadagiti baro a panagikabil ken panagbaliw, mabalin a gapu dagiti kadawyan a pagsimpa, kalpasanna a normalto nga agsubli.\n\nTi administrador a nangrikep ket nangited iti daytoy a palawag: $1",
+       "missing-article": "Ti database ket saan a nakabiruk ti testo ti panid a mabirukanna koma, a nanaganan ti \"$1\" $2.\n\nDaytoy ket kadawyan a gapuanan babaen ti sumaganad a baak a paggiddiatan wenno silpo ti pakasaritaan ti maysa panid a dati a naikkat.\n\nNo saan a kasta, mabalin a nakasarakka ti parikut ti sopwer.\n\nPangngaasi nga ipadamagmo kadagiti [[Special:ListUsers/sysop|administrador]], isuratmo ti pakaammo dayta nga URL.",
+       "missingarticle-rev": "(rebision#: $1)",
+       "missingarticle-diff": "(Dip: $1, $2)",
+       "readonly_lag": "Automatiko a narikpan ti database kabayatan a dagiti tagabu a server ti database ket kumamakam iti agturay",
        "internalerror": "Akin-uneg a biddut",
        "internalerror_info": "Akin-uneg a biddut: $1",
        "filecopyerror": "Saan a makopia ti papeles $1 iti $2.",
        "filerenameerror": "Saan a managanan manen ti papeles \"$1\" iti \"$2\".",
-       "filedeleteerror": "Saan a maikkat ti papeles  \"$1\".",
-       "directorycreateerror": "Saan a maaramid ti direktorio \"$1\".",
+       "filedeleteerror": "Saan a maikkat ti papeles \"$1\".",
+       "directorycreateerror": "Saan a mapartuat ti direktorio \"$1\".",
        "filenotfound": "Saan a mabirukan ti papeles \"$1\".",
-       "unexpected": "Di mapakpakadaaan a pateg: \"$1\"=\"$2\".",
+       "unexpected": "Di nanamnama a pateg: \"$1\"=\"$2\".",
        "formerror": "Biddut: saan a maited ti porma.",
        "badarticleerror": "Saan a matungpal daytoy nga aramid iti daytoy a panid.",
-       "cannotdelete": "Ti panid wenno ti papeles \"$1\" ket saan a maikkat.\nAmangan no adda sabali a nangikkaten.",
-       "cannotdelete-title": "Saan a maikkat ti panid  \"$1\"",
-       "delete-hook-aborted": "Inukas ti kawit ti panagborra.\nAwan ti intedna a palawag.",
-       "no-null-revision": "Saan a makaaramid ti awan serbina a panagbaliw para iti panid \"$1\"",
+       "cannotdelete": "Ti panid wenno papeles ti \"$1\" ket saan a maikkat.\nAmangan no adda sabali a nangikkaten.",
+       "cannotdelete-title": "Saan a maikkat ti panid ti \"$1\"",
+       "delete-hook-aborted": "Pinasardeng ti panagikkat babaen ti kawit.\nAwan ti intedna a palawag.",
+       "no-null-revision": "Saan a makapartuat ti awan serbina a panagbaliw para iti panid ti \"$1\"",
        "badtitle": "Madi a titulo",
-       "badtitletext": "Ti kiniddaw idi a titulo ti panid ket imbalido, blanko, wenno maysa a saan nga husto a naisilpo a silpo ti pagsasao wenno interwiki a titulo.\nMabalin nga aglaon ti a maysa wenno ad-adu a karakter a saan a mausar kadagiti titulo.",
+       "badtitletext": "Ti kiniddaw idi a titulo ti panid ket imbalido, blanko, wenno maysa a saan a husto a naisilpo a silpo ti pagsasao wenno interwiki a titulo.\nMabalin nga aglaon ti a maysa wenno ad-adu a karakter a saan a mausar kadagiti titulo.",
        "perfcached": "Ti sumaganad a datos ket naidulin ken mabalin a saan a napabaro. Ti kaadu {{PLURAL:$1|iti maysa a nagbanagan|dagiti $1 a nagbanagan}} ket magun-od idiay nagidulinan.",
-       "perfcachedts": "Ti sumaganad a datos ket naidulin, ken naudi a napabaro idi $1. Ti kaadu a {{PLURAL:$4|iti maysa a nagbanagan |dagiti $4 nagbanagan}} ket magun-od idiay pagidulinan.",
-       "querypage-no-updates": "Dagiti panangpabaro iti daytoy a panid ket agdama a nabaldado. \nSaan a mipasaradiwa ita dagiti datos ditoy.",
+       "perfcachedts": "Ti sumaganad a datos ket naidulin, ken naudi a napabaro idi $1. Ti kaadu a {{PLURAL:$4|iti maysa a nagbanagan|dagiti $4 nagbanagan}} ket magun-od idiay pagidulinan.",
+       "querypage-no-updates": "Dagiti panangpabaro iti daytoy a panid ket agdama a nabaldado. \nSaan a mapasadiwa ita dagiti datos ditoy.",
        "viewsource": "Kitaen ti taudan",
        "viewsource-title": "Kitaen ti taudan para iti $1",
        "actionthrottled": "Napabuntog ti aramid",
        "actionthrottledtext": "Para iti pagkontra ti spam, naipatinggaka nga agramid iti daytoy a tignay iti adu unay a beses iti nasiket nga oras, ken nalabsamon daytoy a patingga.\nPangngaasi nga ipadasmo manen no madamdama.",
        "protectedpagetext": "Nasalakniban daytoy a panid tapno mapawilan ti panag-urnos wenno dagiti dadduma pay a tignay.",
        "viewsourcetext": "Mabalinmo a kitaen ken tuladen ti taudan daytoy a panid:",
-       "viewyourtext": "Mabalinmo a makita ken tuladen ti taudan dagiti '''inurnosmo''' ditoy a panid:",
-       "protectedinterface": "Daytoy a panid ket mangited ti testo nga interface para iti sopwer iti daytoy a wiki, ken nasalakniban tapno mapawilan ti panag-abuso.\nTi aginayon wenno panagibaliw kadagiti panagipatarus para kadagiti amin a wiki,  pangngaasi nga usaren ti [//translatewiki.net/ translatewiki.net], ti lokalisasion a gandat ti MediaWiki.",
-       "editinginterface": "'''Ballaag:''' Ur-urnosem ti maysa a panid a maar-aramat a mangted iti testo ti interface para iti sopwer.\nDagiti panagsukat iti daytoy a panid ket maarigan ti langa ti panagaramat nga interface dagiti sabali nga agar-aramat iti daytoy a wiki.\nTi aginayon wenno panagibaliw kadagiti panagipatarus para kadagiti amin a wiki,  pangngaasi nga usaren ti [//translatewiki.net/ translatewiki.net], ti lokalisasion a gandat ti MediaWiki.",
-       "cascadeprotected": "Daytoy a panid ket nasalakniban para iti panag-urnos ngamin ket nairaman kadagiti sumaganad {{PLURAL:$1|a panid, a|a pampanid, a}} nasalakniban nga adda ti napili nga \"agsariap\"  :\n$2",
-       "namespaceprotected": "Awan ti pammalubosmo nga agurnos kadagiti panid iti '''$1''' a nagan ti espasio.",
-       "customcssprotected": "Awan ti pammalubosmo nga agurnos iti daytoy panid ti CSS, ngamin ket adda linaonna a tagikua dagiti agar-aramat ti sabali a kasasaad.",
-       "customjsprotected": "Awan ti pammalubosmo nga agurnos iti daytoy a panid ti JavaScript, ngamin ket adda linaonna a tagikua dagiti agar-aramat ti sabali a kasasaad.",
+       "viewyourtext": "Mabalinmo a makita ken tuladen ti taudan dagiti <strong>inurnosmo</strong> iti daytoy panid:",
+       "protectedinterface": "Daytoy a panid ket mangited ti testo ti interface para iti sopwer iti daytoy a wiki, ken nasalakniban tapno mapawilan ti panag-abuso.\nTi aginayon wenno panagibaliw kadagiti panagipatarus para kadagiti amin a wiki,  pangngaasi nga usaren ti [//translatewiki.net/ translatewiki.net], ti lokalisasion a gandat ti MediaWiki.",
+       "editinginterface": "<strong>Ballaag:</strong> Ur-urnosem ti maysa a panid a maar-aramat a mangted iti testo ti interface para iti sopwer.\nDagiti panagsukat iti daytoy a panid ket maarigan ti langa ti interface ti agar-aramat para kadagiti sabali nga agar-aramat iti daytoy a wiki.\nTi aginayon wenno panagibaliw kadagiti panagipatarus para kadagiti amin a wiki,  pangngaasi nga usaren ti [//translatewiki.net/ translatewiki.net], ti lokalisasion a gandat ti MediaWiki.",
+       "cascadeprotected": "Daytoy a panid ket nasalaknibanen para iti panag-urnos ngamin ket nairaman kadagiti sumaganad {{PLURAL:$1|a panid, a|a pampanid, a}} nasalakniban iti nalukatan a pagpilian ti \"sariap\":\n$2",
+       "namespaceprotected": "Awan ti pammalubosmo nga agurnos kadagiti panid iti nagan ti espasio ti <strong>$1</strong>.",
+       "customcssprotected": "Awan ti pammalubosmo nga agurnos iti daytoy panid ti CSS, ngamin ket naglaon ti personal a pannakaisaad iti sabali agar-aramat.",
+       "customjsprotected": "Awan ti pammalubosmo nga agurnos iti daytoy a panid ti JavaScript, ngamin ket naglaon ti personal a pannakaisaad iti sabali agar-aramat.",
        "mycustomcssprotected": "Awan pammalubosmo nga agurnos iti daytoy a panid ti CSS.",
        "mycustomjsprotected": "Awan pammalubosmo nga agurnos iti daytoy a panid ti JavaScript.",
        "myprivateinfoprotected": "Awan pammalubosmo nga agurnos iti pribado a pakaammom.",
        "mypreferencesprotected": "Awan pammalubosmo nga agurnos kadagiti kakaykayatam.",
        "ns-specialprotected": "Saan a mabalin nga urnosen dagiti espesial a panid.",
-       "titleprotected": "Daytoy a titulo ket nasalakniban manipud ti panakapartuat babaen ni [[User:$1|$1]].\nTi naited a rason ket ''$2''.",
-       "filereadonlyerror": "Di nabaliwan ti papeles \"$1\" gapu ket ti repositorio ti papeles \"$2\" ket mabasa laeng a moda.\n\nTi administrador a nangserra ket nagited iti daytoy a panagilawlawag \"''$3''\".",
+       "titleprotected": "Daytoy a titulo ket nasalakniban manipud ti pannakapartuat babaen ni [[User:$1|$1]].\nTi naited a rason ket \"<em>$2</em>\".",
+       "filereadonlyerror": "Di nabaliwan ti papeles ti \"$1\" gapu ket ti repositorio ti papeles ti \"$2\" ket mabasa laeng a moda.\n\nTi administrador a nangserra ket nangited iti daytoy a panagilawlawag \"''$3''\".",
        "invalidtitle-knownnamespace": "Imbalido a titulo iti nagan ti espasio \"$2\" ken testo \"$3\"",
-       "invalidtitle-unknownnamespace": "Imbalido a titulo iti di-amammo a nagan ti espasio a numero $1 ken testo \"$2\"",
+       "invalidtitle-unknownnamespace": "Imbalido a titulo iti di ammo a nagan ti espasio a bilang $1 ken testo \"$2\"",
        "exception-nologin": "Saan a nakastrek",
        "exception-nologin-text": "Pangngaasi a [[Special:Userlogin|sumrek]] tapno maserrekam daytoy a panid wenno tignay.",
        "exception-nologin-text-manual": "Pangngaasi a $1 tapno maserrekan daytoy a panid wenno tignay.",
-       "virus-badscanner": "Madi di panaka-aramidna: Di am-ammo a birus a panagskan: \"$1\"",
-       "virus-scanfailed": "napaay ti panagskan (kodigo $1)",
-       "virus-unknownscanner": "di am-ammo a pagpaksiat ti \"birus\":",
-       "logouttext": "'''Nakaruarkan.'''\n\nLaglagipen nga adda met dagiti panid nga agtultuloy a maiparang a kasla nakastreka pay, aginggana no dalusam ti pannakaidulin ti pagbasabasam.",
+       "virus-badscanner": "Madi ti konpigurasion: Di ammo a panagsukimat ti birus: <em>$1</em>",
+       "virus-scanfailed": "napaay ti panagsukimat (kodigo $1)",
+       "virus-unknownscanner": "di ammmo nga antibirus:",
+       "logouttext": "<strong>Nakaruarkan.</strong>\n\nLaglagipen nga adda met dagiti panid nga agtultuloy a maiparang a kasla nakastrekka pay, aginggana no dalusam ti pannakaidulin ti pagbasabasam.",
        "welcomeuser": "Naragsak nga isasangbay, $1!",
-       "welcomecreation-msg": "Naaramiden ti pakabilangam.\nDimo liplipatan a sukatan dagiti kakaykayatam idiay [[Special:Preferences|{{SITENAME}} kakaykayatan]].",
+       "welcomecreation-msg": "Napartuaten ti pakabilangam.\nNo kayatmo mabaliwamon dagiti [[Special:Preferences|kakaykayatam]] ti {{SITENAME}}.",
        "yourname": "Nagan ti agar-aramat:",
        "userlogin-yourname": "Nagan ti agar-aramat",
        "userlogin-yourname-ph": "Ikabil ti naganmo nga agar-aramat",
        "yourpassword": "Kontrasenias:",
        "userlogin-yourpassword": "Kontrasenias",
        "userlogin-yourpassword-ph": "Ikabilmo ti kontrasenias",
-       "createacct-yourpassword-ph": "Agikabil ti kontrasenias",
-       "yourpasswordagain": "Uliten ti kontrasenias:",
+       "createacct-yourpassword-ph": "Ikabil ti kontrasenias",
+       "yourpasswordagain": "Imakinilya manen ti kontrasenias:",
        "createacct-yourpasswordagain": "Pasingkedan ti kontrasenias",
        "createacct-yourpasswordagain-ph": "Ikabil manen ti kontrasenias",
        "remembermypassword": "Laglagipem ti iseserrekko iti daytoy a pagbasabasa (para iti kapaut iti $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}})",
        "userlogin-remembermypassword": "Taginayonennak nga iserrek",
-       "userlogin-signwithsecure": "Usaren ti natalged a pannakaisilpo",
-       "yourdomainname": "Ti bukodmo a pagturayan:",
-       "password-change-forbidden": "Saanmo a mabalin ti mangbaliw kadagiti kontrasenias iti daytoy a wiki.",
-       "externaldberror": "Adda biddut idi ti panakapasingked ti database wenno saanmo a mabalin ti agpabaro ti bukodmo nga akin-ruar a pakabilangan.",
+       "userlogin-signwithsecure": "Usaren ti natalged a koneksion",
+       "yourdomainname": "Ti bukodmo a dominio:",
+       "password-change-forbidden": "Saanmo a mabaliwan dagiti kontrasenias iti daytoy a wiki.",
+       "externaldberror": "Mabalin nga adda biddut iti pannakapasingked ti database wenno saanka a mapalubosan a mangpabaro ti akin-ruar a pakabilangam.",
        "login": "Sumrek",
-       "nav-login-createaccount": "Sumrek / agaramid ti pakabilangan",
-       "userlogin": "Sumrek / agaramid ti pakabilangan",
+       "nav-login-createaccount": "Sumrek / agpartuat ti pakabilangan",
+       "userlogin": "Sumrek / agpartuat ti pakabilangan",
        "userloginnocreate": "Sumrek",
        "logout": "Rummuar",
        "userlogout": "Rummuar",
        "userlogin-noaccount": "Awan ti pakabilangam?",
        "userlogin-joinproject": "Tumipon iti {{SITENAME}}",
        "nologin": "Awan pakabilangam? $1.",
-       "nologinlink": "Agaramid ti pakabilangan",
-       "createaccount": "Agaramid ti pakabilangan",
-       "gotaccount": "Addaanka kadin ti pakabilangam? $1.",
+       "nologinlink": "Agpartuat ti pakabilangan",
+       "createaccount": "Agpartuat ti pakabilangan",
+       "gotaccount": "Addaanka kadin iti pakabilangan? $1.",
        "gotaccountlink": "Sumrek",
-       "userlogin-resetlink": "Nalipatam dagiti salaysay ti pagserrekmo?",
+       "userlogin-resetlink": "Nalipatam dagiti salaysay ti panagserrekmo?",
        "userlogin-resetpassword-link": "Nalipatam ti kontraseniasmo?",
        "userlogin-helplink2": "Tulong iti panagserrek",
        "userlogin-loggedin": "Nakastrekkan a kas ni {{GENDER:$1|$1}}.\nUsaren ti porma dita baba tapno sumrek a kas sabali nga agar-aramat.",
-       "userlogin-createanother": "Agaramid pay ti sabali a pakabilangan",
+       "userlogin-createanother": "Agpartuat ti sabali a pakabilangan",
        "createacct-emailrequired": "Esurat a pagtaengan",
        "createacct-emailoptional": "Esurat a pagtaengan (pagpilian)",
        "createacct-email-ph": "Ikabil ti esurat a pagtaengam",
        "createacct-another-email-ph": "Ikabil ti esurat a pagtaengan",
-       "createaccountmail": "Agusar ti pugto a temporario a kontrasenias ken ipatulod idiay naisangayan nga esurat a pagtaengan",
+       "createaccountmail": "Agusar ti pugto a temporario a kontrasenias ken ipatulod iti naisangayan nga esurat a pagtaengan",
        "createacct-realname": "Pudno a nagan (pagpilian)",
        "createaccountreason": "Rason:",
        "createacct-reason": "Rason",
        "createacct-reason-ph": "Apay nga agparpartuatka manen ti sabali a pakabilangan",
-       "createacct-captcha": "Panagkita ti seguridad",
+       "createacct-captcha": "Panagpatalged ti seguridad",
        "createacct-imgcaptcha-ph": "Ikabil ti testo a makitam dita ngato",
        "createacct-submit": "Partuatem ti pakabilangam",
-       "createacct-another-submit": "Agaramid pay ti sabali a pakabilangan",
+       "createacct-another-submit": "Agpartuat ti sabali a pakabilangan",
        "createacct-benefit-heading": "Ti {{SITENAME}} ket inar-aramid babaen ti tattao a kasla kenka.",
        "createacct-benefit-body1": "{{PLURAL:$1|nga inurnos|nga inur-urnos}}",
        "createacct-benefit-body2": "{{PLURAL:$1|a panid|a pampanid}}",
        "createacct-benefit-body3": "nga agdama a {{PLURAL:$1|nagparawad|nagparparawad}}",
        "badretype": "Saan nga agpada dagiti inkabilmo a kontrasenias.",
-       "userexists": "Maus-usaren ti inkabilmo a nagan.\nPangngaasi nga agpilika ti sabali a nagan.",
+       "userexists": "Maus-usaren ti inkabilmo a nagan.\nPangngaasi nga agpilika iti sabali a nagan.",
        "loginerror": "Biddut ti iseserrek",
        "createacct-error": "Biddut ti panagpartuat ti pakabilangan",
-       "createaccounterror": "Saan a makaaramid ti pakabilangan: $1",
-       "nocookiesnew": "Naaramid ti pakabilangan ti agar-aramat, ngem saanka a nakastrek.\nTi {{SITENAME}} ket agus-usar kadagiti \"galietas\" tapno maiserrek dagiti agar-aramat.\nNabaldado dagiti galietam.\nPangngaasi a pakabaelam ida, ken sumrekka nga agusar ti baro a naganmo ken kontrasenias.",
+       "createaccounterror": "Saan a makapartuat ti pakabilangan: $1",
+       "nocookiesnew": "Napartuaten ti pakabilangan ti agar-aramat, ngem saanka a nakastrek.\nTi {{SITENAME}} ket agus-usar kadagiti galietas tapno maiserrek dagiti agar-aramat.\nNabaldado dagiti galietam.\nPangngaasi a pakabaelam ida, ken sumrekka nga agusar iti baro a naganmo ken kontrasenias.",
        "nocookieslogin": "Ti {{SITENAME}} ket agus-usar kadagiti galietas tapno maiserrek dagiti agar-aramat.\nNabaldado dagiti galietam.\nPangngaasi a pakabaelam ida ken padasem manen ti sumrek.",
-       "nocookiesfornew": "Ti pakabilangan ti agar-aramat ket saan a naaramid, saanmi a mapasingkedan ti taudanna.\nSiguraduem a napakabaelan dagita galietam, ikargam manen daytoy a panid ken padasem manen.",
-       "noname": "Saanmo a nainaganan ti agpayso a nagan ti agar-aramat.",
+       "nocookiesfornew": "Ti pakabilangan ti agar-aramat ket saan a napartuat, saanmi a mapasingkedan ti taudanna.\nSiguraduem a napakabaelan dagita galietam, ikarga manen daytoy a panid ken padasen manen.",
+       "noname": "Saanmo a nainaganan ti umisu a nagan ti agar-aramat.",
        "loginsuccesstitle": "Balligi ti panagserrek",
-       "loginsuccess": "'''Nakastrekkan iti {{SITENAME}} a kas ni \"$1\".'''",
-       "nosuchuser": "Awan ti agar-aramat nga agnagan iti \"$1\". \n\nDagiti nagan ti agar-aramat ket sensitibo ti kadakkel ti letra.\n\nKitaem ti panangiletra, wenno [[Special:UserLogin/signup|agaramidka ti baro a pakabilangan]].",
+       "loginsuccess": "<strong>Nakastrekkan iti {{SITENAME}} a kas ni \"$1\".</strong>",
+       "nosuchuser": "Awan ti agar-aramat nga agnagan ti \"$1\". \n\nDagiti nagan ti agar-aramat ket sensitibo ti kadakkel ti letra.\n\nKitaem ti panangiletram, wenno [[Special:UserLogin/signup|agpartuat ti baro a pakabilangan]].",
        "nosuchusershort": "Awan ti agar-aramat nga agnagan ti \"$1\".\nKitaem ti panangiletram.",
-       "nouserspecified": "Nasken nga agikabilka ti nagan ti agar-aramat.",
+       "nouserspecified": "Nasken nga inaganam ti nagan ti agar-aramat.",
        "login-userblocked": "Naserraan daytoy nga agar-aramat. Saan a mapalubosan ti sumrek.",
-       "wrongpassword": "Saan a husto ti naikabil a kontrasenias. \nPangngaasi a padasem manen.",
-       "wrongpasswordempty": "Blanko ti naikabil a kontrasenias. \nPangngaasi a padasem manen.",
+       "wrongpassword": "Saan a husto ti naikabil a kontrasenias. \nPangngaasi a padasen manen.",
+       "wrongpasswordempty": "Blanko ti naikabil a kontrasenias. \nPangngaasi a padasen manen.",
        "passwordtooshort": "Dagiti kontrasenias ket nasken a saan a basbasit ngem {{PLURAL:$1|1 a karakter|$1 a karkarakter}}.",
        "password-name-match": "Nasken a ti kontrasenias ket maigiddiat manipud ti naganmo.",
-       "password-login-forbidden": "Ti panag-usar ti daytoy a nagan ti agar-aramat ken kontrasenias ket naipariten.",
-       "mailmypassword": "Iyasentar manen ti kontrasenias",
+       "password-login-forbidden": "Ti panag-usar iti daytoy a nagan ti agar-aramat ken kontrasenias ket naipariten.",
+       "mailmypassword": "Isaad manen ti kontrasenias",
        "passwordremindertitle": "Baro a temporario a kontrasenias para iti {{SITENAME}}",
-       "passwordremindertext": "Adda maysa a tao (mabalin a sika met laeng, manipud iti IP a pagtaengan a $1) ket nagkiddaw ti baro\na kontrasenias para iti {{SITENAME}} ($4). Ti saan nga agnayon a kontrasenias ti agususar\n\"$2\" ket naaramiden ken naidisso iti \"$3\". No kastan ti kinayatmo,\nmasapul a sumrek ka ta agpili ka ti baro a kontrasenias.\nTi temporario a bukodmo a kontrasenias ket agpaso  {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.\n\nNo sabali ti nagkiddaw, wenno no malagipmo pay ti kontrasenias mo ket dimon kayat a suktan daytoy, mabalin a dimo lattan ikaskaso daytoy a mensahe ket itultuloymo latta nga usaren ti daan a kontrasenias.",
-       "noemail": "Awan ti esurat a pagtaengan a nairehistro para  iti agar-aramat a ni \"$1\".",
+       "passwordremindertext": "Adda maysa a tao (mabalin a sika met laeng, manipud iti IP a pagtaengan a $1) ket nagkiddaw ti baro a kontrasenias para iti {{SITENAME}} ($4). Ti temporario a kontrasenias para kenni agar-aramat \"$2\" ket napartuaten ken naisaad iti \"$3\". No kastan ti kinayatmo, nasken itan a sumrekka ken agpili ti baro a kontrasenias.\nTi temporario a kontraseniasmo ket agpaso {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.\n\nNo sabali ti nagkiddaw, wenno nalagipmon ti kontraseniasmo,\nken dimo kayaten a sukatan daytoy, mabalinmo a di ikaskaso daytoy a mensahe ken agtuloy nga usaren ti daan a kontraseniasmo.",
+       "noemail": "Awan ti esurat a pagtaengan a nairehistro para iti agar-aramat a ni \"$1\".",
        "noemailcreate": "Nasken a mangitedka ti pudno nga esurat a pagtaengan.",
        "passwordsent": "Naipatuloden ti baro a kontrasenias iti esurat a pagtaengan a nairehistro kenni \"$1\".\nPangngaasi a sumrekka manen kalpasan ti pannakaawatmo.",
-       "blocked-mailpassword": "Ti IP a pagtaengam ket naserraan manipud ti panag-urnos, isunga saan a mapalubosan nga agusar ti annong ti panagipulang ti kontrasenias tapno mapawilan ti panag-abuso.",
+       "blocked-mailpassword": "Ti IP a pagtaengam ket naserraan manipud ti panag-urnos, ken isu a saan a mapalubosan nga agusar ti annong ti panagipulang ti kontrasenias tapno mapawilan ti panag-abuso.",
        "eauthentsent": "Naipatuloden ti pammatalged nga esurat iti naikeddeng nga esurat a pagtaengan.\nSakbay a maipatulod ti aniaman nga esurat iti pakabilangan, masapul a surotem dagiti maibagbaga iti esurat, tapno mapatalgedan ti pakabilangan ket agpayso a kukuam.",
-       "throttled-mailpassword": "Ti panangiyasentar manen ti kontrasenias ket naipatuloden, iti kaunegan ti napalabas a {{PLURAL:$1|nga oras|$1 nga or-oras}}.\nTapno maipawilan ti panag-abuso, maysa laeng a panangiyasentar manen ti kontrasenias ti maipatulod iti kada {{PLURAL:$1|nga oras|$1 nga or-oras}}.",
+       "throttled-mailpassword": "Ti panangisaad manen ti kontrasenias ket naipatuloden, iti kaunegan ti napalabas a {{PLURAL:$1|nga oras|$1 nga or-oras}}.\nTapno maipawilan ti panag-abuso, maysa laeng a panangisaad manen ti kontrasenias ti maipatulod iti kada {{PLURAL:$1|nga oras|$1 nga or-oras}}.",
        "mailerror": "Biddut iti panangipatulod ti surat: $1",
-       "acct_creation_throttle_hit": "Dagiti sumarungkar ti daytoy a wiki nga agus-usar ti IP a pagtaengan ket nakaaramid {{PLURAL:$1|iti 1 a pakabilangan|kadagiti $1 a pakabilangan}} iti nasakbayan nga aldaw, nga isu laeng ti kaadu a maipalubos iti daytoy a paset ti panawen.\nA kas ti nagbanagan, dagiti agsarsarungkar nga agus-usar ti IP a pagtaengan ket agdama a saanda a mabalin a makaaramid kadagiti pakabilangan.",
-       "emailauthenticated": "Ti esurat a pagtaengam ket napatalgedan idi $2 idi $3.",
+       "acct_creation_throttle_hit": "Dagiti sumarungkar iti daytoy a wiki nga agus-usar ti IP a pagtaengan ket nakapartuat {{PLURAL:$1|iti 1 a pakabilangan|kadagiti $1 a pakabilangan}} iti nasakbayan nga aldaw, nga isu laeng ti kaadu a maipalubos iti daytoy a paset ti panawen.\nA kas ti nagbanagan, dagiti agsarsarungkar nga agus-usar ti IP a pagtaengan ket agdama a saanda a mabalin a makapartuat kadagiti pakabilangan.",
+       "emailauthenticated": "Ti esurat a pagtaengam ket napatalgedan idi $2, $3.",
        "emailnotauthenticated": "Saan pay a napatalgedan ti esuratmo a pagtaengan.\nAwanto ti esurat a maipatulod para kadagiti sumaganad a langa.",
        "noemailprefs": "Ipanaganan ti esurat a pagtaengan tapno agbalin dagitoy a langa.",
        "emailconfirmlink": "Pasingkedam ti esurat a pagtaengam",
        "invalidemailaddress": "Ti esurat a pagtaengan ket saan a maawat ngamin ket kasla adda ti saan a napudno a porma.\nPangngaasi nga agikabil ti nasayaat a porma ti pagtaengan wenno ikkaten amin a naikabil.",
        "cannotchangeemail": "Dagiti pakabilangan nga esurat a pagtaengan ket saan a mabaliwan iti daytoy a wiki.",
-       "emaildisabled": "Daytoy a pagsaaadan ket saan a makaipatulod kadagiti esurat.",
-       "accountcreated": "Naaramiden ti pakabilangan",
+       "emaildisabled": "Daytoy a sitio ket saan a makaipatulod kadagiti esurat.",
+       "accountcreated": "Napartuaten ti pakabilangan",
        "accountcreatedtext": "Ti pakabilangan ti agar-aramat para kenni [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|tungtungan]]) ket napartuaten.",
-       "createaccount-title": "Panagaramid ti pakabilangan para iti {{SITENAME}}",
-       "createaccount-text": "Adda nagaramid ti pakabilangan para iti esurat a pagtaengam idiay {{SITENAME}} ($4) nga agnagan  ti \"$2\", iti kontrasenias a \"$3\".\nNasken a sumrekka ken sukatam ti kontraseniasmo tattan.\n\nMabalinmo ti saan a mangikaskaso ti daytoy a mensahe, no biddut a naaramid daytoy a pakabilangan.",
-       "login-throttled": "Adu unay ti panagpadasmo a sumrek.\nPangngaasi nga agurayka ti $1 sakbay a padasem manen.",
+       "createaccount-title": "Panagpartuat ti pakabilangan para iti {{SITENAME}}",
+       "createaccount-text": "Adda nagpartuat ti pakabilangan para iti esurat a pagtaengam iti {{SITENAME}} ($4) nga agnagan  ti \"$2\", iti kontrasenias a \"$3\".\nNasken a sumrekka ken sukatam ti kontraseniasmo tattan.\n\nMabalinmo ti saan a mangikaskaso iti daytoy a mensahe, no biddut a naaramid daytoy a pakabilangan.",
+       "login-throttled": "Adu unay ti panagpadasmo a sumrek.\nPangngaasi nga agurayka ti $1 sakbay a padasen manen.",
        "login-abort-generic": "Napaay ti panagserrekmo - Napasardeng",
        "loginlanguagelabel": "Pagsasao: $1",
        "suspicious-userlogout": "Naiparit ti panagkiddawmo a rummuar ngamin ket kasla inpatulod ti nadadael a panagbasabasa wenno pannakaidulin a pannakbagi.",
        "createacct-another-realname-tip": "Saan a nasken ti pudno a nagan.\nNo kayatmo nga ited, mausarto daytoy para iti panangited ti pammadayaw para kadagiti obrada.",
        "pt-login": "Sumrek",
        "pt-login-button": "Sumrek",
-       "pt-createaccount": "Agaramid ti pakabilangan",
+       "pt-createaccount": "Agpartuat ti pakabilangan",
        "pt-userlogout": "Rummuar",
-       "php-mail-error-unknown": "Di ammo a biddut ti surat ti PHP() nga annong.",
-       "user-mail-no-addy": "Pinadas nga inpatulod ti esurat nga awan ti esurat a pagtaengan.",
-       "user-mail-no-body": "Pinadas nga inpatulod ti esurat nga awan linaonna wenno ababa laeng a bagi.",
+       "php-mail-error-unknown": "Di ammo a biddut iti surat ti annong ti PHP().",
+       "user-mail-no-addy": "Pinadas nga inpatulod ti esurat nga awan ti maysa nga esurat a pagtaengan.",
+       "user-mail-no-body": "Pinadas nga inpatulod ti esurat nga awan ti maysa a linaonna wenno ababa unay a bagi.",
        "changepassword": "Baliwan ti kontrasenias",
-       "resetpass_announce": "Tapno malpas ti panagserrek, nasken a mangiyasentarka ti baro a kontrasenias.",
+       "resetpass_announce": "Tapno malpas ti panagserrek, nasken a mangisaadka ti baro a kontrasenias.",
        "resetpass_header": "Sukatan ti kontrasenias ti pakabilangan",
        "oldpassword": "Daan a kontrasenias:",
        "newpassword": "Baro a kontrasenias:",
        "retypenew": "Imakinilya manen ti baro a kontrasenias:",
-       "resetpass_submit": "Ikabil ti kontrasenias ken sumrek",
+       "resetpass_submit": "Isaad ti kontrasenias ken sumrek",
        "changepassword-success": "Balligi a nasukatan ti kontraseniasmo!",
        "changepassword-throttled": "Nakaaramidka kadagiti adu unay a nabiit a panangipadas ti panagserrek.\nPangngaasi nga aguray ti $1 sakbay a padasen manen.",
        "resetpass_forbidden": "Saan a masukatan dagiti kontrasenias",
        "resetpass-submit-loggedin": "Sukatan ti kontrasenias",
        "resetpass-submit-cancel": "Ukasen",
        "resetpass-wrong-oldpass": "Imbalido ti temporario wenno agdama a kontrasenias.\nMabalin a nagballigi ti panagsukatmo ti kontrasenias wenno nagkiddaw ti baro a temporario a kontrasenias.",
-       "resetpass-recycled": "Pangngaasi nga iyasentar manen ti kontrasenias iti sabali ngem ti agdama a kontraseniasmo.",
-       "resetpass-temp-emailed": "Simrekka a nagusar ti temporario a naipatulod a kodigo.\nTapno malpas ti panagserrek, nasken a mangiyasentarka ti baro a kontrasenias ditoy:",
+       "resetpass-recycled": "Pangngaasi nga isaad manen ti kontrasenias iti sabali ngem ti agdama a kontraseniasmo.",
+       "resetpass-temp-emailed": "Simrekka a nagusar ti temporario a naipatulod a kodigo.\nTapno malpas ti panagserrek, nasken a mangisaadka ti baro a kontrasenias ditoy:",
        "resetpass-temp-password": "Temporario a kontrasenias:",
        "resetpass-abort-generic": "Ti panagsukat ti kontrasenias ket pinasardeng babaen ti maysa a pagpaatiddog.",
-       "resetpass-expired": "Nagpason ti kontraseniasmo. Pangngaasi a mangiyasentar ti baro a kontrasenias tapno makastrek.",
-       "resetpass-expired-soft": "Nagpason ti kontraseniasmo, ken nasken a maiyasentar manen. Pangngaasi nga agpili tattan ti baro a kontrasenias, wenno pinduten ti \"{{int:resetpass-submit-cancel}}\"  tapno maiyasentarto intono madamdama.",
-       "resetpass-validity-soft": "Saan nga umiso ti kontraseniasmo: $1\n\nAgpilika tattan ti baro a kontrasenias, wenno pinduten ti \"{{int:resetpass-submit-cancel}}\" tapno isaad intono madamdama.",
-       "passwordreset": "Iyasentar manen ti kontrasenias",
-       "passwordreset-text-one": "Lippasem daytoy a porma tapno maiyasentar manen ti bukodmo a kontrasenias.",
+       "resetpass-expired": "Nagpason ti kontraseniasmo. Pangngaasi a mangisaad ti baro a kontrasenias tapno makastrek.",
+       "resetpass-expired-soft": "Nagpason ti kontraseniasmo, ken nasken a maisaad manen. Pangngaasi nga agpili tattan ti baro a kontrasenias, wenno pinduten ti \"{{int:resetpass-submit-cancel}}\"  tapno maisaad intono madamdama.",
+       "resetpass-validity-soft": "Saan nga umiso ti kontraseniasmo: $1\n\nAgpilika tattan ti baro a kontrasenias, wenno pinduten ti \"{{int:resetpass-submit-cancel}}\" tapno maisaad intono madamdama.",
+       "passwordreset": "Isaad manen ti kontrasenias",
+       "passwordreset-text-one": "Kompletuen daytoy a porma tapno makaawat iti temporario a kontrasenias babaen ti esurat.",
        "passwordreset-text-many": "{{PLURAL:$1|Agpunno ti maysa kadagiti pagikabilan tapno makaawat ti temporario a kontrasenias babaen ti esurat.}}",
-       "passwordreset-legend": "Iyasentar manen ti kontrasenias",
-       "passwordreset-disabled": "Nabaldado dagiti panangiyasentar manen ti kontrasenias iti daytoy a wiki.",
+       "passwordreset-legend": "Isaad manen ti kontrasenias",
+       "passwordreset-disabled": "Nabaldado dagiti panangisaad manen ti kontrasenias iti daytoy a wiki.",
        "passwordreset-emaildisabled": "Dagiti langa ti esurat ket nabaldado iti daytoy a wiki.",
        "passwordreset-username": "Nagan ti agar-aramat:",
-       "passwordreset-domain": "Pagturayan:",
-       "passwordreset-capture": "Kitaen ti nagbanagan ti esurat?",
-       "passwordreset-capture-help": "No markaam daytoy a kahon, ti esurat (nga adda ti temporario a kontrasenias) ket maipakita kenka ken maipatulod iti agar-aramat.",
+       "passwordreset-domain": "Dominio:",
+       "passwordreset-capture": "Kitaen ti nagbanagan nga esurat?",
+       "passwordreset-capture-help": "No markaam daytoy a kahon, ti esurat (nga adda ti temporario a kontrasenias) ket maipakitanto kenka ken maipatulodto iti agar-aramat.",
        "passwordreset-email": "Esurat a pagtaengan:",
-       "passwordreset-emailtitle": "Salaysay ti pakabilangan iti {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Adda (baka sika, ti naggapuan ti IP a pagtaengan $1) a nagkiddaw ti maysa a panangiyasentar manen ti kontrasenias para iti {{SITNAME}} ($4) . {{PLURAL:$3|Ti |Dagiti}} sumaganad a pakabilangan ti agar-aramat ket\nnakairaman iti daytoy nga esurat a pagtaengan:\n\n$2\n\n{{PLURAL:$3|Daytoy temporario a kontrasenias|Dagitoy temporario a kontrasenias}} ket agpaso {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.\nSumrekka koman tapno agpilika ti baro a kontraseniasmo tattan. No adda met sabali a nagaramid daytoy a \npanagkiddaw, wenno malagipmo ti dati a kontraseniasmo, ket saanmo a kayaten a sukatan, saanmo nga ikaskaso daytoy a mensahe ken \nagtuloyka nga agusar ti daan a kontrasenias.",
-       "passwordreset-emailtext-user": "Daytoy nga agar-aramat $1 iti {{SITENAME}} ket nagkiddaw ti maysa a panangiyasentar manen ti bukod a kontrasenias para iti {{SITENAME}}\n($4) . {{PLURAL:$3|Ti|Dagiti}} sumaganad a pakabilanagan ti agar-aramat ket\nnakairaman iti daytoy nga esurat a pagtaengan:\n\n$2\n\n{{PLURAL:$3|Daytoy temporario a kontrasenias|Dagitoy temporario a kontrasenias}} ket agpaso {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.\nSumrekka koman tapno agpili ka ti baro a kontraseniasmo tattan. No adda met sabali a nagaramid daytoy a \npanagkiddaw, wenno malagipmo ti dati a kontraseniasmo, ket saan mo a kayaten a sukatan, saanmo nga ikaskaso daytoy a mensahe ken \nagtuloykan nga agusar ti daan a kontraseniasmo.",
+       "passwordreset-emailtitle": "Dagiti salaysay ti pakabilangan iti {{SITENAME}}",
+       "passwordreset-emailtext-ip": "Adda (baka sika, ti naggapuan ti IP a pagtaengan $1) a nagkiddaw ti maysa a panangisaad manen ti kontrasenias para iti {{SITNAME}} ($4) . {{PLURAL:$3|Ti |Dagiti}} sumaganad a pakabilangan ti agar-aramat ket\nmainaig iti daytoy nga esurat a pagtaengan:\n\n$2\n\n{{PLURAL:$3|Daytoy temporario a kontrasenias|Dagitoy temporario a kontrasenias}} ket agpaso {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.\nSumrekka koman tapno agpilika ti baro a kontraseniasmo tattan. No adda met sabali a nagaramid daytoy a \npanagkiddaw, wenno malagipmo ti dati a kontraseniasmo, ket saanmo a kayaten a sukatan, saanmo nga ikaskaso daytoy a mensahe ken \nagtuloyka nga agusar ti daan a kontrasenias.",
+       "passwordreset-emailtext-user": "Daytoy nga agar-aramat $1 iti {{SITENAME}} ket nagkiddaw ti maysa a panangisaad manen ti bukod a kontrasenias para iti {{SITENAME}}\n($4) . {{PLURAL:$3|Ti|Dagiti}} sumaganad a pakabilangan ti agar-aramat ket\nmainaig iti daytoy nga esurat a pagtaengan:\n\n$2\n\n{{PLURAL:$3|Daytoy temporario a kontrasenias|Dagitoy temporario a kontrasenias}} ket agpaso {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.\nSumrekka koman tapno agpilika ti baro a kontraseniasmo tattan. No adda met sabali a nagaramid daytoy a \npanagkiddaw, wenno malagipmo ti dati a kontraseniasmo, ken saanmo a kayaten a sukatan, saanmo nga ikaskaso daytoy a mensahe ken \nagtuloykan nga agusar ti daan a kontraseniasmo.",
        "passwordreset-emailelement": "Nagan ti agar-aramat: $1\nTemporario a kontrasenias: $2",
-       "passwordreset-emailsent": "Ti maysa nga esurat ti panangiyasentar manen ti kontrasenias ket naipatuloden.",
-       "passwordreset-emailsent-capture": "Ti maysa nga esurat ti panangiyasentar manen ti kontrasenias ket naipatuloden, a napaikita dita baba.",
-       "passwordreset-emailerror-capture": "Naaramid ti maysa nga esurat a panangyasentar manen ti kontrasenias, a napaikita dita baba, ngem ti panangitulod kenni {{GENDER:$2|agar-aramat}} ket napaay: $1",
+       "passwordreset-emailsent": "Ti maysa nga esurat ti panangisaad manen ti kontrasenias ket naipatuloden.",
+       "passwordreset-emailsent-capture": "Ti maysa nga esurat ti panangisaad manen ti kontrasenias ket naipatuloden, a naipakita dita baba.",
+       "passwordreset-emailerror-capture": "Naaramid ti maysa nga esurat a panangisaad manen ti kontrasenias, a napaikita dita baba, ngem ti panangitulod kenni {{GENDER:$2|agar-aramat}} ket napaay: $1",
        "changeemail": "Sukatan ti esurat a pagtaengan",
        "changeemail-header": "Sukatan ti esurat a pagtaengan ti pakabilangan",
-       "changeemail-text": "Lippasem daytoy a porma ti panagsukat ti esurat a pagtaengam. Nasken nga ikabilmo ti kontrasenias tapno mapasingkedan daytoy a panagsukat.",
+       "changeemail-text": "Kompletuen daytoy a porma ti panagsukat ti esurat a pagtaengam. Nasken nga ikabilmo ti kontrasenias tapno mapasingkedan daytoy a panagsukat.",
        "changeemail-no-info": "Masapul a nakastrekka tapno dagus a makapan iti ditoy a panid.",
        "changeemail-oldemail": "Agdama nga esurat a pagtaengan:",
        "changeemail-newemail": "Baro nga esurat a pagtaengan:",
        "changeemail-submit": "Sukatan ti esurat",
        "changeemail-cancel": "Ukasen",
        "changeemail-throttled": "Adu unay ti panagpadasmo a sumrek.\nPangngaasi nga aguray ti $1 sakbay a padasen manen.",
-       "resettokens": "Iyasentar manen dagiti tandaan",
-       "resettokens-text": "Mabalinmo nga iyasentar dagiti tandaan a mangpalubos ti panagserrek ti naisangayan a pribado datos a mainaig ti pakabilangam ditoy.\n\nAramidem daytoy no aksidente nga inbingaymo dagitoy iti sabali wenno ti pakabilangam ket nakomprimiso.",
-       "resettokens-no-tokens": "Awan dagiti maiyasentar manen a tandaan.",
-       "resettokens-legend": "Iyasentar manen dagiti tandaan",
+       "resettokens": "Isaad manen dagiti tandaan",
+       "resettokens-text": "Mabalinmo nga isaad manen dagiti tandaan a mangpalubos ti panagserrek ti naisangayan a pribado datos a mainaig ti pakabilangam ditoy.\n\nAramidem daytoy no aksidente nga inbingaymo dagitoy iti sabali wenno ti pakabilangam ket nakomprimiso.",
+       "resettokens-no-tokens": "Awan dagiti maisaad manen a tandaan.",
+       "resettokens-legend": "Isaad manen dagiti tandaan",
        "resettokens-tokens": "Dagiti tandaan:",
        "resettokens-token-label": "$1 (agdama a pateg: $2)",
-       "resettokens-watchlist-token": "Tandaan para iti pakan ti web (Atom/RSS) kadagiti [[Special:Watchlist|panagbalbaliw ti pampanid idiay bambantayam]]",
-       "resettokens-done": "Naiyasentar manen dagiti tandaan.",
-       "resettokens-resetbutton": "Iyasentar manen  dagiti napili a tandaan",
+       "resettokens-watchlist-token": "Tandaan para iti pakan ti web (Atom/RSS) kadagiti [[Special:Watchlist|panagbalbaliw ti pampanid iti listaan ti bambantayam]]",
+       "resettokens-done": "Naisaad manen dagiti tandaan.",
+       "resettokens-resetbutton": "Isaad manen  dagiti napili a tandaan",
        "bold_sample": "Napuskol a testo",
        "bold_tip": "Napuskol a testo",
-       "italic_sample": "Nakairig a testo",
-       "italic_tip": "Nakairig a testo",
+       "italic_sample": "Italiko a testo",
+       "italic_tip": "Italiko a testo",
        "link_sample": "Titulo ti silpo",
        "link_tip": "Akin-uneg a silpo",
        "extlink_sample": "http://www.example.com titulo ti silpo",
-       "extlink_tip": "Akin-ruar a silpo (laglagipen ti http:// a pasaruno)",
+       "extlink_tip": "Akinruar a silpo (laglagipen ti http:// a pasakbay)",
        "headline_sample": "Testo ti paulo",
        "headline_tip": "Maika-2 nga agasmang ti paulo",
        "nowiki_sample": "Isengngat ti saan a naporma a testo ditoy",
-       "nowiki_tip": "Saan nga ikaskaso ti panakaporma ti wiki",
+       "nowiki_tip": "Saan nga ikaskaso ti pannakaporma ti wiki",
        "image_tip": "Naisengngat a papeles",
        "media_tip": "Silpo ti papeles",
-       "sig_tip": "Ti pirmam nga adda ti oras ken petsa",
-       "hr_tip": "Pakuros a linia (manmano laeng nga aramaten)",
+       "sig_tip": "Ti pirmam nga addaan iti oras ken petsa",
+       "hr_tip": "Horisontal a linia (manmano laeng nga aramaten)",
        "summary": "Pakabuklan:",
        "subject": "Suheto/paulo:",
        "minoredit": "Daytoy ket bassit a panag-urnos",
        "preview": "Ipadas",
        "showpreview": "Ipakita ti ipadas",
        "showdiff": "Ipakita dagiti sinukatan",
-       "anoneditwarning": "'''Ballaag:''' Saanka a nakastrek.\nMairehistro ti IP a pagtaengam iti pakasaritaan ti panagurnos iti daytoy a panid.",
-       "anonpreviewwarning": "\" Saanka a nakastrek. Ti panagidulin ket agirehistro ti IP a pagtaengam kadagitoy a  pakasaritaan ti panagurnos iti daytoy a panid.\"",
-       "missingsummary": "'''Palagip:''' Saanka a nakaited iti pakabuklan ti panag-urnos.\nNo ipindutmo ti manen ti \"{{int:savearticle}}\", maidulin ti inurnosmo nga awan ti pakabuklanna.",
+       "anoneditwarning": "<strong>Ballaag:</strong> Saanka a nakastrek.\nMairehistro ti IP a pagtaengam iti pakasaritaan ti panag-urnos iti daytoy a panid.",
+       "anonpreviewwarning": "<em>Saanka a nakastrek. Ti panagidulin ket agirehistro ti IP a pagtaengam kadagitoy a pakasaritaan ti panag-urnos iti daytoy a panid.</em>",
+       "missingsummary": "<strong>Palagip:</strong> Saanka a nakaited iti pakabuklan ti panag-urnos.\nNo pindutem manen ti \"{{int:savearticle}}\", maidulin ti inurnosmo nga awan ti pakabuklanna.",
        "missingcommenttext": "Pangngaasi nga agikabil ti komentario dita baba.",
-       "missingcommentheader": "'''Palagip:''' Saanka a nakaited  iti suheto/paulo para iti daytoy a komentario.\nNo ipindutmo manen ti \"{{int:savearticle}}\", maidulin ti inurnosmo nga awan ti pakabuklanna.",
-       "summary-preview": "Naipadas a  pakabuklan:",
+       "missingcommentheader": "<strong>Palagip:</strong> Saanka a nakaited  iti suheto/paulo para iti daytoy a komentario.\nNo pindutem manen ti \"{{int:savearticle}}\", maidulin ti inurnosmo nga awan ti pakabuklanna.",
+       "summary-preview": "Naipadas a pakabuklan:",
        "subject-preview": "Suheto/naipadas a paulo:",
        "blockedtitle": "Naseraan ti agar-aramat",
-       "blockedtext": "'''Naseraan ti naganmo nga agar-aramat wenno ti IP a pagtaengam.'''\n\nNi $1 ti nangserra kenka. \nTi rason ket ''$2''.\n\n* Rugi ti panangserra: $8\n* Panagpaso ti panangserra: $6\n* Ti koma serraanna: $7\n\nMabalinmo a kontaken ni $1 wenno sabali pay nga [[{{MediaWiki:Grouppage-sysop}}|administrador]] no kayatmo a maipalawag daytoy a panag-serra.\nDimo mabalin nga aramaten ti ramit nga esuratan daytoy nga agar-aramat malaksid no adda napudno nga esurat a pagtaengan a naipan iti [[Special:Preferences|pakabilangan ti kaykayatmo]] ken no saanka a naparitan nga agaramat iti daytoy.\nTi agdama nga IP a pagtaengam ket $3, ti naserraan nga ID ket #$5. Pangngaasi nga iramanmo nga ited ti aniaman wenno agpada kadagitoy iti aniaman a panagsaludsodmo.",
-       "autoblockedtext": "Ti IP a pagtaengam ket na-automatiko a naserraan ngamin ket inusar ti sabali nga agar-aramat, a sinerraan ni $1.\nTi rason nga inted ket:\n\n:''$2''\n\n* Rugi ti panag-serra: $8\n* Panagpaso ti panag-serra: $6\n* Ti serraanna koma: $7\n\nMabalinmo a kontaken ni $1 wenno maysa kadagiti [[{{MediaWiki:Grouppage-sysop}}|administrador]] tapno maipalawag daytoy a panag-serra.\n\nLaglagipem a saanmo a mabalin nga usaren ti \"esuratan daytoy nga agar-aramat\" a langa malaksid no addaanka ti napudno nga esurat a pagtaengan a nakarehistro idiay [[Special:Preferences|kakaykayatam]] ken saanka a naserraan manipud ti panag-usar daytoy.\n\nTi tatta nga IP a pagtaengam ket $3, ken ti ID ti naserraan ket #$5.\nPangaasi nga iramanmo amin dagiti salaysay kadagiti amin a panagsaludsodmo.",
+       "blockedtext": "<strong>Naseraan ti naganmo nga agar-aramat wenno ti IP a pagtaengam.</strong>\n\nTi serra ket inaramid babaen ni $1. \nTi rason a naited ket <em>$2</em>.\n\n* Rugi ti serra: $8\n* Panagpaso ti serra: $6\n* Naikeddeng a serraanna: $7\n\nMabalinmo a kontaken ni $1 wenno sabali pay nga [[{{MediaWiki:Grouppage-sysop}}|administrador]] no kayatmo a maipalawag daytoy a panagserra.\nDimo mabalin nga aramaten ti ramit nga esuratan daytoy nga agar-aramat malaksid no adda napudno nga esurat a pagtaengan a nainaganan iti [[Special:Preferences|pakabilangan ti kakaykayatm]] ken no saanka a naparitan nga agaramat iti daytoy.\nTi agdama nga IP a pagtaengam ket $3, ti naserraan nga ID ket #$5. \nPangngaasi nga iramanmo amin dagiti salaysay dita ngato kadagiti aniaman nga aramidem nga usisa.",
+       "autoblockedtext": "Ti IP a pagtaengam ket automatiko a naserraan ngamin ket inusar ti sabali nga agar-aramat, a sinerraan ni $1.\nTi rason nga inted ket:\n\n:<em>$2</em>\n\n* Rugi ti serra: $8\n* Panagpaso ti serra: $6\n* Naikeddenga a serraanna: $7\n\nMabalinmo a kontaken ni $1 wenno maysa kadagiti [[{{MediaWiki:Grouppage-sysop}}|administrador]] tapno maipalawag daytoy a panagserra.\n\nLaglagipem a saanmo a mabalin nga usaren ti \"esuratan daytoy nga agar-aramat\" a langa malaksid no addaanka ti napudno nga esurat a pagtaengan a nakarehistro iti [[Special:Preferences|kakaykayatam]] ken saanka a naserraan manipud ti panag-usar daytoy.\n\nTi tatta nga IP a pagtaengam ket $3, ken ti ID ti naserraan ket #$5.\nPangngaasi nga iramanmo amin dagiti salaysay dita ngato kadagiti aniaman nga aramidem nga usisa.",
        "blockednoreason": "awan ti naited a rason",
        "whitelistedittext": "Nasken ti $1 tapno maurnosmo dagitoy a panid.",
-       "confirmedittext": "Masapul a pasingkedam ti esurat sakbay a makaurnos kadagitoy a panid.\nPangngaasim nga ikabil ken ipapudnom ti esuratmo idiay [[Special:Preferences|kaykayat dagiti agar-aramat ]].",
+       "confirmedittext": "Masapul a pasingkedam ti esurat sakbay a makaurnos kadagitoy a panid.\nPangngaasi nga isaad ken ipapudnom ti esuratmo babaen ti [[Special:Preferences|kakaykayatan ti agar-aramat]].",
        "nosuchsectiontitle": "Saan a mabirukan ti paset",
        "nosuchsectiontext": "Pinadasmo nga inurnos ti awan a paset.\nMabalin a naiyalis wenno naikkat bayat idi kitkitaem ti panid.",
        "loginreqtitle": "Masapul ti sumrek",
        "loginreqlink": "sumrek",
-       "loginreqpagetext": "Naskenka a $1 tapno makakitaka kadagiti sabsabali a pampanid.",
-       "accmailtitle": "Naipatuloden ti kontrasenias.",
-       "accmailtext": "Ti pugto a napartuat a kontrasenias para kenni [[User talk:$1|$1]] ket naipatuloden idiay $2. Mabalin a masukatan idiay\n''[[Special:ChangePassword|pagsukatan ti kontrasenias]]'' a panid no sumrekka.",
+       "loginreqpagetext": "Pangngaasi a $1 tapno makitam dagiti sabali a panid.",
+       "accmailtitle": "Naipatuloden ti kontrasenias",
+       "accmailtext": "Ti pugto a napartuat a kontrasenias para kenni [[User talk:$1|$1]] ket naipatuloden iti $2. Mabalin a masukatan iti\n<em>[[Special:ChangePassword|pagsukatan ti kontrasenias]]</em> a panid no sumrekka.",
        "newarticle": "(Baro)",
-       "newarticletext": "Nasurotmo ti silpo ti awan pay a panid. \nTi mangpartuat ti panid, rugiamon ti agmakinilia iti kahon dita baba (kitaen ti [$1 panid ti tulong] para iti adu pay a pakaammo). \nNo addaka ditoy babaen ti biddut, pindutem ti buton ti <strong>agsubli</strong> ti pagbasabasam.",
-       "anontalkpagetext": "----\n''Daytoy ti pakitungtungan a panid para iti di am-ammo nga agar-aramat a saan pay a nakaaramid ti pakabilangan, wenno saanna nga us-usaren.\nDakami ket agusar kami ti numero nga IP a pagtaengan ti panangilasin dagiti lalaki/babai.\nTi kastoy nga IP a pagtaengan ket us-usaren a bingayan ti adu pay a sabsabali nga agar-aramat.\nNo sika ket maysa a di am-ammo nga agar-aramat ken dagiti awan ti kapategan a komentario ket napaitudo kenka, pangngaasi nga [[Special:UserLogin/signup|agaramid ka ti pakabilangam]] wenno [[Special:UserLogin|sumrekka]] \ntapno maawanan ti panakaulaw kadagiti sabali a di am-ammo nga agar-aramat.",
-       "noarticletext": "Awan ti agdama a testo daytoy a panid.\nMabalinmo ti [[Special:Search/{{PAGENAME}}|agsapul iti kastoy a titulo ti panid]] kadagiti sabsabali a pampanid,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} birukem dagiti mainaig a listaan],\nwenno [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} urnosem daytoy a panid].",
-       "noarticletext-nopermission": "Awan ti agdama  a linaon daytoy a panid.\nMabalinmo ti [[Special:Search/{{PAGENAME}}|agbiruk para iti titulo ti daytoy a panid]] kadagiti sabali a panid, wenno <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbiruk kadagiti mainaig a listaan]</span>, ngem awan ti pammalubosmo a mangpartuat ti daytoy a panid.",
+       "newarticletext": "Nasurotmo ti silpo ti awan pay a panid. \nTi mangpartuat ti panid, rugiamon ti agmakinilia iti kahon dita baba (kitaen ti [$1 panid ti tulong] para iti adu pay a pakaammo). \nNo addaka ditoy babaen ti biddut, pindutem ti buton ti <strong>back</strong> ti pagbasabasam.",
+       "anontalkpagetext": "----\n<em>Daytoy ti pakitungtungan a panid para iti di ammo nga agar-aramat a saan pay a nakapartuat ti pakabilangan, wenno saanna nga us-usaren.</em>\nIsu nga agusarkami ti numero nga IP a pagtaengan tapno mailasin isuda a lalaki/babai.\nTi kastoy nga IP a pagtaengan ket us-usaren a bingayan babaen ti nadumaduma nga agar-aramat.\nNo sika ket maysa a di ammo nga agar-aramat ken dagiti awan ti pategna a komentario ket napaitudo kenka, pangngaasi nga [[Special:UserLogin/signup|agpartuatka ti pakabilangam]] wenno [[Special:UserLogin|sumrekka]] \ntapno maliklikan ti pannakaiyallilaw kadagiti sabali a di ammo nga agar-aramat.",
+       "noarticletext": "Awan ti agdama a testo daytoy a panid.\nMabalinmo ti [[Special:Search/{{PAGENAME}}|agbiruk iti kastoy a titulo ti panid]] kadagiti sabali a panid,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbiruk kadagiti mainaig a listaan],\nwenno [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} urnosem daytoy a panid]</span>.",
+       "noarticletext-nopermission": "Awan ti agdama  a linaon daytoy a panid.\nMabalinmo ti [[Special:Search/{{PAGENAME}}|agbiruk para iti titulo ti daytoy a panid]] kadagiti sabali a panid, wenno <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbiruk kadagiti mainaig a listaan]</span>, ngem awan ti pammalubosmo a mangpartuat iti daytoy a panid.",
        "missing-revision": "Ti panagbalbaliw ti #$1 iti daytoy a panid a nanaganan ti \"{{FULLPAGENAME}}\" ket awan.\n\nDaytoy ket kadawyan a gapuanan babaen ti sumaganad a silpo ti baak a pakasaritaan iti maysa a naikkaten a panid.\nDagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
-       "userpage-userdoesnotexist": "Ti pakabilangan ti agar-aramat \"$1\" ket saan a nakarehistro. \nPangngaasi a kitaem no kayatmo ti agaramid/urnosen daytoy a panid.",
-       "userpage-userdoesnotexist-view": "Ti pakabilangan ti agar-aramat \"$1\" ket saan a nakarehistro.",
-       "blocked-notice-logextract": "Agdama a naserraan daytoy nga agar-aramat.\nTi naudi a listaan ti panaka-serra ket adda dita baba tapno mausar a reperensia:",
-       "clearyourcache": "'''Pakaammo:''' No nalpaskan nga agiduldulin, koma ket masapul nga ipalabas ti cahe ti pagbasabasam tapno makita dagiti sinukatam.\n* '''Firefox / Safari:''' Tenglen ti ''Sukatan'' bayat nga ipindut ti ''Ikarga manen'', wenno ipindut ti ''Ctrl-F5'' wenno''Ctrl-R'' (''⌘-R'' Mac)\n* '''Google Chrome:''' Ipindut ti ''Ctrl-Shift-R'' (''⌘-Shift-R'' iti Mac)\n* '''Internet Explorer:''' Tenglen ti ''Ctrl'' bayat nga ipindut ti ''Ipasaradiwa'', wenno ipindut ti ''Ctrl-F5''\n* '''Opera:''' Dalusan ti cache iti ''Ramramit → Kakaykayatan''",
-       "usercssyoucanpreview": "'''Paammo:''' Usaren ti \"{{int:showpreview}}\" a buton ti panagsubok ti baro a CSS sakbay nga idulinmo.",
-       "userjsyoucanpreview": "'''Paammo:''' Usaren ti \"{{int:showpreview}}\" a buton ti panagsubok ti baro a JavaScript sakbay nga idulinmo.",
-       "usercsspreview": "'''Laglagipem nga ipadpadasmo laeng daytoy a CSS.'''\n'''Saan pay a naidulin!'''",
-       "userjspreview": "'''Laglagipem nga ipadpadasmo laeng daytoy a JavaScript.'''\n'''Saan pay a naidulin!'''",
-       "sitecsspreview": "'''Laglagipem nga ipadpadasmo laeng daytoy a CSS.'''\n'''Saan pay a naidulin!'''",
-       "sitejspreview": "'''Laglagipem nga ipadpadasmo laeng ti kodigo daytoy a JavaScript.'''\n'''Saan pay nga naidulin!'''",
-       "userinvalidcssjstitle": "'''Ballaag:''' Awan ti kudil a \"$1\".\nAnnawid a .css ken .js dagiti titulo ket agususar ti babassit a letra, a kas dagiti {{ns:user}}:Foo/vector.css saan ket a {{ns:user}}:Foo/Vector.css.",
+       "userpage-userdoesnotexist": "Ti pakabilangan ti agar-aramat ni \"$1\" ket saan a nakarehistro. \nPangngaasi a kitaem no kayatmo ti agpartuat/agurnos iti daytoy a panid.",
+       "userpage-userdoesnotexist-view": "Ti pakabilangan ti agar-aramat ni \"$1\" ket saan a nakarehistro.",
+       "blocked-notice-logextract": "Agdama a naserraan daytoy nga agar-aramat.\nTi naudi a listaan ti pannakaserra ket naited dita baba para iti reperensia:",
+       "clearyourcache": "<strong>Nota:</strong> Kalpasan ti panangidulin, koma ket masapul nga ipalabas ti cahe ti pagbasabasam tapno makita dagiti sinukatam.\n* <strong>Firefox / Safari:</strong>  Tenglen ti <em>Shift</em> bayat a pinduten ti <em>Reload</em>, wenno talmegan ti <em>Ctrl-F5</em> wenno <em>Ctrl-R</em> (<em>⌘-R</em> iti Mac)\n* <strong>Google Chrome:</strong> Talmegan ti <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> iti Mac)\n* <strong>Internet Explorer:</strong> Tenglen ti <em>Ctrl</em> bayat a pinduten ti <em>Refresh</em>, wenno talmegan ti <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Dalusan ti cache iidiay <em>Tools → Preferences</em>",
+       "usercssyoucanpreview": "<strong>Paammo:</strong>  Usaren ti buton ti \"{{int:showpreview}}\" tapno masubokan ti baro a CSS sakbay nga agidulin.",
+       "userjsyoucanpreview": "<strong>Pammo:</strong> Usaren ti buton ti \"{{int:showpreview}}\" tapno masubokan ti baro a JavaScript sakbay nga agidulin.",
+       "usercsspreview": "<strong>Laglagipem nga ipadpadasmo laeng ti bukodmo a CSS ti agar-aramat.\nSaan pay a naidulin!</strong>",
+       "userjspreview": "<strong>Laglagipem a subsubokam/ipadpadasmo ti bukodmo a JavaScript ti agar-aramat.\nSaan pay a naidulin!</strong>",
+       "sitecsspreview": "<strong>Laglagipem nga ipadpadasmo laeng daytoy a CSS.\nSaan pay a naidulin!</strong>",
+       "sitejspreview": "<strong>Laglagipem nga ipadpadasmo laeng daytoy a kodigo ti JavaScript.\nSaan pay nga naidulin!</strong>",
+       "userinvalidcssjstitle": "<strong>Ballaag:</strong> Awan ti kudil a \"$1\".\nDagiti panid ti naiduma a .css ken .js ket agus-usar ti titulo ti bassit a letra, kas ti {{ns:user}}:Foo/vector.css saan a kas ti {{ns:user}}:Foo/Vector.css.",
        "updated": "(Napabaro)",
-       "note": "'''Paammo:'''",
-       "previewnote": "'''Laglagipem a daytoy ket panagipadas laeng.'''\nDagiti sinukatam ket saan pay a naidulin!",
+       "note": "<strong>Nota:</strong>",
+       "previewnote": "<strong>Laglagipem a daytoy ket panagipadas laeng.</strong>\nDagiti sinukatam ket saan pay a naidulin!",
        "continue-editing": "Mapan idiay pagurnosan a lugar",
-       "previewconflict": "Daytoy a panagpadas ket agiparang ti testo dita ngato a panagurnos a lugar a kasla agparang no kayatmo nga idulin.",
-       "session_fail_preview": "'''Pasensia! Saanmi a maaramid ti panag-urnos gapu ngamin ta naawanan ti gimong ti data.'''\nPangngaasi a padasem manen.\nNo saan pay a mabalin, padasem ti [[Special:UserLogout|rummuar]] ken sumrekka manen.",
-       "session_fail_preview_html": "'''Pasensia! Saanmi a maaramid ti panagurnosmo ngamin ket naawanan ti gimong ti datos.'''\n\n''Gapu ti {{SITENAME}} ket addaa ti nakilaw a HTML a nakapabaelan, ti panagpadas ket nailemmeng a kas pagan-annadan kadagiti panagraut ti dakes a JavaScript.''\n\n'''No daytoy ket pudno a panag-urnos, pangngaasi a padasem manen.'''\nNo saan pay a mabalin, padasem ti [[Special:UserLogout|rummuar]] ken sumrekka manen.",
-       "token_suffix_mismatch": "'''Ti panag-urnosmo ket saan a naawat ngamin ket ti klientem ket dinadaelna ti kuldit ti kababalin idiay panagpudno ti panag-urnos.'''\nTi panag-urnos ket saan a naawat tapno mapawilan ti panakadadael ti testo ti panid.\nMapasamak daytoy no agus-usarka ti saan a nasayaat a naibasta ti sapot a di ammo a pannakbagi a panagserbi.",
-       "edit_form_incomplete": "'''Adda dagiti paset ti panag-urnos a porma a saan a nakadanon dita server; kitkitaen nga dagiti panag-urnosmo ket saan a naikkatan ken padasem manen.'''",
+       "previewconflict": "Daytoy a panagpadas ket mangipakita ti testo iti lugar ti akin-ngato a pangurnosan ti testo a kasla agparang no piliem nga idulin.",
+       "session_fail_preview": "<strong>Pasensia! Saanmi a maproseso ti panag-urnosmo gapu ta naawanan ti sesion ti datos.</strong>\nPangngaasi a padasen manen.\nNo saan pay a mabalin, padasen ti [[Special:UserLogout|rummuar]] ken sumrek manen.",
+       "session_fail_preview_html": "<strong>Pasensia! Saanmi a maproseso ti panag-urnosmo gapu ta naawanan ti sesion ti datos.</strong>'\n\n<em>Gapu ta ti {{SITENAME}} ket addaan iti naata a HTML a nakapabaelan, ti panagpadas ket nailemmeng a kas pagan-annadan kadagiti panagraut ti dakes a JavaScript.</em>\n\n<strong>No daytoy ket pudno a panag-urnos, pangngaasi a padasem manen.</strong>\nNo saan pay a mabalin, padasen ti [[Special:UserLogout|rummuar]] ken sumrek manen.",
+       "token_suffix_mismatch": "<strong>Ti panag-urnosmo ket saan a naawat ngamin ket ti klientem ket dinadaelna dagiti karakter ti tuldek iti tandaan ti panag-urnos.</strong>\nTi panag-urnos ket saan a naawat tapno mapawilan ti pannakadadael ti testo ti panid.\nSagpaminsan a mapasamak daytoy no agus-usarka ti saan a nasayaat a naibatay ti web ti di ammo a pannakbagi a serbisio.",
+       "edit_form_incomplete": "<strong>Adda dagiti paset ti pagurnosan a porma a saan a nakadanon dita server; mamindua a kitaen dagiti panag-urnosmo ket sibubukel ken padasen manen.</strong>",
        "editing": "Ur-urnosen ti $1",
        "creating": "Agparpartuat ti $1",
        "editingsection": "Ur-urnosen ti $1 (paset)",
        "editingcomment": "Ur-urnosen ti $1 (baro a paset)",
-       "editconflict": "Adda kasinnungat ti panag-urnos: $1",
-       "explainconflict": "Adda sabali a nagsukat iti daytoy a panid idi nangrugika a nagurnos.\nTi ngato a lugar ti testo ket adda dagiti nagyanna a testo ti panid a kasla agdama a kitana.\nTi inurnosmo ket maipakita dita babba a lugar ti testo\nIpatiponmo dagiti sinukatam idiay lugar ti testo.\n'''Iti laeng''' testo dita ngato a lugar ti testo ti maidulin no pindutem ti \"{{int:savearticle}}\".",
+       "editconflict": "Agsinnungat a panag-urnos: $1",
+       "explainconflict": "Adda sabali a nagsukat iti daytoy a panid idi nangrugika a nagurnos.\nTi akinngato a lugar ti testo ket aglaon ti testo ti panid iti agdama kaddana.\nDagiti sinukatam ket maipakita iti akinbabba a lugar ti testo.\nNasken nga itiponmoto dagiti sinukatam iti adda a testo.\nTi <strong>laeng</strong> testo iti akinngato a lugar ti testo ti maidulinto no talmegam ti \"{{int:savearticle}}\".",
        "yourtext": "Ti testom",
-       "storedversion": "Bersion a naidulin",
-       "nonunicodebrowser": "'''Ballaag: Ti  pabasabasam ket saan a naikeddeng ti Unicode .'''\nAdda sabali a mausar tapno makaurnoska kadagiti panid: Ti saan nga-ASCII a kababalin ket agparang iti pagurnosan a kahon a kas dagiti heksadesimal a kodigo.",
-       "editingold": "'''Ballag: Ur-urnosem ti daan a panag-baliw iti daytoy a panid.'''\nNo idulinmo, mapukaw amin a sinukatam iti daytoy a panag-baliw.",
-       "yourdiff": "Dagiti nagdudumaan",
-       "copyrightwarning": "Laglagipenyo koma, apo, nga amin a maiparawad iti {{SITENAME}} ket maibilang a mairuar babaen ti $2 (kitaen ti $1 para kadagiti salaysay). \nNo dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmo laengen nga ip-ipan wenno ipabpablaak ditoy.<br />\nKasta met nga ikarim kadakami a bukodmo a sinurat wenno gapuanan daytoy, wenno tinuladmo manipud ti maysa a nawaya a pagturayan ti publiko wenno ti kapadpadana a nawaya a nagtaudan.\n '''Saan a mangited ti adda karbenganna a panagipablaak nga obra no awan ti  pammalubos!'''",
-       "copyrightwarning2": "Pangngaasiyo, apo, a laglagipen nga amin a maiparawad iti {{SITENAME}} ket mabalin a maurnos, masuktan, wenno ikkaten dagiti sabali pay nga agar-aramat.\nNo dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmo laengen nga ip-ipan wenno ipabpablaak ditoy.<br />\nKasta met nga ikarim kadakami a bukodmo a sinurat wenno gapuanan daytoy, wenno tinuladmo manipud ti maysa a nawaya a pagturayan ti publiko wenno ti kapadpadana a nawaya a pagtaudan (kitaen ti $1 para iti salaysay).\n'''Saan a mangipan iti adda ti karbenganna a panagpablaak nga obra no awan ti  pammalubos!'''",
-       "longpageerror": "'''Biddut: Ti testo nga intedmo ket {{PLURAL:$1|maysa a kilobyte|$1 kil-kilobyte}} a katiddog, nga at-atiddog ngem ti kangatuan iti  {{PLURAL:$2|maysa a kilobyte|$2 kil-kilobyte}}.'''\nIsu ti gapuna a saan a maidulin.",
-       "readonlywarning": "'''Ballaag: Narikepan ti database tapno mataripatu, isu a saanmo a mabalin nga idulin dagita inurnosmo tattan.'''\nMabalinmo ti agkopia ken agikabil ti testom iti maysa a testo a papeles ken idulinmo para iti panagusar no madamdama.\n\nTi administrador a nangrikep ket nangited iti daytoy a palawag: $1",
-       "protectedpagewarning": "'''Ballaag:  Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga adda ti gundaway nga administrador ti makaurnos ditoy.'''\nTi nakaudi a naikabil a listaan ket adda dita baba tapno usaren a reperensia:",
-       "semiprotectedpagewarning": "'''Pakaammo:'''Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaurnos ditoy.\nTi naudi a naikabil a listaan ket adda dita baba tapno usaren a reperensia:",
-       "cascadeprotectedwarning": "'''Ballaag:''' Daytoy a panid ket nasalakniban tapno dagiti laeng administrador nga adda ti pammalubos ti makaurnos ngamin ket nairaman kadagiti sumaganad a nasalakniban iti sariap\n{{PLURAL:$1|a panid|a pampanid}}:",
-       "titleprotectedwarning": "'''Ballaag:  Nasalakniban daytoy a panid tapno [[Special:ListGroupRights|dagiti naisangayan a karbengan ]] ket nasken ti makapartuat iti daytoy.'''\nTi kinaudi a naikabil iti listaan ket naikabil dita baba tapno usaren a reperensia:",
+       "storedversion": "Rebision a naidulin",
+       "nonunicodebrowser": "<strong>Ballaag: Ti pabasabasam ket saan a maitunos iti Unicode .</strong>\nAdda sabali a mausar tapno makaurnoska kadagiti panid: Ti saan nga-ASCII a karakter ket agparang iti pagurnosan a kahon a kas dagiti heksadesimal a kodigo.",
+       "editingold": "<strong>Ballag: Ur-urnosem ti daan a rebision iti daytoy a panid.</strong>\nNo idulinmo, ti aniaman a naramid a binaliwan manipud iti daytoy a rebision ket mapukawto.",
+       "yourdiff": "Paggigiddiatan",
+       "copyrightwarning": "Pangngaasi a laglagipen nga amin a kontribusion iti {{SITENAME}} ket naikeddeng a naipablaak babaen ti babaen ti $2 (kitaen ti $1 para kadagiti salaysay). \nNo dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmon nga ited ditoy.<br />\nIkarkarim pay kadakami a bukodmo a sinurat daytoy, wenno kinopia manipud ti publiko a dominio wenno ti kapadpadana a nawaya a nagtaudan.\n<strong>Saan a mangited ti nakarbengan ti kopia nga obra no awan iti pammalubos!</strong>",
+       "copyrightwarning2": "Pangngaasi a laglagipen nga amin a kontribusion iti {{SITENAME}} ket mabalin a maurnos, mabaliwan, wenno ikkaten dagiti sabali a kontributor.\nNo dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmon nga ited ditoy.<br />\nIkarkarim pay kadakami a bukodmo a sinurat daytoy, wenno kinopia manipud ti publiko a dominio wenno ti kapadpadana a nawaya a nagtaudan. (kitaen ti $1 para kadagiti salaysay).\n<strong>Saan a mangited ti nakarbengan ti kopia nga obra no awan iti pammalubos!</strong>",
+       "longpageerror": "<strong>Biddut: Ti testo nga intedmo ket {{PLURAL:$1|maysa a kilobyte|$1 kil-kilobyte}} ti katiddogna, nga at-atiddog ngem ti kangatuan iti  {{PLURAL:$2|maysa a kilobyte|$2 kil-kilobyte}}.</strong>\nSaan a mabalin a maidulin.",
+       "readonlywarning": "<strong>Ballaag: Narikepan ti database tapno mataripato, isu a saanmo a mabalin nga idulin dagita inurnosmo tattan.</strong>\nMabalinmo ti agkopia ken agipegket ti testom iti papeles ti testo ken idulinmo daytoy intono madamdama.\n\nTi administrador a nangrikep ket nangited iti daytoy a palawag: $1",
+       "protectedpagewarning": "<strong>Ballaag: Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan iti gundaway nga administrador ti makaurnos ditoy.</strong>\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:",
+       "semiprotectedpagewarning": "<strong>Nota:</strong> Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaurnos ditoy.\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:",
+       "cascadeprotectedwarning": "<strong>Ballaag:</strong> Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan iti gundaway nga administrador ti makaurnos ngamin ket nairaman kadagiti sumaganad a nasalakniban iti sariap\n{{PLURAL:$1|a panid|a pampanid}}:",
+       "titleprotectedwarning": "<strong>Ballaag:  Nasalakniban daytoy a panid tapno [[Special:ListGroupRights|dagiti naisangayan ti karbengan]] ket nasken a makapartuat iti daytoy.</strong>\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:",
        "templatesused": "{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a panid:",
        "templatesusedpreview": "{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a panagpadas:",
        "templatesusedsection": "{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a paset:",
        "template-protected": "(nasalakniban)",
        "template-semiprotected": "(nasalakniban-bassit)",
-       "hiddencategories": "Daytoy a panid ket kameng  {{PLURAL:$1|ti 1 a nailemmeng a kategoria|dagiti $1 a nailemmeng a kategoria}}:",
-       "nocreatetext": "Pinaritan ti {{SITENAME}} ti pannakabael a panagaramid iti kabarbaro a pampanid.\nMabalinmo ti agsubli ken urnosen ti adda a panid, wenno [[Special:UserLogin|sumrek wenno agaramid ti pakabilangan]].",
+       "hiddencategories": "Daytoy a panid ket kameng {{PLURAL:$1|ti 1 a nailemmeng a kategoria|dagiti $1 a nailemmeng a kategoria}}:",
+       "nocreatetext": "Ginawidan ti {{SITENAME}} ti abilidad nga agpartuat kadagiti baro a panid.\nMabalinmo ti agsubli ken agurnos ti adda a panid, wenno [[Special:UserLogin|sumrek wenno agapartuat ti pakabilangan]].",
        "nocreate-loggedin": "Awan ti pammalubosmo nga agpartuat kadagiti baro a panid.",
-       "sectioneditnotsupported-title": "Saan a nasuportaran ti panagurnos ti paset",
+       "sectioneditnotsupported-title": "Saan a nasuportaran ti panag-urnos ti paset",
        "sectioneditnotsupported-text": "Saan a nasuportaran ti panag-urnos ti paset iti daytoy a panid.",
        "permissionserrors": "Biddut ti pammalubos",
        "permissionserrorstext": "Awan ti pammalubosmo nga agaramid iti dayta, gapu ti sumaganad {{PLURAL:$1|a rason|a rasrason}}:",
        "permissionserrorstext-withaction": "Awan ti pammalubosmo nga $2, gapu ti sumaganad a {{PLURAL:$1|rason|rasrason}}:",
-       "recreate-moveddeleted-warn": "'''Ballaag: Agparpartuatka manen ti dati a naikkat a panid'''\n\nNasken a siguraduem no maikanatad nga ituloymo nga urnosen daytoy a panid.\nTi pannakaikkat ken pannakaiyalis a listaan para iti daytoy a panid ket adda ditoy a pakakitaan:",
-       "moveddeleted-notice": "Naikkaten daytoy a panid.\nTi listaan a pannakaikkat ken pannakaiyalis ti panid ket naikabil dita baba tapno usaren a reperensia.",
+       "recreate-moveddeleted-warn": "<strong>Ballaag: Agparpartuatka manen ti dati a naikkat a panid.</strong>\n\nUsigem koma no maitutop ti agtuloy nga agurnos iti daytoy a panid.\nTi listaan ti pannakaikkat ken pannakaiyalis para iti daytoy a panid ket naited ditoy para iti pakainugotan:",
+       "moveddeleted-notice": "Naikkaten daytoy a panid.\nTi listaan ti pannakaikkat ken pannakaiyalis para iti panid ket naited dita baba para iti reperensia.",
        "log-fulllog": "Kitaem ti napno a listaan",
        "edit-hook-aborted": "Ti panag-urnos ket pinasardeng babaen ti kawit.\nAwan ti intedna a palawag.",
        "edit-gone-missing": "Saan a mapabaro daytoy a panid.\nKasla met naikkaten.",
-       "edit-conflict": "Adda kasinnungat ti panag-urnos.",
-       "edit-no-change": "Ti inurnosmo ket saan a naikaskaso, ngamin ket awan ti nasukatan a testo.",
+       "edit-conflict": "Kasinnungat ti panag-urnos.",
+       "edit-no-change": "Ti inurnosmo ket saan a naikaskaso ngamin ket awan ti naaramid a pannakasukat iti testo.",
        "postedit-confirmation-created": "Ti panid ket napartuaten.",
-       "postedit-confirmation-restored": "Ti panid ket naisublin.",
+       "postedit-confirmation-restored": "Ti panid ket naipulangen.",
        "postedit-confirmation-saved": "Ti inurnosmo ket naidulinen.",
        "edit-already-exists": "Saan a makaaramid ti baro a panid.\nAdda met daytoyen.",
        "defaultmessagetext": "Kasisigud a testo ti mensahe",
-       "content-failed-to-parse": "Napaay a nausig ti $2 a linaon para iti $1 a modelo: $3",
+       "content-failed-to-parse": "Napaay a mawaswas ti $2 a linaon para iti $1 a modelo: $3",
        "invalid-content-data": "Imbalido a datos ti linaon",
-       "content-not-allowed-here": "Ti \"$1\" a linaon ket saan a maipalubos idiay panid ti [[$2]]",
-       "editwarning-warning": "Ti ipapanaw iti daytoy a panid ket makapataud ti pannakapukaw kadagiti aniaman a binalbaliwam.\nNo nakastrekka, mabalinmo nga ibaldado daytoy a ballaag idiay \"{{int:prefs-editing}}\" a paset kadagiti kakaykayatam.",
+       "content-not-allowed-here": "Ti \"$1\" a linaon ket saan a maipalubos iti panid ti [[$2]]",
+       "editwarning-warning": "Ti ipapanaw iti daytoy a panid ket makapataud ti pannakapukaw kadagiti aniaman a binalbaliwam.\nNo nakastrekka, mabalinmo nga ibaldado daytoy a ballaag iti \"{{int:prefs-editing}}\" a paset kadagiti kakaykayatam.",
        "editpage-notsupportedcontentformat-title": "Ti pormat ti linaon ket saan a nasuportaran",
        "editpage-notsupportedcontentformat-text": "Ti pormat ti linaon ti $1 ket saan a nasuportaran babaen ti modelo ti linaon ti $2.",
        "content-model-wikitext": "wikitext",
        "content-model-text": "naranas a testo",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
-       "expensive-parserfunction-warning": "'''Ballaag:''' Daytoy a panid ket adu unay kadagiti nangina a parser a pamay-an  a panagtawtawag.\n\nAdda koman basbasit ngem $2 {{PLURAL:$2|a panagtawtawag|kadagiti panagtawtawag}}, adda {{PLURAL:$1|tattan $1 a panagtawtawag|tattan kadagiti $1 a panagtawtawag}}.",
+       "expensive-parserfunction-warning": "<strong>Ballaag:</strong> Daytoy a panid ket adu unay kadagiti nangina a parser a pamay-an a panagtawtawag.\n\nAdda koman basbasit ngem $2 {{PLURAL:$2|a panagtawtawag|kadagiti panagtawtawag}}, adda {{PLURAL:$1|tattan iti $1 a panagtawtawag|tattan kadagiti $1 a panagtawtawag}}.",
        "expensive-parserfunction-category": "Dagiti panid nga adda ti adu unay a nangina a parser a pamay-an a panagtawtawag",
-       "post-expand-template-inclusion-warning": "'''Ballaag:''' Dakkel unay ti nairaman a kadakkel ti plantilia.\nAdda dagiti plantilia a saanto a mairaman.",
+       "post-expand-template-inclusion-warning": "<strong>Ballaag:</strong> Dakkel unay ti nairaman a kadakkel ti plantilia.\nAdda dagiti plantilia a saanto a mairaman.",
        "post-expand-template-inclusion-category": "Pampanid nga ayan ti plantilia a nagsobra ti kadakkel ti rukod a nairaman",
-       "post-expand-template-argument-warning": "'''Ballaag:''' Daytoy a panid ket aglaon ti saan a basbasit ngem maysa a panangipalawag ti plantilia a dakkel unay ti panagpadakkelna.\nDagitoy a panangipalawag ket naikkaten.",
-       "post-expand-template-argument-category": "Dagiti panid a naglaon ti naikkat a plantilia kadagiti kasinnungat",
-       "parser-template-loop-warning": "Adda nasarakan a silo ti plantilia: [[$1]]",
-       "parser-template-recursion-depth-warning": "Ti kinauneg ti panagdullit ti plantilia ket nagpatingga ti napalabes ($1)",
-       "language-converter-depth-warning": "Ti kauneg ti panagaramid ti pagsasao ket napalabes ti agpatingga a ($1)",
+       "post-expand-template-argument-warning": "<strong>Ballaag:</strong> Daytoy a panid ket aglaon ti saan a basbasit ngem maysa a panangipalawag ti plantilia a dakkel unay ti panagpadakkelna.\nDagitoy nga argumento ket saanen a nairaman.",
+       "post-expand-template-argument-category": "Pampanid a naglaon dagiti saan a nairaman nga argumento ti plantilia",
+       "parser-template-loop-warning": "Nakaduktal ti silo ti plantilia: [[$1]]",
+       "parser-template-recursion-depth-warning": "Nalabsan ti patingga ti panagdullit ti kinauneg ti plantilia ($1)",
+       "language-converter-depth-warning": "Nalabsan ti patingga ti pagbaliwen a kinauneg ti pagsasao ($1)",
        "node-count-exceeded-category": "Dagiti panid a simmurok ti bilang ti nodo",
        "node-count-exceeded-category-desc": "Ti kategoria para kadagiti panid a nalabsan ti bilang ti nodo.",
        "node-count-exceeded-warning": "Ti panid ket nasurokanna ti bilang ti nodo",
        "expansion-depth-exceeded-category": "Dagiti panid a nasurokan ti kauneg ti panagpadakkel",
        "expansion-depth-exceeded-category-desc": "Daytoy ket kategoria para kadagiti panid a nalabsan ti kauneg ti panagpadakkel.",
        "expansion-depth-exceeded-warning": "Ti panid ket nasurokanna ti kauneg ti panagpadakkel",
-       "parser-unstrip-loop-warning": "Adda nakita a di-naukisan a silo",
-       "parser-unstrip-recursion-limit": "Ti di-naukisan a panagsumro manen a patingga ket nasurokan ($1)",
-       "converter-manual-rule-error": "Adda biddut a naduktalan idiay manual nga alagaden ti panagbalbaliw ti pagsasao",
-       "undo-success": "Ti panag-urnos ket saan a maisubli.\nPangngaasi a kitaen ti pagipadaan dita baba tapno maamuan no agpaypayso ti kayatmo nga aramiden, ken idulin dagiti sinukatan dita baba tapno malpas ti panagsubli ti inurnos.",
+       "parser-unstrip-loop-warning": "Nakaduktal ti di-naukisan a silo",
+       "parser-unstrip-recursion-limit": "Nalabsan ti patingga ti panagdullit ti di-naukisan ($1)",
+       "converter-manual-rule-error": "Adda biddut a naduktalan iti manual nga alagaden ti panagbalbaliw ti pagsasao",
+       "undo-success": "Ti panag-urnos ket saan a maisubli.\nPangngaasi a kitaen ti panangipada dita baba tapno maammuan no daytoy ti kayatmo nga aramiden, ken kalpasanna idulin dagiti sinukatan dita baba tapno malpas ti panagsubli ti inurnos.",
        "undo-failure": "Ti inurnos ket saan a maipasubli gaputa adda dagiti nakisinnungat a patingnga a naurnos.",
        "undo-norev": "Saan a maibabawi ti naurnos ngamin ket awan daytoy wenno mabalin a naikkaten.",
        "undo-nochange": "Ti inurnos ket kasla naibabawin.",
        "undo-summary": "Ibabawi ti $1 a binaliwan babaen ni [[Special:Contributions/$2|$2]] ([[User talk:$2|tungtungan]])",
        "undo-summary-username-hidden": "Isubli ti $1 a binaliwan babaen ti nailemmeng nga agar-aramat",
-       "cantcreateaccounttitle": "Saan a makaaramid ti pakabilangan",
-       "cantcreateaccount-text": "Ti panagaramid ti pakabilangan manipud ti daytoy nga IP a pagtaengan ('''$1''') ket sinerraan babaen ni [[User:$3|$3]].\n\nTi inted a rason babaen ni $3 ket ''$2''",
-       "cantcreateaccount-range-text": "Ti pannakapartuat ti pakabilangan manipud kadagiti pagtaengan ti IP iti sakop ti '''$1''', a mairaman ti IP a pagtaengam ('''$4'''), ket sinerraan babaen ni [[User:$3|$3]].\n\nTi inted a rason babaen ni $3 ket ''$2''",
+       "cantcreateaccounttitle": "Saan a makapartuat ti pakabilangan",
+       "cantcreateaccount-text": "Ti panagpartuat ti pakabilangan manipud ti daytoy nga IP a pagtaengan (<strong>$1</strong>) ket sinerraan babaen ni [[User:$3|$3]].\n\nTi inted a rason babaen ni $3 ket <em>$2</em>",
+       "cantcreateaccount-range-text": "Ti panagpartuat ti pakabilangan manipud kadagiti pagtaengan ti IP iti sakop ti '''$1''', a mairaman ti IP a pagtaengam ('''$4'''), ket sinerraan babaen ni [[User:$3|$3]].\n\nTi inted a rason babaen ni $3 ket ''$2''",
        "viewpagelogs": "Kitaen dagiti listaan para iti daytoy a panid",
        "nohistory": "Awan ti pakasaritaan ti panag-urnos iti daytoy a panid.",
-       "currentrev": "Kinaudi a binaliwan",
-       "currentrev-asof": "Kinaudi a panagbalbaliw manipud idi $1",
-       "revisionasof": "Panagbalbaliw manipud idi $1",
-       "revision-info": "Panagbaliw manipud idi $1 babaen ni {{GENDER:$6|$2}}$7",
-       "previousrevision": "←Daan a panagbalbaliw",
-       "nextrevision": "Nabarbaro a panagbalbaliw→",
-       "currentrevisionlink": "Kinaudi a binaliwan",
+       "currentrev": "Kinaudi a rebision",
+       "currentrev-asof": "Kinaudi a rebision manipud idi $1",
+       "revisionasof": "Rebision manipud idi $1",
+       "revision-info": "Rebision manipud idi $1 babaen ni {{GENDER:$6|$2}}$7",
+       "previousrevision": "← Nadadaan a rebision",
+       "nextrevision": "Nabarbaro a rebision →",
+       "currentrevisionlink": "Kinaudi a rebision",
        "cur": "agdama",
        "next": "sumaruno",
        "last": "naudi",
        "page_first": "umuna",
        "page_last": "naudi",
-       "histlegend": "Panagpili ti diperensia: Markaan dagiti kahon ti radio kadagiti panagbaliw tapno maipada ken pinduten ti serrek wenno ti buton dita baba.<br />\nLeyenda: <strong>({{int:cur}})</strong> = naggidiatan ti kinaudi a panagbaliw, <strong>({{int:last}})</strong> = naggidiatan ti sarsarunuen a panagbaliw , <strong>{{int:minoreditletter}}</strong> = bassit a panagbaliw.",
+       "histlegend": "Panagpili ti diperensia: Markaan dagiti kahon ti radio kadagiti rebision tapno maipada ken pinduten ti enter wenno ti buton dita baba.<br />\nLeyenda: <strong>({{int:cur}})</strong> = naggidiatan ti kinaudi a rebision, <strong>({{int:last}})</strong> = naggidiatan ti sarsarunuen a rebision, <strong>{{int:minoreditletter}}</strong> = bassit nga urnos.",
        "history-fieldset-title": "Agbasabasa ti pakasaritaan",
        "history-show-deleted": "Naikkat laeng",
        "histfirst": "kadaanan",
        "histlast": "kabaruan",
        "historysize": "({{PLURAL:$1|1 byte|dagiti $1 a byte}})",
-       "historyempty": "(blanko)",
-       "history-feed-title": "Pakasaritaan ti panagbalbaliw",
-       "history-feed-description": "Pakasaritaan ti panagbalbaliw para iti daytoy a panid ditoy a wiki",
-       "history-feed-item-nocomment": "$1 iti $2",
+       "historyempty": "(awan linaon)",
+       "history-feed-title": "Pakasaritaan ti rebision",
+       "history-feed-description": "Pakasaritaan ti rebision para iti daytoy a panid ditoy a wiki",
+       "history-feed-item-nocomment": "$1 idi $2",
        "history-feed-empty": "Awan ti kiniddaw a panid.\nMabalin a naikkat manipud ti daytoy a wiki, wenno nanaganan manen.\nPadasem ti [[Special:Search|agbiruk ditoy a wiki]] para kadagiti maitutop a baro a panid.",
        "rev-deleted-comment": "(naikkat ti pakabuklan ti inurnos)",
        "rev-deleted-user": "(naikkat ti nagan ti agar-aramat)",
-       "rev-deleted-event": "(naikkat ti aramid a listaan)",
-       "rev-deleted-user-contribs": "[ti nagan ti agar-aramat wenno IP a pagtaengan ket naikkat - ti inurnos ket nailemmeng kadagiti nagparawad]",
-       "rev-deleted-text-permission": "Ti pannakabaliw daytoy a panid ket '''naikkaten'''.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
-       "rev-deleted-text-unhide": "Ti pannakabaliw daytoy a panid ket '''naikkaten'''.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].\nMabalinmo pay a [$1 makita daytoy a panakabaliw] no kayatmo ti agtuloy.",
-       "rev-suppressed-text-unhide": "Ti pannakabaliw daytoy a panid ket '''napasardeng'''.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].\nMabalinmo pay a [$1 makita daytoy a panakabaliw] no kayatmo ti agtuloy.",
-       "rev-deleted-text-view": "Ti pannakabaliw daytoy a panid ket '''naikkaten'''.\nMabalinmo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
-       "rev-suppressed-text-view": "Ti pannakabaliw daytoy a panid ket '''napasardeng'''.\nMabalinmo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].",
-       "rev-deleted-no-diff": "Saanmo a makita daytoy a paggiddiatan ngamin ket ti maysa a panagbaliw ket '''naikkat''.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
-       "rev-suppressed-no-diff": "Saanmo a makita daytoy a paggiddiatan ngamin ket maysa a panagbaliwan ket '''naikkat''.",
-       "rev-deleted-unhide-diff": "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''naikkaten'''.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].\nMabalinmo pay a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
-       "rev-suppressed-unhide-diff": "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''napasardeng'''.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].\nMabalinmo pay a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
-       "rev-deleted-diff-view": "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''naikkaten'''.\nMabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
-       "rev-suppressed-diff-view": "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''napasardeng'''.\nMabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].",
-       "rev-delundel": "ipakita/ilemmeng",
+       "rev-deleted-event": "(naikkat ti listaan ti tignay)",
+       "rev-deleted-user-contribs": "[naikkat ti nagan ti agar-aramat wenno IP a pagtaengan - ti inurnos ket nailemmeng manipud kadagiti kontributor]",
+       "rev-deleted-text-permission": "Ti rebision daytoy a panid ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
+       "rev-deleted-text-unhide": "Ti rebision daytoy a panid ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].\nMabalinmo pay a [$1 makita daytoy a rebision] no kayatmo ti agtuloy.",
+       "rev-suppressed-text-unhide": "Ti rebision daytoy a panid ket <strong>napasardeng</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].\nMabalinmo pay a [$1 makita daytoy a rebision] no kayatmo ti agtuloy.",
+       "rev-deleted-text-view": "Ti rebision daytoy a panid ket <strong>naikkaten</strong>.\nMabalinmo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
+       "rev-suppressed-text-view": "Ti rebision daytoy a panid ket <strong>napasardeng</strong>.\nMabalinmo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].",
+       "rev-deleted-no-diff": "Saanmo a makita daytoy a paggiddiatan ngamin ket ti maysa a rebision ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
+       "rev-suppressed-no-diff": "Saanmo a makita daytoy a paggiddiatan ngamin ket maysa kadagiti rebision ket <strong>naikkaten</strong>.",
+       "rev-deleted-unhide-diff": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].\nMabalinmo pay a laeng a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
+       "rev-suppressed-unhide-diff": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>napasardeng</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].\nMabalinmo pay a laeng a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
+       "rev-deleted-diff-view": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>naikkaten</strong>.\nMabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
+       "rev-suppressed-diff-view": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>napasardeng</strong>..\nMabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].",
+       "rev-delundel": "baliwan ti pannakakita",
        "rev-showdeleted": "ipakita",
-       "revisiondelete": "Ikkaten/isubli dagiti naikkat a panagbaliw",
-       "revdelete-nooldid-title": "Imbalido ti napuntaan a panagbaliw",
-       "revdelete-nooldid-text": "Mabalin a saanmo nga imbaga ti pagpuntaan ti panagbaliw  (dagiti panagbaliwan) ti panagaramid daytoy,\nawan ti naibaga a panagbaliw, wenno padpadasem nga ilemlemmeng ti agdama a panagbaliw.",
+       "revisiondelete": "Ikkaten/isubli dagiti naikkat a rebision",
+       "revdelete-nooldid-title": "Imbalido ti puntaan a rebision",
+       "revdelete-nooldid-text": "Mabalin a saanmo nga imbaga dagiti puntaan a rebision iti panagaramid daytoy nga annong, awan ti nainaganan a rebision, wenno padpadasem nga ilemlemmeng ti agdama a rebision.",
        "revdelete-no-file": "Awan dayta nainaganan a papeles.",
-       "revdelete-show-file-confirm": "Sigurado kadi a kayatmo ti mangkita ti naikkat a baliwan ti papeles \"<nowiki>$1</nowiki>\" a naggapu idi $2 idi $3?",
+       "revdelete-show-file-confirm": "Siguradoka kadi a kayatmo ti mangkita ti naikkat a rebision ti papeles ti \"<nowiki>$1</nowiki>\" manipud idi $2 idi $3?",
        "revdelete-show-file-submit": "Wen",
-       "revdelete-selected-text": "{{PLURAL:$1|Napili a nabaliwan|Dagiti napili a nabaliwan}} iti [[:$2]]:",
+       "revdelete-selected-text": "{{PLURAL:$1|Napili a rebision|Dagiti napili a rebision}} iti [[:$2]]:",
        "revdelete-selected-file": "{{PLURAL:$1|Napili a bersion ti papeles|Dagiti napili a bersion ti papeles}} iti [[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|Ti napili a listaan ti napasamak|Dagiti napili a listaan ti napasamak}}:",
        "revdelete-text-text": "Dagiti naikkat a rebision ket agparangto pay laeng iti panid ti pakasaritaan, ngem dagiti paset ti linaonda ket saanton a publiko a maserrekan.",
        "revdelete-text-file": "Dagiti naikkat a bersion ti papeles ket agparangto pay laeng iti pakasaritaan ti papeles, ngem dagiti paset ti linaonda ket saanton a publiko a maserrekan.",
        "logdelete-text": "Dagiti naikkat a listaan ti pasamak ket agparangto pay laeng kadagiti listaan, ngem dagiti paset ti linaonda ket saanton a publiko a maserrekan.",
-       "revdelete-text-others": "Dagiti sabali nga administrador iti {{SITENAME}} ket mabalindanto pay laeng a maserrekan ti nailemmeng a linaon ken mabalindanto manen ti mangisubli ti pannakaikkat babaen iti daytoy nga isu met laeng nga interface, malaksid no adda dagiti maipatinayon a maisaad a panangigawid.",
-       "revdelete-confirm": "Pangngaasi a pasingkedam a kayatmo nga aramiden daytoy, a maawatam dagiti pagbanagan, ket araramidem daytoy a segun iti [[{{MediaWiki:Policy-url}}|ti annuroten]].",
-       "revdelete-suppress-text": "Ti panagdepdep ket usaren '''laeng''' kadagiti sumaganad a kaso;\n* Makapataud ti libelo a pakaammo\n* Di maiparbeng a personal a pakaammo\n* : ''dagiti pagtaengan ken numero ti telepono, dagiti numero ti nailian a pakaipakaammuan, ken dadduma pay.''",
-       "revdelete-legend": "Ikabil dagiti panagiparit ti panagkita",
-       "revdelete-hide-text": "Testo ti binaliwan",
+       "revdelete-text-others": "Dagiti sabali nga administrador ket mabalindanto pay laeng a maserrekan ti nailemmeng a linaon ken mangisubli daytoy, malaksid no adda dagiti maipatinayon a maisaad a panangigawid.",
+       "revdelete-confirm": "Pangngaasi a pasingkedam a kayatmo nga aramiden daytoy, a maawatam dagiti pagbanagan, ken araramidem daytoy segun [[{{MediaWiki:Policy-url}}|ti annuroten]].",
+       "revdelete-suppress-text": "Ti panagdepdep ket usaren <strong>laeng</strong> kadagiti sumaganad a kaso;\n* Makapataud ti libelo a pakaammo\n* Di maiparbeng a personal a pakaammo\n* : <em>dagiti adres ti balay ken numero ti telepono, dagiti numero ti nailian a pakaipakaammuan, kdpy.</em>",
+       "revdelete-legend": "Isaad dagiti panangigawid ti panagkita",
+       "revdelete-hide-text": "Testo ti rebision",
        "revdelete-hide-image": "Ilemmeng ti linaon ti papeles",
        "revdelete-hide-name": "Ilemmeng ti aramid ken puntaan",
        "revdelete-hide-comment": "Pakabuklan ti inurnos",
-       "revdelete-hide-user": "Nagan ti agar-amat/ti IP a pagtaengan",
-       "revdelete-hide-restricted": "Depdepen ti datos a naggapu kadagiti administrador ken dagiti sabsabali",
+       "revdelete-hide-user": "Nagan ti agar-amat/IP a pagtaengan ti editor",
+       "revdelete-hide-restricted": "Depdepen ti datos manipud kadagiti administrador ken dagiti pay sabali",
        "revdelete-radio-same": "(saan a sukatan)",
        "revdelete-radio-set": "Nailemmeng",
        "revdelete-radio-unset": "Makita",
-       "revdelete-suppress": "Depdepen ti datos manipud kadagiti administrador ken dagiti sabsabali",
-       "revdelete-unsuppress": "Ikkaten dagiti pannakaiparit kadagiti naisubli a binaliwan",
+       "revdelete-suppress": "Depdepen ti datos manipud kadagiti administrador ken dagiti pay sabali",
+       "revdelete-unsuppress": "Ikkaten dagiti panangigawid kadagiti naipulang a rebision",
        "revdelete-log": "Rason:",
-       "revdelete-submit": "Ipakat {{PLURAL:$1|ti napili a panagbalbaliw|dagiti napili a panagbalbaliw}}",
-       "revdelete-success": "'''Balligi ti panagpabaro ti panagkita ti binalbaliwan.'''",
-       "revdelete-failure": "'''Saan a napabaro ti panagkita ti binalbaliwan.'''\n$1",
-       "logdelete-success": "'''Balligi ti panagikabil ti listaan ti panagkita.'''",
-       "logdelete-failure": "'''Napaay ti panagikabil ti listaan ti panagkita:'''\n$1",
+       "revdelete-submit": "Ipakat {{PLURAL:$1|ti napili a rebision|dagiti napili a rebision}}",
+       "revdelete-success": "<strong>Balligi ti panagpabaro ti panagkita ti rebision.</strong>",
+       "revdelete-failure": "<strong>Saan a napabaro ti panagkita ti rebision.</strong>\n$1",
+       "logdelete-success": "<strong>Balligi ti pannakaisaad ti listaan ti panagkita.</strong>",
+       "logdelete-failure": "<strong>Napaay ti pannakaisaad ti listaan ti panagkita:</strong>\n$1",
        "revdel-restore": "sukatan ti panagkita",
        "pagehist": "Pakasaritaan ti panid",
        "deletedhist": "Naikkat a pakasaritaan",
-       "revdelete-hide-current": "Biddut ti pannakailemmeng ti banag a napetsado a $2, $1: Daytoy ti kinaudi a panagbaliw\nSaan a mabalin a mailemmeng.",
-       "revdelete-show-no-access": "Biddut ti panangipakita ti banag a petsado a $2, $1: Daytoy ket namarkaan a \"nakedngan\".\nSaanmo a mabalin a serrekan.",
-       "revdelete-modify-no-access": "Biddut ti panagpabaro ti banag a petsado a $2, $1: Daytoy ket namarkaan a \"nakedngan\".\nSaanmo a mabalin a serrekan.",
-       "revdelete-modify-missing": "Biddut ti panagpabaro daytoy ID $1: Saan a nasarakan idiay database!",
-       "revdelete-no-change": "'''Ballaag:''' Daytoy a banag a napetsado ti  $2, $1 ket addaan ti kiniddaw kadagiti panagkita a kasasaad.",
-       "revdelete-concurrent-change": "Biddut ti panagpabaro daytoy a banag a napetsado ti  $2, $1: Ti panakaikabilna ket mabalin a nasuktanen ti sabsabli idi pinada mo a pinabaro.\nPangngaasi a kitaen dagiti listaan.",
-       "revdelete-only-restricted": "Biddut ti panagilemmeng daytoy banag a napetsado ti $2, $1: Saanmo a maidepdep dagita iti panagkita dagiti adminitrador no saanmo a pilian ti maysa kadagiti pinagpili ti panagkita.",
-       "revdelete-reason-dropdown": "*Dagiti kadawyan a rason ti panagikkat\n** Panaglabsing ti karbengan ti kopia\n** Di maiparbeng a komentario wenno kabukbukodan a pakaammo\n** Di maiparbeng a nagan ti agar-aramat\n** Adda pannakabalinna a pammadpadakes a pakaammo",
+       "revdelete-hide-current": "Biddut ti pannakailemmeng ti banag a napetsado ti $2, $1: Daytoy ti kinaudi a rebision.\nSaan a mabalin a mailemmeng.",
+       "revdelete-show-no-access": "Biddut ti panangipakita ti banag a petsado ti $2, $1: Daytoy ket namarkaan a \"nagawidan\".\nSaanmo a mabalin a serrekan.",
+       "revdelete-modify-no-access": "Biddut ti panagpabaro ti banag a petsado ti $2, $1: Daytoy ket namarkaan a \"nagawidan\".\nSaanmo a mabalin a serrekan.",
+       "revdelete-modify-missing": "Biddut ti panagpabaro daytoy ID $1: Awan daytoy manipud ti database!",
+       "revdelete-no-change": "<strong>Ballaag:</strong> Daytoy a banag a napetsado ti $2, $1 ken addaan ti kiniddaw a panagkita ti pannakaisaad.",
+       "revdelete-concurrent-change": "Biddut ti panagpabaro daytoy a banag a napetsado ti  $2, $1: Ti kasasaadna ket mabalin a nasukatanen ti sabali idi pinadasmo a pinabaro.\nPangngaasi a kitaen dagiti listaan.",
+       "revdelete-only-restricted": "Biddut ti panagilemmeng daytoy banag a napetsado ti $2, $1: Saanmo a maidepdep dagita iti panagkita dagiti adminitrador no saanmo a pilien ti maysa kadagiti pagpilian ti panagkita.",
+       "revdelete-reason-dropdown": "*Dagiti kadawyan a rason ti panagikkat\n** Panaglabsing ti karbengan ti kopia\n** Di maiparbeng a komentario wenno kabukbukodan a pakaammo\n** Di maiparbeng a nagan ti agar-aramat\n** Mabalin a pammadpadakes a pakaammo",
        "revdelete-otherreason": "Sabali/maipatinayon a rason:",
        "revdelete-reasonotherlist": "Sabali a rason",
        "revdelete-edit-reasonlist": "Urnosen dagiti rason ti panagikkat",
-       "revdelete-offender": "Nangsukat a mannurat:",
+       "revdelete-offender": "Mannurat ti rebision:",
        "suppressionlog": "Listaan ti nadepdepan",
-       "suppressionlogtext": "Dita baba ket addaan dagiti listaan ti pinagikkat ken panagserra a nairaman dagiti linaon a nailemmeng manipud kadagiti administrador.\nKitaen ti [[Special:BlockList|Listaan ti lapden nga IP]] para iti listaan kadagiti agdama nga operasional a panagparit ken panagserra.",
-       "mergehistory": "Pagtiponen dagiti pakasaritaan ti pampanid",
-       "mergehistory-header": "Daytoy a panid ket mabalinmo ti agitipon kadagiti pinagbaliwan ti pakasaritaan iti maysa a taudan idiay barbaro a panid.\nMasapul a sigaraduem a daytoy a panagsukat ket agsustento ti panakaituloy ti pakasaritaan ti panid.",
-       "mergehistory-box": "Pagtiponen dagiti nasukatan iti dua a pampanid:",
+       "suppressionlogtext": "Dita baba ket listaan dagiti panagikkat ken panagserra a nairaman kadagiti linaon a nailemmeng manipud kadagiti administrador.\nKitaen ti [[Special:BlockList|listaan ti serra]] para iti listaan kadagiti agdama nga operasional a panagiparit ken dagiti panagserra.",
+       "mergehistory": "Pagtiponen dagiti pakasaritaan ti panid",
+       "mergehistory-header": "Daytoy a panid ket mangpakabael kenka nga agitipon kadagiti rebision ti pakasaritaan iti maysa a taudan iti barbaro a panid.\nMasapul a siguraduen no daytoy a panagsukat ket agsustento ti pannakaituloy ti pakasaritaan ti panid.",
+       "mergehistory-box": "Pagtiponen dagiti rebision iti dua a pampanid:",
        "mergehistory-from": "Taudan ti panid:",
        "mergehistory-into": "Pangipanan a panid:",
        "mergehistory-list": "Mabalin nga itipon a pakasaritaan ti inurnos",
-       "mergehistory-merge": "Dagiti sumaganad a panagbaliw iti [[:$1]] ket mabalin nga itipon iti [[:$2]].\nUsaren ti radio a buton a tukol ti pinagtipon iti laeng panagbaliw a naaramid idiay ken sakbay ti nainagan nga oras.",
+       "mergehistory-merge": "Dagiti sumaganad a rebision iti [[:$1]] ket mabalin nga itipon iti [[:$2]].\nUsaren ti radio a buton a tukol ti panagtipon iti laeng panagbaliw a napartuat iti ken sakbay ti nainagan nga oras.\nLaglagipen a ti panag-usar kadagiti silpo ti pagdaliasatan ket mangisaad manen iti daytoy a batong.",
        "mergehistory-go": "Ipakita dagiti mabalin a maitipon a panag-urnos",
-       "mergehistory-submit": "Pagtitiponen dagiti binalbaliwan",
-       "mergehistory-empty": "Awan dagiti mabalin nga itipon ti panagbalbaliw.",
-       "mergehistory-success": "$3 {{PLURAL:$3|a binaliwan|dagiti binaliwan}} ti [[:$1]] balligi ti panagitipon idiay [[:$2]].",
-       "mergehistory-fail": "Saan a nakaaramid ti panagtipon ti pakasaritaan, pangngaasi ta kitaen ti panid ken parametro ti oras.",
+       "mergehistory-submit": "Pagtitiponen dagiti rebision",
+       "mergehistory-empty": "Awan dagiti rebision ti mabalin nga itipon.",
+       "mergehistory-success": "$3 {{PLURAL:$3|a rebision|dagiti rebision}} iti [[:$1]] ket nagballigi a naitipon iti [[:$2]].",
+       "mergehistory-fail": "Saan a nakaaramid ti panagtipon ti pakasaritaan, pangngaasi a kitaen ti panid ken dagiti parametro ti oras.",
        "mergehistory-fail-toobig": "Di naaramid ti panagtipon ti pakasaritaan gapu ta ad-adu ti patingga ti $1 {{PLURAL:$1|a rebision|kadagiti rebision}} ti maiyalisto.",
-       "mergehistory-no-source": "Awan ti taudan ti panid a $1.",
-       "mergehistory-no-destination": "Awan ti papanan ti panid a $1.",
+       "mergehistory-no-source": "Awan ti taudan ti panid ti $1.",
+       "mergehistory-no-destination": "Awan ti papanan ti panid ti $1.",
        "mergehistory-invalid-source": "Masapul nga adda ti umisu a titulo ti taudan ti panid.",
-       "mergehistory-invalid-destination": "Ti pangipanan ti panid ket masapul nga umisu a titulo.",
+       "mergehistory-invalid-destination": "Ti pangipanan a panid ket masapul nga umisu a titulo.",
        "mergehistory-autocomment": "Naitipon ti [[:$1]] iti [[:$2]]",
        "mergehistory-comment": "Naitipon ti [[:$1]] iti [[:$2]]: $3",
        "mergehistory-same-destination": "Ti nagtaudan ken ti pangipanan ti panid ket saan a mabalin nga agpada",
        "mergehistory-reason": "Rason:",
        "mergelog": "Listaan ti panagtipon",
-       "pagemerge-logentry": "itipon ti [[$1]] iti [[$2]] (dagiti binaliwan aginggana iti $3)",
+       "pagemerge-logentry": "itipon ti [[$1]] iti [[$2]] (dagiti rebision aginggana iti $3)",
        "revertmerge": "Pagsinaen",
-       "mergelogpagetext": "Adda dita baba ti listaan dagiti kinaudian a panagtipon ti maysa a panid ti pakasaritaan iti maysa a sabali.",
-       "history-title": "Panagbalbaliw a pakasaritaan iti \"$1\"",
-       "difference-title": "Paggiddiatan a nagbaetan dagiti panagbalbaliw iti \"$1\"",
+       "mergelogpagetext": "Dita baba ket ti listaan dagiti kaudian a panagtipon ti maysa a pakasaritaan ti panid iti sabali.",
+       "history-title": "Pakasaritaan a rebision iti \"$1\"",
+       "difference-title": "Paggiddiatan a nagbaetan dagiti rebision iti \"$1\"",
        "difference-title-multipage": "Paggiddiatan a nagbaetan dagiti panid  \"$1\" ken \"$2\"",
        "difference-multipage": "(Paggiddiatan dagiti panid)",
        "lineno": "Linia $1:",
-       "compareselectedversions": "Ipada dagiti pinili a binaliwan",
-       "showhideselectedversions": "Ipakita/ilemmeng dagiti napili a nabaliwan",
+       "compareselectedversions": "Ipada dagiti pinili a rebision",
+       "showhideselectedversions": "Ipakita/ilemmeng dagiti napili a rebision",
        "editundo": "ibabawi",
-       "diff-empty": "(Awan ti paggiddiatan)",
-       "diff-multi-sameuser": "({{PLURAL:$1|Maysa nga agtengnga a panagbaliw|Dagiti $1 nga agtengnga a panagbaliw}} babaen ti isu met laeng nga agar-aramat a saan a naipakita)",
-       "diff-multi-otherusers": "({{PLURAL:$1|Maysa nga agtengnga a panagbaliw|Dagiti $1 nga agtengnga a panagbaliw}} babaen {{PLURAL:$2|ti maysa a sabali nga agar-aramat|dagiti $2 nga agar-aramat}} a saan a naipakita)",
-       "diff-multi-manyusers": "({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|Dagiti $1 nga agtengnga a panangbalbaliw}} babaen ti ad-adu ngem $2 {{PLURAL:$2|nga agar-aramat|kadagiti agar-aramat}} ti saan a naipakita)",
-       "difference-missing-revision": "{{PLURAL:$2|Maysa a panagbalbaliw|$2 kadagiti panagbalbaliw}} iti daytoy a paggiddiatan ($1) {{PLURAL:$2|ket ti|ket dagiti}} saan a naburikan.\n\nDaytoy ket kadawyan a gapuanan babaen ti sumaganad a nabaak a panilpo tipaggiddiatan ti maysa a panid a naikkaten.\nDagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
+       "diff-empty": "(Awan paggiddiatan)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Maysa nga agtengnga a rebision|Dagiti $1 nga agtengnga a rebision}} babaen ti isu met laeng nga agar-aramat a saan a naipakita)",
+       "diff-multi-otherusers": "({{PLURAL:$1|Maysa nga agtengnga a rebision|Dagiti $1 nga agtengnga a rebision}} babaen {{PLURAL:$2|ti maysa a sabali nga agar-aramat|dagiti $2 nga agar-aramat}} a saan a naipakita)",
+       "diff-multi-manyusers": "({{PLURAL:$1|Maysa nga agtengnga a rebision|Dagiti $1 nga agtengnga a rebision}} babaen ti ad-adu ngem $2 {{PLURAL:$2|nga agar-aramat|kadagiti agar-aramat}} ti saan a naipakita)",
+       "difference-missing-revision": "{{PLURAL:$2|Maysa a rebision|$2 kadagiti rebision}} iti daytoy a paggiddiatan ($1) {{PLURAL:$2|ket ti|ket dagiti}} saan a naburikan.\n\nDaytoy ket kadawyan a gapuanan babaen ti sumaganad a nabaak a silpo ti paggiddiatan ti maysa a panid a naikkaten.\nDagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
        "searchresults": "Dagiti nagbanagan ti panagbiruk",
        "searchresults-title": "Dagiti nabirukan a nagbanagan para iti \"$1\"",
        "titlematches": "Dagiti kapadpada a titulo ti panid",
        "nextn-title": "Sumaruno a $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}",
        "shown-title": "Ipakita ti $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}  ti tunggal maysa a panid",
        "viewprevnext": "Kitaen ($1 {{int:pipe-separator}} $2) ($3)",
-       "searchmenu-exists": "'''Adda panid a nanaganan ti \"[[:$1]]\" iti daytoy a wiki.'''",
+       "searchmenu-exists": "<strong>Adda panid a nanaganan ti \"[[:$1]]\" iti daytoy a wiki.</strong> {{PLURAL:$2|0=|Kitaen pay ti sabali a nabirukan a nagbanagan ti panagbiruk.}}",
        "searchmenu-new": "<strong>Partuaten ti panid ti \"[[:$1]]\" iti daytoy a wiki!</strong> {{PLURAL:$2|0=|Kitaen pay ti panid a nabirukan ti panagbirukmo.|Kitaen pay dagiti resulta a nabirukan ti panagbiruk.}}",
        "searchprofile-articles": "Dagiti naglaon a panid",
-       "searchprofile-images": "Sabsabali a midia",
+       "searchprofile-images": "Multimidia",
        "searchprofile-everything": "Amin amin",
        "searchprofile-advanced": "Napasayaat",
        "searchprofile-articles-tooltip": "Agbirukka idiay $1",
        "searchprofile-images-tooltip": "Agbirukka para iti papeles",
-       "searchprofile-everything-tooltip": "Birukem amin a linaon (uray dagiti makipatangan a panid)",
-       "searchprofile-advanced-tooltip": "Agbirukka kadagiti naiduma a \"nagan ti espasio\"",
+       "searchprofile-everything-tooltip": "Birukem amin a linaon (uray dagiti tungtungan a panid)",
+       "searchprofile-advanced-tooltip": "Agbirukka kadagiti naiduma a nagan ti espasio",
        "search-result-size": "$1 ({{PLURAL:$2|iti 1 a balikas|kadagiti $2 a balikas}})",
-       "search-result-category-size": "{{PLURAL:$1|1 a kameng| dagiti $1 a kameng}} ({{PLURAL:$2|1 a subkategoria|dagiti $2  a sukategoria}}, {{PLURAL:$3|1 a papeles|dagiti $3 a papeles}})",
+       "search-result-category-size": "{{PLURAL:$1|1 a kameng| dagiti $1 a kameng}} ({{PLURAL:$2|1 a subkategoria|dagiti $2  a subkategoria}}, {{PLURAL:$3|1 a papeles|dagiti $3 a papeles}})",
        "search-result-score": "Kaitutopan: $1%",
-       "search-redirect": "(ibaw-ing ti $1)",
+       "search-redirect": "(baw-ing ti $1)",
        "search-section": "(paset $1)",
        "search-file-match": "(maipada ti linaon a papeles)",
        "search-suggest": "Daytoy kadi: $1",
        "search-relatedarticle": "Mainaig",
        "searchrelated": "mainaig",
        "searchall": "amin",
-       "showingresults": "Maiparang dita baba agingga {{PLURAL:$1|iti '''1''' a nagbanagan|dagiti '''$1''' a nagbanagan}} a mangrugi iti #'''$2'''.",
+       "showingresults": "Maiparang dita baba agingga {{PLURAL:$1|iti <strong>1</strong> a nagbanagan|dagiti <strong>$1</strong> a nagbanagan}} a mangrugi ti #<strong>$2</strong>.",
        "showingresultsinrange": "Mangipakpakita aginggana {{PLURAL:$1|iti <strong>1</strong> a resulta|dagiti <strong>$1</strong> a resulta}} iti sakop ti #<strong>$2</strong> aginggana ti #<strong>$3</strong>.",
-       "showingresultsheader": "{{PLURAL:$5|Nagbanagan a '''$1''' iti '''$3'''|Dagiti Nagbanagan a '''$1 - $2''' iti '''$3'''}} para iti '''$4'''",
-       "search-nonefound": "Awan ti nagbanagan a kapadpada ti sinapul.",
+       "showingresultsheader": "{{PLURAL:$5|Nagbanagan a <strong>$1</strong> iti <strong>$3</strong>|Dagiti Nagbanagan a <strong>$1 - $2</strong> iti <strong>$3</strong>}} para iti <strong>$4</strong>",
+       "search-nonefound": "Awan dagiti nagbanagan a maipada ti usisa.",
        "powersearch-legend": "Napasayat a panagbiruk",
-       "powersearch-ns": "Agbirukka kadagiti nagan ti espasio:",
+       "powersearch-ns": "Agbiruk kadagiti nagan ti espasio:",
        "powersearch-togglelabel": "Markaan:",
        "powersearch-toggleall": "Amin",
        "powersearch-togglenone": "Awan",
        "powersearch-remember": "Lagipen ti napili para kadagiti masakbayan a panagbiruk",
        "search-external": "Akinruar a panagbiruk",
        "searchdisabled": "Ti panagbiruk iti {{SITENAME}} ket nabaldado.\nMabalinmo ti agbiruk idiay Google tattan.\nLaglagipem laeng a dagiti pagsurotan nagyan ti {{SITENAME}} ket baka baak.",
-       "search-error": "Adda maysa a biddut  napasamak bayat nga agbirbiruk:$1",
+       "search-error": "Adda maysa a biddut a napasamak bayat nga agbirbiruk:$1",
        "preferences": "Kakaykayatan",
        "mypreferences": "Kakaykayatan",
        "prefs-edits": "Bilang dagiti inurnos:",
        "prefs-labs": "Dagiti subokan a langa",
        "prefs-user-pages": "Dagiti panid ti agar-aramat",
        "prefs-personal": "Bariweswes ti agar-aramat",
-       "prefs-rc": "Kinaudi a binalbaliwan",
+       "prefs-rc": "Kaudian a balbaliw",
        "prefs-watchlist": "Listaan ti bambantayan",
-       "prefs-watchlist-days": "Al-aldaw nga iparang idiay listaan ti bambantayan:",
+       "prefs-watchlist-days": "Al-aldaw nga iparang iti listaan ti bambantayan:",
        "prefs-watchlist-days-max": "Kapaut nga $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}",
-       "prefs-watchlist-edits": "Kaadu a bilang ti ipakita kadagiti sinukatan iti napadakkel a bambantayan:",
+       "prefs-watchlist-edits": "Kaadu a bilang ti ipakita kadagiti sinukatan iti napadakkel a listaan ti bambantayan:",
        "prefs-watchlist-edits-max": "Kaadu a bilang: 1000",
-       "prefs-watchlist-token": "Tandaan ti bambantayan:",
+       "prefs-watchlist-token": "Tandaan ti listaan ti bambantayan:",
        "prefs-misc": "Sabsabali",
        "prefs-resetpass": "Sukatan ti kontrasenias",
        "prefs-changeemail": "Sukatan ti esurat a pagtaengan",
-       "prefs-setemail": "Ikabil ti esurat a pagtaengan",
-       "prefs-email": "Pagpilian ti esurat",
+       "prefs-setemail": "Isaad ti esurat a pagtaengan",
+       "prefs-email": "Dagiti pagpilian ti esurat",
        "prefs-rendering": "Tabas",
        "saveprefs": "Idulin",
-       "restoreprefs": "Isubli amin dagiti kasisigud a pannakaiyasentar (kadagiti amin a paset)",
+       "restoreprefs": "Isubli amin dagiti kasisigud a pannakaisaad (kadagiti amin a paset)",
        "prefs-editing": "Ur-urnosen",
        "rows": "Ar-aray:",
        "columns": "Tuk-tukol:",
        "searchresultshead": "Biruken",
        "stub-threshold": "Pagpatinggaan para iti panagporma ti <a href=\"#\" class=\"stub\">pungol a silpo</a> (dagiti byte):",
        "stub-threshold-disabled": "Nabaldado",
-       "recentchangesdays": "Al-aldaw nga ipakita dagiti kinaudi a binalbaliwan:",
+       "recentchangesdays": "Al-aldaw nga ipakita iti kaudian a balbaliw:",
        "recentchangesdays-max": "Kapaut nga $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}",
-       "recentchangescount": "Dagiti bilang dagiti naurnos a kinasigud a maiparang:",
-       "prefs-help-recentchangescount": "Nairaman dagiti kinaudian a baliwan, dagiti pakasaritaan ti panid, ken dagiti listaan.",
-       "prefs-help-watchlist-token2": "Daytoy ti sekreto a tulbek iti pakan ti web iti listaan ti banbantayam.\nTi sinoman a makaammo daytoy ket mabalinda a basaen ti listaan ti banbantayam, isunga saanmo nga ipabingay.\n[[Special:ResetTokens|Pindutem ditoy no kayatmo nga iyasentar manen]].",
+       "recentchangescount": "Bilang dagiti inurnos nga ipakita babaen ti kinasigud:",
+       "prefs-help-recentchangescount": "Daytoy ket mangiraman iti kaudian a balbaliw, dagiti pakasaritaan ti panid, ken dagiti listaan.",
+       "prefs-help-watchlist-token2": "Daytoy ti sekreto a tulbek iti pakan ti web iti listaan ti bambantayam.\nTi sinoman a makaammo daytoy ket mabalinda a basaen ti listaan ti bambantayam, isu a saanmo nga ipabingay.\nNo masapulmo, [[Special:ResetTokens|mabalinmo nga isaad manen]].",
        "savedprefs": "Naidulinen dagiti kakaykayatam.",
        "timezonelegend": "Sona ti oras:",
        "localtime": "Lokal nga oras:",
-       "timezoneuseserverdefault": "Usaren ti wiki a kasisigud ($1)",
-       "timezoneuseoffset": "Sabsabali (inaganan ti tangdan)",
+       "timezoneuseserverdefault": "Usaren ti kasisigud ti wiki ($1)",
+       "timezoneuseoffset": "Sabali (inaganan ti timbengan)",
        "servertime": "Oras ti server:",
-       "guesstimezone": "Agikabil manipud idiay pabasabasam",
+       "guesstimezone": "Punuen manipud ti pagbasabasa",
        "timezoneregion-africa": "Aprika",
        "timezoneregion-america": "Amerika",
        "timezoneregion-antarctica": "Antartika",
        "timezoneregion-europe": "Europa",
        "timezoneregion-indian": "Taaw Indiano",
        "timezoneregion-pacific": "Taaw Pasipiko",
-       "allowemail": "Pakabaelam ti esurat a naggapu kadagiti sabali nga agar-aramat",
+       "allowemail": "Pakabaelam ti esurat a naggapo kadagiti sabali nga agar-aramat",
        "prefs-searchoptions": "Biruken",
        "prefs-namespaces": "Dagiti nagan ti espasio",
        "default": "kasisigud",
        "prefs-custom-css": "Naiduma a CSS",
        "prefs-custom-js": "Naiduma a JavaScript",
        "prefs-common-css-js": "Bingay a CSS/JavaScript dagiti amin a kudil:",
-       "prefs-reset-intro": "Mabalinmo nga usaren daytoy a panid tapno maisublim dagita kakaykayatam iti kasisigud ti daytoy a wiki.\nNgem saanto a mabalinen nga ipasubli.",
+       "prefs-reset-intro": "Mabalinmo nga usaren daytoy a panid tapno maisublim dagita kakaykayatam iti kasisigud iti daytoy a wiki.\nNgem saanto a mabalinen nga ipasubli.",
        "prefs-emailconfirm-label": "Pammasingked ti esurat:",
        "youremail": "Esurat:",
        "username": "{{GENDER:$1|Nagan ti agar-aramat}}:",
        "yourrealname": "Pudno a nagan:",
        "yourlanguage": "Pagsasao:",
        "yourvariant": "Linaon ti sabali a pagsasao:",
-       "prefs-help-variant": "Ti kinaykayatmo a kita ti pagsasao wenno sabali a panagsurat a maipakita kadagiti linaon ti panid daytoy a wiki.",
+       "prefs-help-variant": "Ti kinaykayatmo a kita ti pagsasao wenno sabali a panagsurat a maipakita kadagiti linaon ti panid iti daytoy a wiki.",
        "yournick": "Baro a pirma:",
-       "prefs-help-signature": "Dagiti komentario kadagiti tungtungan a panid ket mapirmaan koma iti \"<nowiki>~~~~</nowiki>\" nga agpabalin ti pirmam ken ti petsa.",
-       "badsig": "Saan a pudno a kilaw a pirma.\nIkur-it dagiti HTML nga etiketa.",
-       "badsiglength": "Atiddog unay ti pirmam.\nMasapul a nababbaba ngem $1 {{PLURAL:$1| a karakter|kadagiti karakter}} ti kaatiddogna.",
+       "prefs-help-signature": "Dagiti komentario kadagiti tungtungan a panid ket mapirmaan koma iti \"<nowiki>~~~~</nowiki>\" a pabaliwento iti pirmam ken ti petsa.",
+       "badsig": "Imbalido a naata a pirma.\nKitaen dagiti etiketa ti HTML.",
+       "badsiglength": "Atiddog unay ti pirmam.\nMasapul a saan nga ad-adu ngem $1 {{PLURAL:$1| a karakter|a karkarakter}} ti kaatiddogna.",
        "yourgender": "Kasano kadi ti kayatmo a pannakaibaga?",
        "gender-unknown": "Kaykayatko a saan nga ibaga",
        "gender-male": "Isuna ket lalaki nga agur-urnos ti pampanid ti wiki",
        "gender-female": "Isuna ket babai nga agur-urnos ti pampanid ti wiki",
-       "prefs-help-gender": "Ti panangiyasentar daytoy a kakaykayatan ket saan a nasken.\nTi sopwer ket agus-usar ti pategna daytoy ti panagtawagna kenka ken ti panangibaga ti dadduma ti maitunos gramatika a panangibaga kenka.\nDaytoy a pakaammo ket makita ti publiko.",
+       "prefs-help-gender": "Ti panangisaad daytoy a kakaykayatan ket saan a nasken.\nTi sopwer ket agus-usar iti pategna tapno tawagannaka ken ibaganaka kadagiti sabali nga agus-usar iti maitunos gramatika ti henero.\nDaytoy a pakaammo ket makitanto iti publiko.",
        "email": "Esurat",
-       "prefs-help-realname": "Saan a nasken ti pudno a nagan.\nNgem no kayatmo nga ited, maaramat daytoy a kas pammadayaw ken pangpatalged iti obram.",
-       "prefs-help-email": "Ti esurat a pagtaengan ket saan a masapul, ngem masapul no agsukatka ti kontrasenias, no baka malipatam ti kontraseniasmo.",
-       "prefs-help-email-others": "Mabalinmo nga agpili tapno dagiti sabsabali nga agar-aramat ket ma esuratandaka idiay panagsilpo ti panidmo wenno ti panid ti tungtungam.\nTi esurat a pagtaengam ket saan a maipakita kadagiti agar-aramat nga agkontak kenka.",
-       "prefs-help-email-required": "Masapul ti e-surat a pagtaengan.",
+       "prefs-help-realname": "Saan a nasken ti pudno a nagan.\nNgem no kayatmo nga ited, maaramatto daytoy a kas pammadayaw ken pangpatalged para iti obram.",
+       "prefs-help-email": "Ti esurat a pagtaengan ket saan a masapul, ngem masapul kadagiti panangisaad manen ti kontrasenias, no malipatam ti kontraseniasmo.",
+       "prefs-help-email-others": "Mabalinmo pay ti agpili tapno dagiti sabali nga agar-aramat ket mabalin nga esuratandaka babaen ti silpo ti panidmo wenno ti panid ti tungtungam.\nTi esurat a pagtaengam ket saan a maipakita no agkontak kenka dagiti agar-aramat.",
+       "prefs-help-email-required": "Masapul ti esurat a pagtaengan.",
        "prefs-info": "Kangrunaan a pakaammo",
        "prefs-i18n": "Internasionalisasion",
        "prefs-signature": "Pirma",
-       "prefs-dateformat": "Kita ti petsa",
-       "prefs-timeoffset": "Tangda ti oras",
+       "prefs-dateformat": "Pormat ti petsa",
+       "prefs-timeoffset": "Timbengan ti oras",
        "prefs-advancedediting": "Dagiti sapasap a pagpilian",
        "prefs-editor": "Mannurat",
        "prefs-preview": "Ipadas",
        "prefs-displayrc": "Ipakita dagiti pagpilian",
        "prefs-displaywatchlist": "Ipakita dagiti pagpilian",
        "prefs-tokenwatchlist": "Tandaan",
-       "prefs-diffs": "Sabali",
+       "prefs-diffs": "Paggigiddiatan",
        "prefs-help-prefershttps": "Daytoy a kakaykayatan ket mapakabaelanto iti sumaruno nga iseserrekmo.",
        "prefs-tabs-navigation-hint": "Pakaammo: Mabalinmo nga usaren dagiti kanigid ken kanawan a tekla ti pana tapno madaliasat ti baetan dagiti etiketa iti listaan dagiti etiketa.",
        "email-address-validity-valid": "Ti esurat a pagtaengan ket kasla umiso",
        "email-address-validity-invalid": "Ikabil ti umiso nga esurat a pagtaengan",
        "userrights": "Panagtaripato kadagiti karbengan ti agar-aramat",
        "userrights-lookup-user": "Agtaripato kadagiti grupo ti agar-aramat",
-       "userrights-user-editname": "Mangiserrek iti nagan-agar-aramat:",
+       "userrights-user-editname": "Mangiserrek iti nagan ti agar-aramat:",
        "editusergroup": "Urnosen dagiti grupo ti agar-aramat",
-       "editinguser": "Suksukatan ti karbengan ti agar-aramat ni '''[[User:$1|$1]]''' $2",
+       "editinguser": "Suksukatan ti karbengan ti agar-aramat ni '''[[User:$1|$1]]''' $2",
        "userrights-editusergroup": "Urnosen dagiti grupo ti agar-aramat",
        "saveusergroups": "Idulin dagiti grupo ti agar-aramat",
        "userrights-groupsmember": "Kameng iti:",
        "userrights-groupsmember-auto": "Napudno a kameng iti:",
-       "userrights-groups-help": "Mabaliwam dagiti ayan a grupo ti agar-aramat:\n* Ti nakur-it a kahon ket kayatna a saoen nga adda ti agar-aramat dita a grupo.\n* Ti saan a nakur-it a kahon ket kayatna a saoen nga awan ti agar-aramat dita a grupo.\n* A * ti kunana ket saanmo a maikkat ti grupo no nainayonmon, wenno pagbalittaden.",
+       "userrights-groups-help": "Mabaliwam dagiti ayan a grupo ti agar-aramat:\n* Ti nakur-it a kahon ket kayatna a saoen nga adda ti agar-aramat dita a grupo.\n* Ti saan a nakur-it a kahon ket kayatna a saoen nga awan ti agar-aramat dita a grupo.\n* A * mangipakita a saanmo a maikkat ti grupo no nainayonmon, wenno pagbalittaden.",
        "userrights-reason": "Rason:",
        "userrights-no-interwiki": "Awan ti pammalubosmo nga agurnos ti karbengan ti agar-aramat kadagiti sabali a wiki.",
        "userrights-nodatabase": "Awan ti database a $1 wenno saan a lokal.",
-       "userrights-nologin": "Masapul a [[Special:UserLogin|sumrekka]] nga adda pakabilangan nga administrador ti magted kadagiti karbengan ti agar-aramat.",
+       "userrights-nologin": "Masapul a [[Special:UserLogin|sumrekka]] nga addaan iti pakabilangan ti administrador tapno makaited kadagiti karbengan ti agar-aramat.",
        "userrights-notallowed": "Awan ti pammalubos nga agnayon wenno agikkat kadagiti karbengan ti agar-aramat.",
        "userrights-changeable-col": "Dagiti grupo a mabalinmo a baliwan",
        "userrights-unchangeable-col": "Dagiti grupo a dimo mabalin a baliwan",
        "userrights-conflict": "Suppiat dagiti panagbaliw kadagiti karbengan ti agar-aramat! Pangngaasi nga irepasom ken pasingkedam dagiti sinuksukatam.",
-       "userrights-removed-self": "Nagballigika a nagikkat kadagiti karbengam. Isu a kastoyen ket saanmo a mabalin a pastrekan daytoy a panid.",
+       "userrights-removed-self": "Nagballigika a nagikkat kadagiti bukodmo a karbengan. Iti kastoyen, saankan a mabalin a mangserrek iti daytoy a panid.",
        "group": "Grupo:",
        "group-user": "Dagiti agar-aramat",
        "group-autoconfirmed": "Dagiti automatiko a napasingkedan nga agar-aramat",
        "grouppage-suppress": "{{ns:project}}:Pagpansin",
        "right-read": "Basaen dagiti panid",
        "right-edit": "Agurnos kadagiti panid",
-       "right-createpage": "Agaramid kadagiti panid (saan a pagtutungtongan a pampanid)",
-       "right-createtalk": "Agaramid ti pagtungtungan a pampanid",
-       "right-createaccount": "Agaramid kadagiti baro a pakabilangan ti agar-aramat",
-       "right-minoredit": "Markaan a bassit dagiti inurnos",
-       "right-move": "Iyalis dagiti panid",
-       "right-move-subpages": "Iyalis dagiti panid a kakuyog dagiti subpanidda.",
-       "right-move-rootuserpages": "Iyalis dagiti ramut a panid ti agar-aramat",
-       "right-move-categorypages": "Iyalis ti pampanid ti kategoria",
-       "right-movefile": "Iyalis dagiti papeles",
-       "right-suppressredirect": "Saan nga agaramid ti baw-ing a naggapo iti taudan no iyalis dagiti panid",
-       "right-upload": "Agipan ti papeles",
-       "right-reupload": "Suratam manen dagiti adda a papeles",
-       "right-reupload-own": "Pasuratam manen dagiti addaan ti pinag-ipanmo a papeles",
-       "right-reupload-shared": "Paawanen dagiti papeles idiay pagbingayan ti nakaikabilan ti midia a lokal",
-       "right-upload_by_url": "Pag-ipan ti papeles a naggapu ti URL",
-       "right-purge": "Purgaen ti pagidulinan ti pagsaadan a ti panid nga awan ti panagpasingked",
-       "right-autoconfirmed": "Saanto a mabanagan babaen dagiti patingga ti gatad a naibatay ti IP",
-       "right-bot": "Matrato a kas automatiko a pamay-an",
+       "right-createpage": "Agpartuat kadagiti panid (saan a pagtutungtongan a pampanid)",
+       "right-createtalk": "Agpartuat ti pagtungtungan a pampanid",
+       "right-createaccount": "Agpartuat kadagiti baro a pakabilangan ti agar-aramat",
+       "right-minoredit": "Markaan dagiti inurnos a kas bassit",
+       "right-move": "Agiyalis kadagiti panid",
+       "right-move-subpages": "Agiyalis kadagiti panid a kakuyog dagiti subpanidda",
+       "right-move-rootuserpages": "Agiyalis kadagiti ramut a panid ti agar-aramat",
+       "right-move-categorypages": "Agiyalis ti pampanid ti kategoria",
+       "right-movefile": "Agiyalis kadagiti papeles",
+       "right-suppressredirect": "Saan nga agpartuat kadagiti baw-ing manipud ti taudan ti pampanid no agiyalis kadagiti panid",
+       "right-upload": "Agikarga kadagiti papeles",
+       "right-reupload": "Agisurat manen kadagiti addan a papeles",
+       "right-reupload-own": "Agisurat manen kadagiti addan a papeles a bukod nga inkarga",
+       "right-reupload-shared": "Lokal a mangtuon kadagiti papeles idiay pagbingayan a repsitorio ti midia",
+       "right-upload_by_url": "Agikarga kadagiti papeles manipud ti URL",
+       "right-purge": "Agpurga ti cache ti sitio para iti panid nga awan ti pammasingked",
+       "right-autoconfirmed": "Saan a mabanagan babaen dagiti patingga ti gatad a naibatay ti IP",
+       "right-bot": "Matrato a kas maysa nga automatiko a proseso",
        "right-nominornewtalk": "Nga awanan ti bassit a panagurnos dagiti tungtungan a panid ti mangkalbit dagiti agpakabil ti baro a mensahe",
-       "right-apihighlimits": "Agusar ti nangatngato a patingga kadagiti panagsapul ti API.",
+       "right-apihighlimits": "Agusar kadagiti nangatngato a patingga kadagiti usisa ti API.",
        "right-writeapi": "Panagusar ti panagsurat nga API",
-       "right-delete": "Ikkaten dagiti panid",
-       "right-bigdelete": "Ikkaten dagiti panid nga adda dagiti dakkel a pakasaritaanna",
-       "right-deletelogentry": "Ikkaten ken isubli ti panagikkat dagiti naisangsangayan a naikabil ti listaan",
-       "right-deleterevision": "Ikkaten ken ipasubli dagiti nainagan a panagbaliw ti panid",
-       "right-deletedhistory": "Kitaen dagiti naikabil a pakasaritaan, nga awan kaniada kadagiti nairaman a testo",
-       "right-deletedtext": "Kitaen dagiti naikkat a testo ken dagiti nasukatan a nagbaetan dagiti binaliwan",
-       "right-browsearchive": "Biruken dagiti naikkat a panid",
-       "right-undelete": "Isubli ti naikkat a panid",
-       "right-suppressrevision": "Kitaen ken ipasubli dagiti binaliwan a nailemmeng manipud kadagiti administrador",
-       "right-suppressionlog": "Kitaen dagita pribado a listaan",
-       "right-block": "Serraan dagiti sabali nga agar-aramat manipud iti panag-urnos",
-       "right-blockemail": "Serraan dagiti agar-aramat nga agpatulod manipud ti esurat",
-       "right-hideuser": "Serraan ti maysa a nagan ti agar-aramat, ilemmeng manipud ti publiko",
-       "right-ipblock-exempt": "Labsan dagiti IP a serra, dagiti automatiko a serra ken dagiti nasakup a serra.",
-       "right-proxyunbannable": "Labsan dagiti automatiko a serra dagiti pannakbagi",
-       "right-unblockself": "Ikkaten ti kabukbukodan a pannaka-serra",
-       "right-protect": "Sukatan dagiti agpang ti salaknib ken urnosen dagiti nasalakniban ti sariap a panid",
-       "right-editprotected": "Urnosen dagiti panid a nasalakniban a kas \"{{int:protect-level-sysop}}\"",
-       "right-editsemiprotected": "Urnosen dagiti panid a nasalakniban a kas \"{{int:protect-level-autoconfirmed}}\"",
-       "right-editinterface": "Urnosen ti \"interface\" ti agar-aramat",
-       "right-editusercssjs": "Urnosen dagiti CSS ken JavaScript a papeles dagiti sabsabali nga agar-aramat",
-       "right-editusercss": "Urnosen dagiti CSS a papeles dagiti sabsabali nga agar-aramat",
-       "right-edituserjs": "Urnosen dagiti JavaScript a papeles dagiti sabsabali nga agar-aramat",
-       "right-editmyusercss": "Urnosem dagiti bukodmo a papeles ti CSS ti agar-aramat",
-       "right-editmyuserjs": "Urnosem dagiti bukodmo a papeles ti JavaScript ti agar-aramat",
-       "right-viewmywatchlist": "Kitaem ti bukodmo a listaan ti banbantayan",
-       "right-editmywatchlist": "Urnosem ti bukodmo a listaan ti agar-aramat. Laglagipen nga adda dagiti tignay a mangnayonto pay laeng ti pampanid urayno awan daytoy a karbengan.",
-       "right-viewmyprivateinfo": "Kitaem ti bukodmo a pribado a datos (kasla ti esurat a pagtaengan, pudno a nagan)",
-       "right-editmyprivateinfo": "Urnosem ti bukodmo a pribado a datos (kasla ti esurat a pagtaengan, pudno a nagan)",
-       "right-editmyoptions": "Urnosem dagiti bukodmo a kakaykayatan",
-       "right-rollback": "Pardasan nga ipasubli dagiti inurnos ti naudi nga agar-aramat a nagurnos ti kakasta a panid",
-       "right-markbotedits": "Markaan dagiti napasubli nga urnos a kas inurnos dagiti bot",
-       "right-noratelimit": "Saan a maaringan kadagiti patingga a pagpataray",
-       "right-import": "Agala ti pampanid manipud kadagiti sabsabali a wiki",
-       "right-importupload": "Agala kadagiti panid a naggapu iti papeles ti pinag-ipan",
-       "right-patrol": "Markaan a kas napatruliaan dagiti inurnos ti dadduma",
-       "right-autopatrol": "Dagiti inurnosmo ket mamarkaan nga automatiko a kas napatruliaan",
-       "right-patrolmarks": "Kitaen dagiti kinaudian a binaliwan a  napatruliaan a marka",
-       "right-unwatchedpages": "Kitaen ti listaan dagiti saan a nabambantayan a panid",
-       "right-mergehistory": "Pagtitiponen ti pakasaritaan dagiti panid",
-       "right-userrights": "Urnosen amin dagiti karbengan ti agar-aramat",
-       "right-userrights-interwiki": "Urnosen dagiti karbengan ti agar-aramat kadagiti agar-aramat iti sabsabali a wiki",
-       "right-siteadmin": "Ikandado ken lukatan ti database",
-       "right-override-export-depth": "Ipan dagiti panid ken iraman dagiti nasilpo a panid iti kauneg nga 5",
-       "right-sendemail": "Agpatulod ti esurat kadagiti sabali nga agar-aramat",
-       "right-passwordreset": "Kitaen dagiti esurat a panangiyasentar manen kadagiti kontrasenias",
-       "newuserlogpage": "Listaan dagiti naaramid nga agar-aramat",
-       "newuserlogpagetext": "Daytoy ket listaan ti pannakaramid dagiti agar-aramat.",
+       "right-delete": "Agikkat kadagiti panid",
+       "right-bigdelete": "Agikkat kadagiti panid nga addaan kadagiti dakkel a pakasaritaan",
+       "right-deletelogentry": "Agikkat ken agisubli iti panagikkat kadagiti naisangsangayan a naikabil ti listaan",
+       "right-deleterevision": "Agikkat ken agisubli kadagiti naisangayan a rebision ti panid",
+       "right-deletedhistory": "Agkita kadagiti naikabil a naikkat a pakasaritaan, nga awan kadagiti mainaig a testo",
+       "right-deletedtext": "Agkita kadagiti naikkat a testo ken dagiti nasukatan a nagbaetan dagiti naikkat a rebision",
+       "right-browsearchive": "Agbiruk kadagiti naikkat a panid",
+       "right-undelete": "Agisubli ti pannakaikkat ti panid",
+       "right-suppressrevision": "Agkita, agilemmeng ken agisubli ti pannakakita dagiti naisangayan a rebision dagiti panid manipud ti sinoman nga agar-aramat",
+       "right-viewsuppressed": "Agkita kadagiti rebision a nailemmeng manipud ti sinoman nga agar-aramat",
+       "right-suppressionlog": "Agkita kadagiti pribado a listaan",
+       "right-block": "Agserra kadagiti sabali nga agar-aramat manipud iti panag-urnos",
+       "right-blockemail": "Agserra iti agar-aramat manipud ti panagipatulod ti esurat",
+       "right-hideuser": "Agserra iti nagan ti agar-aramat, ken agilemmeng manipud ti publiko",
+       "right-ipblock-exempt": "Labsanna dagiti serra ti IP, dagiti automatiko a serra ken dagiti sakop a serra.",
+       "right-proxyunbannable": "Labsanna dagiti automatiko a serra dagiti pannakbagi",
+       "right-unblockself": "Bukod nga agikkat it pannaka-serra",
+       "right-protect": "Agsukat kadagiti agpang ti salaknib ken agurnos kadagiti nasalakniban ti sariap a panid",
+       "right-editprotected": "Agurnos kadagiti panid a nasalakniban a kas \"{{int:protect-level-sysop}}\"",
+       "right-editsemiprotected": "Agurnos kadagiti panid a nasalakniban a kas \"{{int:protect-level-autoconfirmed}}\"",
+       "right-editinterface": "Agurnos iti interface ti agar-aramat",
+       "right-editusercssjs": "Agurnos kadagiti papales ti CSS ken JavaScript dagiti sabali nga agar-aramat",
+       "right-editusercss": "Agurnos kadagiti papeles ti CSS dagiti sabali nga agar-aramat",
+       "right-edituserjs": "Agurnos kadagiti papales ti JavaScript dagiti sabali nga agar-aramat",
+       "right-editmyusercss": "Agurnos kadagiti bukodmo a papeles ti CSS ti agar-aramat",
+       "right-editmyuserjs": "Agurnos kadagiti bukodmo a papeles ti JavaScript ti agar-aramat",
+       "right-viewmywatchlist": "Agkita iti bukodmo a listaan ti bambantayan",
+       "right-editmywatchlist": "Agurnos iti bukodmo a listaan ti bambantayan. Laglagipen nga adda dagiti tignay a mangnayonto pay laeng ti pampanid urayno awan daytoy a karbengan.",
+       "right-viewmyprivateinfo": "Agkita iti bukodmo a pribado a datos (kasla ti esurat a pagtaengan, pudno a nagan)",
+       "right-editmyprivateinfo": "Agurnos iti bukodmo a pribado a datos (kasla ti esurat a pagtaengan, pudno a nagan)",
+       "right-editmyoptions": "Agurnos kadagiti bukodmo a kakaykayatan",
+       "right-rollback": "Napardas a mangisubli kadagiti inurnos ti naudi nga agar-aramat a nagurnos iti naisangayan a panid",
+       "right-markbotedits": "Agmarka kadagiti naipasubli nga urnos a kas inurnos dagiti bot",
+       "right-noratelimit": "Saan a maaringan babaen dagiti patingga ti gatad",
+       "right-import": "Agala ti pampanid manipud kadagiti sabali a wiki",
+       "right-importupload": "Agala kadagiti panid manipud ti naikarga a papeles",
+       "right-patrol": "Markaanna dagiti inurnos ti dadduma a kas napatruliaan",
+       "right-autopatrol": "Automatiko a mamarkaanna ti bukod nga inurnos a kas napatruliaan",
+       "right-patrolmarks": "Agkita kadagiti kaudian a binaliwan dagiti marka ti napatruliaan",
+       "right-unwatchedpages": "Agkita ti listaan dagiti saan a nabambantayan a panid",
+       "right-mergehistory": "Mangitipon ti pakasaritaan dagiti panid",
+       "right-userrights": "Agurnos kadagiti amin a karbengan ti agar-aramat",
+       "right-userrights-interwiki": "Agurnos kadagiti karbengan ti agar-aramat kadagiti agar-aramat iti sabsabali a wiki",
+       "right-siteadmin": "Mangikandado ken manglukat iti database",
+       "right-override-export-depth": "Agipan kadagiti panid a mairaman dagiti naisilpo a panid agingana iti kauneg ti 5",
+       "right-sendemail": "Agipatulod ti esurat kadagiti sabali nga agar-aramat",
+       "right-passwordreset": "Agkita kadagiti esurat ti panangisaad manen ti kontrasenias",
+       "newuserlogpage": "Listaan ti panagpartuat ti agar-aramat",
+       "newuserlogpagetext": "Daytoy ket listaan dagiti pannakapartuat iti agar-aramat.",
        "rightslog": "Listaan dagiti karbengan ti agar-aramat",
        "rightslogtext": "Daytoy ket listaan dagiti sinukatan a karbengan ti agar-aramat.",
-       "action-read": "basaen datoy a panid",
-       "action-edit": "agurnos iti datoy a panid",
+       "action-read": "agbasa iti datoy a panid",
+       "action-edit": "agurnos iti daytoy a panid",
        "action-createpage": "agpartuat kadagiti panid",
-       "action-createtalk": "agaramid kadagiti pagtungtungan a panid",
-       "action-createaccount": "agpartuat ti pakabilangan daytoy nga agar-aramat",
-       "action-history": "kitaen ti pakasaritaan daytoy a panid",
-       "action-minoredit": "markaam a bassit nga urnos daytoy",
-       "action-move": "iyalis daytoy a panid",
-       "action-move-subpages": "iyalis daytoy a panid, ken dagiti subpanidna",
-       "action-move-rootuserpages": "iyalis dagiti ramut a panid ti agar-aramat",
-       "action-move-categorypages": "iyalis ti pampanid ti kategoria",
-       "action-movefile": "iyalis daytoy a papeles",
-       "action-upload": "ikarga daytoy a papeles",
-       "action-reupload": "suratam manen dagiti adda a papeles",
-       "action-reupload-shared": "tuonan daytoy a papeles idiay pagbingayan a repositorio",
-       "action-upload_by_url": "ikarga daytoy a papeles manipud ti URL",
-       "action-writeapi": "usaren ti panagsurat ti API",
-       "action-delete": "ikkaten daytoy a panid",
-       "action-deleterevision": "ikkaten daytoy a binaliwan",
-       "action-deletedhistory": "kitaen dagiti naikkat a pakasaritaan daytoy a panid",
-       "action-browsearchive": "birukem dagiti naikkat a panid",
-       "action-undelete": "isublim ti panakaikkat daytoy a panid",
-       "action-suppressrevision": "kitaen ken ipasubli daytoy nailemmeng a panagbaliw",
-       "action-suppressionlog": "kitaen ti listaan a pribado",
-       "action-block": "serraan daytoy nga agar-aramat manipud ti panag-urnos",
-       "action-protect": "sukatan dagiti lessaad ti salaknib iti daytoy a panid",
-       "action-rollback": "pardasan nga ipasubli dagiti inurnos ti kinaudi nga agar-aramat a nagurnos ti naisangsangayan a panid",
+       "action-createtalk": "agpartuat kadagiti pagtungtungan a panid",
+       "action-createaccount": "agpartuat iti pakabilangan daytoy nga agar-aramat",
+       "action-history": "agkita iti pakasaritaan daytoy a panid",
+       "action-minoredit": "agmarka iti daytoy nga inurnos a kas bassit",
+       "action-move": "agiyalis iti daytoy a panid",
+       "action-move-subpages": "agiyalis iti daytoy a panid, ken dagiti subpanidna",
+       "action-move-rootuserpages": "agiyalis kadagiti ramut a panid ti agar-aramat",
+       "action-move-categorypages": "agiyalis iti pampanid ti kategoria",
+       "action-movefile": "agiyalis iti daytoy a papeles",
+       "action-upload": "agikarga iti daytoy a papeles",
+       "action-reupload": "agsurat manen iti daytoy nga adda a papeles",
+       "action-reupload-shared": "mangtuon iti daytoy a papeles idiay pagbingayan a repositorio",
+       "action-upload_by_url": "agikarga iti daytoy a papeles manipud ti URL",
+       "action-writeapi": "agusar iti panagsurat ti API",
+       "action-delete": "agikkat iti daytoy a panid",
+       "action-deleterevision": "agikkat iti daytoy a rebision",
+       "action-deletedhistory": "agkita kadagiti naikkat a pakasaritaan iti daytoy a panid",
+       "action-browsearchive": "agbiruk kadagiti naikkat a panid",
+       "action-undelete": "agisubli iti pannakaikkat iti daytoy a panid",
+       "action-suppressrevision": "agrepaso ken agisubli iti daytoy a nailemmeng a rebision",
+       "action-suppressionlog": "agkita iti daytoy a pribalo a listaan",
+       "action-block": "agserra iti daytoy nga agar-aramat manipud ti panag-urnos",
+       "action-protect": "mangsukat kadagiti lessaad ti salaknib para iti daytoy a panid",
+       "action-rollback": "napardas a mangisubli kadagiti inurnos ti kinaudi nga agar-aramat a nagurnos iti naisangsangayan a panid",
        "action-import": "agala ti pampanid manipud ti sabali a wiki",
-       "action-importupload": "agala ti pampanid manipud ti naipan a papeles",
-       "action-patrol": "markaan a kas napatruliaan dagiti inurnos ti dadduma",
-       "action-autopatrol": "markaam dagiti napatruliam nga inurnos",
-       "action-unwatchedpages": "kitaen ti listaan dagiti saan a nabambantayan a panid",
-       "action-mergehistory": "pagtitiponen ti pakasaritaan daytoy a panid",
-       "action-userrights": "urnosen amin dagiti karbengan ti agar-aramat",
-       "action-userrights-interwiki": "urnosen dagiti karbengan ti agar-aramat iti agar-aramat kadagiti sabsabali a wiki",
-       "action-siteadmin": "kandaduan wenno lukatan daytoy \"database\"",
+       "action-importupload": "agala ti pampanid manipud ti naikarga a papeles",
+       "action-patrol": "agmarka kadagiti inurnos ti dadduma a kas napatruliaan",
+       "action-autopatrol": "agmarka iti bukodmo nga inurnos a kas napatrulian",
+       "action-unwatchedpages": "agkita ti listaan dagiti saan a nabambantayan a panid",
+       "action-mergehistory": "mangitipon ti pakasaritaan iti daytoy a panid",
+       "action-userrights": "agurnos kadagiti amin a karbengan ti agar-aramat",
+       "action-userrights-interwiki": "agurnos kadagiti karbengan ti agar-aramat dagiti agar-aramat kadagiti sabali a wiki",
+       "action-siteadmin": "mangkandado wenno manglukat ti database",
        "action-sendemail": "agipatulod kadagiti esurat",
-       "action-editmywatchlist": "urnosem ti bukodmo a listaan ti banbantayan",
-       "action-viewmywatchlist": "kitaem ti bukodmo a listaan ti banbantayan",
-       "action-viewmyprivateinfo": "kitaem ti bukodmo a pribado a pakaammo",
-       "action-editmyprivateinfo": "urnosem ti bukodmo a pribado a pakaammo",
+       "action-editmywatchlist": "agurnos iti bukodmo a listaan ti bambantayan",
+       "action-viewmywatchlist": "agkita iti bukodmo a listaan ti bambantayan",
+       "action-viewmyprivateinfo": "agkita iti bukodmo a pribado a pakaammo",
+       "action-editmyprivateinfo": "agurnos iti bukodmo a pribado a pakaammo",
        "nchanges": "$1 {{PLURAL:$1|sinukatan|dagiti sinukatan}}",
-       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|manipud idi naudi a panagsarungkar}}",
+       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|manipud ti naudi a panagsarungkar}}",
        "enhancedrc-history": "pakasaritaan",
        "recentchanges": "Kaudian a balbaliw",
-       "recentchanges-legend": "Pagpilian kadagiti kaudian a balbaliw",
-       "recentchanges-summary": "Siputen dagiti kinaudi a panagbalbaliw ti wiki iti daytoy a panid.",
+       "recentchanges-legend": "Pagpilian iti kaudian a balbaliw",
+       "recentchanges-summary": "Siputen ti kaudian a balbaliw iti wiki iti daytoy a panid.",
        "recentchanges-noresult": "Awan ti nasuksukatan iti las-ud ti naited a paset ti panawen a kapada dagitoy a kriteria.",
-       "recentchanges-feed-description": "Siputen dagiti kinaudi a panagbalbaliw ti wiki iti daytoy a pakan.",
-       "recentchanges-label-newpage": "Daytoy a panag-urnos ket nakapartuat ti baro a panid",
+       "recentchanges-feed-description": "Siputen ti kaudian a balbaliw iti wiki iti daytoy a pakan.",
+       "recentchanges-label-newpage": "Daytoy a panag-urnos ket nakapartuat iti baro a panid",
        "recentchanges-label-minor": "Daytoy ket bassit a panag-urnos",
-       "recentchanges-label-bot": "Daytoy a panag-urnos ket inaramid babaen ti maysa a bot",
+       "recentchanges-label-bot": "Daytoy a panag-urnos ket inaramid babaen ti bot",
        "recentchanges-label-unpatrolled": "Daytoy a panag-urnos ket saan pay a napatruliaan",
        "recentchanges-label-plusminus": "Ti panagbaliw ti kadakkel ti panid babaen ti bilang dagiti byte",
        "recentchanges-legend-heading": "'''Leyenda:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (kitaen pay ti [[Special:NewPages|listaan ti baro a pampanid]])",
        "rcnotefrom": "Dita baba ket dagiti sinukatan manipud idi strong>$2</strong> (agingga iti <strong>$1</strong> a naipakita).",
-       "rclistfrom": "Ipakita dagiti kabarbaro a sinukatan a mangrugi manipud idi $3 $2",
+       "rclistfrom": "Ipakita dagiti kabarbaro a sinukatan a mangrugi manipud idi $2, $3",
        "rcshowhideminor": "$1 dagiti bassit a panag-urnos",
        "rcshowhideminor-show": "Ipakita",
        "rcshowhideminor-hide": "Ilemmeng",
        "rcshowhideliu": "$1 dagiti nakarehistro nga agar-aramat",
        "rcshowhideliu-show": "Ipakita",
        "rcshowhideliu-hide": "Ilemmeng",
-       "rcshowhideanons": "$1 dagiti di am-ammo nga agar-aramat",
+       "rcshowhideanons": "$1 dagiti di ammo nga agar-aramat",
        "rcshowhideanons-show": "Ipakita",
        "rcshowhideanons-hide": "Ilemmeng",
        "rcshowhidepatr": "$1 dagiti napatrulian a panag-urnos",
        "rcshowhidemine-show": "Ipakita",
        "rcshowhidemine-hide": "Ilemmeng",
        "rclinks": "Ipakita dagiti naudi a $1 a sinukatan iti kallabes a $2 nga al-aldaw<br />$3",
-       "diff": "sabali",
-       "hist": "saritaan",
+       "diff": "dip",
+       "hist": "hist",
        "hide": "Ilemmeng",
        "show": "Ipakita",
        "minoreditletter": "m",
        "newpageletter": "B",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 nga agbuybuya {{PLURAL:$1|nga agar-aramat|kadagiti agar-aramat}}]",
-       "rc_categories": "Patingga dagiti kategoria (pagsisinaen ti \"|\")",
+       "rc_categories": "Patingga dagiti kategoria (pagsinaen iti \"|\")",
        "rc_categories_any": "Uray ania",
        "rc-change-size-new": "$1 {{PLURAL:$1|a byte|kadagiti byte}} kalpasan ti panag-sukat",
        "newsectionsummary": "/* $1 */ baro a paset",
        "recentchangeslinked-feed": "Mainaig a sinukatan",
        "recentchangeslinked-toolbox": "Mainaig a sinuksukatan",
        "recentchangeslinked-title": "Sinukatan a mainaig iti \"$1\"",
-       "recentchangeslinked-summary": "Listaan daytoy dagiti kaudian a sinukatan kadagiti pampanid a nakasilpo manipud iti maysa a napili a panid (wenno kadagiti kameng ti maysa a nainaganan a kategoria).\nDagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket '''napuskol'''.",
+       "recentchangeslinked-summary": "Daytoy ket listaan dagiti kaudian a sinukatan kadagiti pampanid a nakasilpo manipud iti naisangayan a panid (wenno kadagiti kameng ti maysa a nainaganan a kategoria).\nDagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket dagiti <strong>napuskol</strong>.",
        "recentchangeslinked-page": "Nagan ti panid:",
-       "recentchangeslinked-to": "Ipakita dagiti sinukatan a panid nga embes a naisilpo iti naited a panid",
-       "upload": "Mangipan iti papeles",
-       "uploadbtn": "Mangipan iti papeles",
-       "reuploaddesc": "Ukasen ti pag-ipan ken agsubli idiay kabuklan ti pag-ipan",
-       "upload-tryagain": "Ited ti napabaro a panagipalawag ti papeles",
+       "recentchangeslinked-to": "Ipakita dagiti sinukatan kadagiti panid nga imbes a naisilpo iti naited a panid",
+       "upload": "Agikarga iti papeles",
+       "uploadbtn": "Agikarga iti papeles",
+       "reuploaddesc": "Ukasen ti panagikarga ken agsubli idiay porma ti panagikarga",
+       "upload-tryagain": "Mangited ti napabaro a deskripsion ti papeles",
        "uploadnologin": "Saan a nakastrek",
-       "uploadnologintext": "Nasken ti $1 tapno makaipanka iti papeles.",
-       "upload_directory_missing": "Ti direktorio ti pag-ipan ($1) ket napukaw ken saan a mabalin nga aramiden iti webserver.",
-       "upload_directory_read_only": "Ti pagipanan a direktoria ($1) ket saan a masuratan ti webserver.",
-       "uploaderror": "Biddut ti panang-ipan",
-       "upload-recreate-warning": "'''Ballag: Ti papeles babaen ti dayta a nagan ket naikkat wenno naiyalis.'''\n\nTi listaan ti panagikkat ken panagiyalis para iti daytoy a panid ket adda ditoy tapno makitam:",
-       "uploadtext": "Usaren ti kabuklan dita baba ti pinag-ipan ti papeles.\nTi panagkita wenno panagbiruk ti napalubos a pinag-ipan ti papeles mapan ka idiay [[Special:FileList|listaan dagiti napag-ipan a papeles]], dagiti pinag-ipan wenno pinag-ipan manen ket nakalista pay idiay [[Special:Log/upload|listaan ti pinag-ipan]], dagiti panagikkat ket idiay [[Special:Log/delete|listaan ti panagikkat]].\n\nTi panagikabil ti papeles iti panid, usaren ti panilpo a kas dagiti sumaganad a kabuklan:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' ti panag-usar ti dakkel a bersion ti papeles\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' ti agusar ti 200 pixel a kaakaba  a panagparang iti kahon idiay kannigid nga adda 'sabali a testo' ti panagipalpalawag\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' ti dagus a panagsilpo idiay papeles nga awan ti panagparang ti papeles",
+       "uploadnologintext": "Pangngaasi a $1 tapno makaikarga kadagiti papeles.",
+       "upload_directory_missing": "Ti pagikargaan a direktorio ($1) ket awan ken saan a mabalin a mapartuat babaen ti webserver.",
+       "upload_directory_read_only": "Ti pagikargaan a direktorio ($1) ket saan a masuratan babaen ti webserver.",
+       "uploaderror": "Biddut ti panagikarga",
+       "upload-recreate-warning": "<strong>Ballag: Ti papeles babaen ti dayta a nagan ket naikkat wenno naiyalis.</strong>\n\nTi listaan ti panagikkat ken panagiyalis para iti daytoy a panid ket naited ditoy para iti pakainugotan:",
+       "uploadtext": "Usaren ti porman dita baba tapno makaikarga iti papeles.\nTi panagkita wenno panagbiruk ti dati a naikarga a papeles mapan idiay [[Special:FileList|listaan dagiti naikarga a papeles]], dagiti naikarga wenno naikarga manen ket nakalista pay idiay [[Special:Log/upload|listaan ti panagikarga]], dagiti panagikkat ket idiay [[Special:Log/delete|listaan ti panagikkat]].\n\nTi panangiraman ti papeles iti panid, usaren ti silpo a kas dagiti sumaganad a porma:\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> tapno mausar ti napno a bersion ti papeles \n* <strong><code><nowiki>[[</nowiki>{{ns:file<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> tapnomausar ti 200 a piksel a kalawa a panagiparang iti kanigid a margin ng aaddaan iti \"alt text\"a kas deskripsion\n* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> para iti dagus a panangisilpo itipapeles nga awan ti panangipakita ti papeles",
        "upload-permitted": "Dagiti mapalubosan a kita ti papeles: $1.",
-       "upload-preferred": "Dagiti mabalbalin a kita ti papeles: $1.",
+       "upload-preferred": "Dagiti kaykayat a kita ti papeles: $1.",
        "upload-prohibited": "Dagiti maiparit a kita ti papeles: $1.",
-       "uploadlogpage": "Listaan ti pagipanan",
-       "uploadlogpagetext": "Adda dita baba ti listaan dagiti kaudian a naipan a papeles.\nKitaen dagiti [[Special:NewFiles|galleria ti baro a papeles]] para iti adu pay a pakabuklan apanagkita.",
+       "uploadlogpage": "Listaan ti panagikarga",
+       "uploadlogpagetext": "Dita baba ket ti listaan dagiti kaudian a panangikarga iti papeles.\nKitaen ti [[Special:NewFiles|galeria dagiti baro a papeles]] para iti adu pay a bisual a pakabuklan.",
        "filename": "Nagan ti papeles",
        "filedesc": "Pakabuklan",
        "fileuploadsummary": "Pakabuklan:",
-       "filereuploadsummary": "Dagiti panagsukat ti papeles:",
-       "filestatus": "Kasasaad ti karbengan ti panagipablaak:",
+       "filereuploadsummary": "Dagiti pannakasukat ti papeles:",
+       "filestatus": "Kasasaad ti karbengan ti kopia:",
        "filesource": "Taudan:",
        "ignorewarning": "Di ikaskaso ti ballaag ket idulin latta ti papeles",
-       "ignorewarnings": "Di ikaskaso dagiti ania man a ballaag",
-       "minlength1": "Dagiti nagan ti papeles ket nasken uray a maysa laeng a letra wenno nasursurok.",
-       "illegalfilename": "Ti nagan ti papeles \"$1\" ket adda nagyan na a kababalin a saan a mabalin kadagiti titulo ti panid.\nPangngaasi ta naganan manen ti papeles ken padasen manen nga ipapan.",
-       "filename-toolong": "Dagiti nagan ti papeles ket saan a mabalin nga at-atiddog ngem dagiti 240 a byte.",
-       "badfilename": "Nasukatan ti nagan ti papeles iti \"$1\".",
-       "filetype-mime-mismatch": "Ti pagpa-atiddog ti papeles \".$1\" ket saan a kapada ti nakitaan a kita ti MIME iti papeles ($2).",
-       "filetype-badmime": "Dagiti papeles a kas MIME a kita \"$1\" ket saan a mapalubosan a maipan.",
-       "filetype-bad-ie-mime": "Saan a makapag-ipan ti papeles ngamin ket masarakan ti Internet Explorer a kas \"$1\", a saan a mabalin ken makapataud a dakes a kita ti papeles.",
-       "filetype-unwanted-type": "'''\".$1\"''' ti saan a mapalubusan a kita ti papeles.\nTi mapalubusan  {{PLURAL:$3|a kita ti papeles ket|kadagiti kita ti papeles ket}} $2.",
-       "filetype-banned-type": "Ti '''\".$1\"''' {{PLURAL:$4|ket saan a mapalubusan a kita ti papeles|ket dagiti saan a mapalubusan a kita ti papeles}}.\nTi mapalubusan {{PLURAL:$3|a kita ti papeles ket|kadagiti kita ti papeles ket}} $2.",
-       "filetype-missing": "Daytoy a papeles ket awan ti kita na a (kasla \".jpg\").",
-       "empty-file": "Ti papeles nga intedmo ket awan ti nagyanna.",
+       "ignorewarnings": "Di ikaskaso dagiti aniaman a ballaag",
+       "minlength1": "Dagiti nagan ti papeles ket nasken a saan a basbassit ngem maysa a letra.",
+       "illegalfilename": "Ti nagan ti papeles ti \"$1\" ket aglaon kadagiti karakter a saan a maipalubos kadagiti titulo ti panid.\nPangngaasi a naganan manen ti papeles ken padasen manen nga ikarga.",
+       "filename-toolong": "Dagiti nagan ti papeles ket nasken a saan nga at-atiddog ngem dagiti 240 a byte.",
+       "badfilename": "Nasukatanen ti nagan ti papeles iti \"$1\".",
+       "filetype-mime-mismatch": "Ti pagpa-atiddog ti papeles ti \".$1\" ket saan a maipada iti naduktalan a kita ti MIME iti papeles ($2).",
+       "filetype-badmime": "Dagiti papeles a kita ti MIME ti \"$1\" ket saan a maipalubos a maikarga.",
+       "filetype-bad-ie-mime": "Saan a maikarga daytoy a papeles gapu ta maduktalan ti Internet Explorer a kas \"$1\", a saan a maipalubos ken makapataud ti dakes a kita ti papeles.",
+       "filetype-unwanted-type": "Ti <strong>\".$1\"</strong> ket mays a di kayat a kita ti papeles.\nTi kaykayat {{PLURAL:$3|a kita ti papeles ket|a kita dagiti papeles ket}} $2.",
+       "filetype-banned-type": "Ti <strong>\".$1\"</strong> {{PLURAL:$4|ket saan a maipalubos a kita ti papeles|ket dagiti saan a maipalubos a kita ti papeles}}.\nTi mapalubosan {{PLURAL:$3|a kita ti papeles ket|a kita dagiti papeles ket}} $2.",
+       "filetype-missing": "Daytoy a papeles ket awan ti pagpaatiddogna (kasla ti \".jpg\").",
+       "empty-file": "Ti papeles nga intedmo ket awan linaonna.",
        "file-too-large": "Ti papeles nga intedmo ket dakkel unay.",
        "filename-tooshort": "Ti nagan daytoy a papeles ket bassit unay.",
-       "filetype-banned": "Ti kita daytoy a papeles ket maiparit.",
-       "verification-error": "Daytoy a papeles ket saan a nakapasa ti pagsingkedan.",
-       "hookaborted": "Ti panagbabaro a pinadasmo ket napasardeng babaen ti pangpa-atiddog a kawit.",
-       "illegal-filename": "Ti nagan daytoy a papeles ket saan a maipalubos.",
-       "overwrite": "Saan a mabalin a suratan manen iti papeles nga adda ditan.",
-       "unknown-error": "Adda di amammo a biddut.",
-       "tmp-create-error": "Saan a makaaramid ti saan nga agnayon a papeles.",
-       "tmp-write-error": "Biddut ti pannakaisurat dagiti saan nga agnanayon a papeles.",
-       "large-file": "Ti maipatalked a papeles ket saan koma a dakdakkel ngem $1;\ndaytoy a papeles ket $2.",
-       "largefileserver": "Daytoy a papeles ket dakdakel ngem ti naaramid a mabalin para iti server.",
-       "emptyfile": "Ti papeles nga ipanmo ket kasla awan ti nagyan na.\nBaka daytoy ket gapu ti kamali ti inkabil a nagan ti papeles.\nPangngaasi ta kitaem no kayatmo latta nga ipapan daytoy a papeles.",
-       "windows-nonascii-filename": "Daytoy a wiki ket saanna a suportaran dagiti nagan ti papeles nga addaan kadagiti espesial a karakter.",
-       "fileexists": "Ti papeles nga agnagan ti kastoy ket addan, pangngaasi a kitaem ti <strong>[[:$1]]</strong> no {{GENDER:|saanka}} a sigurado no kayatmo a sukatan.\n[[$1|thumb]]",
-       "filepageexists": "Ti panangipalpalawag a panid para iti daytoy a papeles ket naaramiden idiay <strong>[[:$1]]</strong>, ngem awan ti agdama nga agnagan ti kastoy a papeles.\nTi pakabuklan nga inkabilmo ket saan nga agparang idiay deskripsion ti panid.\nTapno agparang ti pakabuklan idiay, masapul a manual a baliwam.\n[[$1|thumb]]",
-       "fileexists-extension": "Adda papeles nga agnagan ti kastoy: [[$2|thumb]]\n* Nagan ti naipapan a papeles: <strong>[[:$1]]</strong>\n* Nagan ti adda a papeles: <strong>[[:$2]]</strong>\nKayatmo kadi ti agusar ti naisangsangayan a nagan?",
-       "fileexists-thumbnail-yes": "Daytoy a papeles ket kasla ladawan a napabassit ''(thumbnail)''.\n[[$1|thumb]]\nPangngaasi a kitaem ti papeles a <strong>[[:$1]]</strong>.\nNo ti nakitam a papeles ket isu ti ladawan iti dati a kadakkel saanen a nasken ti agipan ti maysa a napabassit a ladawan.",
-       "file-thumbnail-no": "Ti nagan ti papeles ket mangrugi iti <strong>$1</strong>.\nKasla ladawan a napabassit ''(thumbnail)''.\nNo addaanka ti napno a resolusion ipanmo daytoy, no saan pangngaasi a sukatam ti nagan ti papeles.",
-       "fileexists-forbidden": "Daytoy a nagan ti papeles ket adda dita, ken saan a mabalin a masuratan manen.\nNo kayatmo pay latta nga ipan ti papeles, pangngaasi nga agsublika ken usarem ti baro a nagan.\n[[File:$1|thumb|center|$1]]",
-       "fileexists-shared-forbidden": "Daytoy a nagan ti papeles ket adda dita pagbingayan a nagikabilan ti papeles.\nNo kayatmo pay latta nga ipan ti papeles, pangngaasi nga agsublika ken usarem ti baro a nagan.\n[[File:$1|thumb|center|$1]]",
+       "filetype-banned": "Daytoy a kita ti papeles ket maiparit.",
+       "verification-error": "Daytoy a papeles ket saan a nakapasa iti pammasingked iti papeles.",
+       "hookaborted": "Ti panagbabaro a pinadasmo ket napasardeng babaen ti pangpaatiddog.",
+       "illegal-filename": "Ti nagan ti papeles ket saan a maipalubos.",
+       "overwrite": "Saan a maipalubos ti mangsurat manen iti addan a papeles.",
+       "unknown-error": "Napasamak ti maysa a di ammo a biddut.",
+       "tmp-create-error": "Saan a makapartuat ti temporario a papeles.",
+       "tmp-write-error": "Biddut ti panagsurat iti temporario a papeles.",
+       "large-file": "Maisingasing a dagiti papeles ket saan a dakdakkel ngem $1;\ndaytoy a papeles ket $2.",
+       "largefileserver": "Daytoy a papeles ket dakdakel ngem ti ipalubos a pannakaaramid ti server.",
+       "emptyfile": "Ti papeles nga inkargam ket kasla awan linaon.\nBaka daytoy ket gapu ti kamali iti nagan ti papeles.\nPangngaasi ta kitaem no kayatmo latta nga ikarga daytoy a papeles.",
+       "windows-nonascii-filename": "Daytoy a wiki ket saan a mangsuporta kadagiti nagan ti papeles nga addaan kadagiti espesial a karakter.",
+       "fileexists": "Ti papeles nga agnagan ti kastoy ket addan, pangngaasi a kitaem ti <strong>[[:$1]]</strong> no {{GENDER:|saanka}} a sigurado a kayatmo a sukatan daytoy.\n[[$1|thumb]]",
+       "filepageexists": "Ti deskripsion a panid para iti daytoy a papeles ket napartuaten idiay <strong>[[:$1]]</strong>, ngem awan ti agdama nga agnagan ti kastoy a papeles.\nTi pakabuklan nga inkabilmo ket saan nga agparang iti deskripsion ti panid.\nTapno agparang ti pakabuklan idiay, masapul a manual nga urnosem.\n[[$1|thumb]]",
+       "fileexists-extension": "Adda papeles nga agnaganen iti kastoy: [[$2|thumb]]\n* Nagan ti naikarga a papeles: <strong>[[:$1]]</strong>\n* Nagan ti adda a papeles: <strong>[[:$2]]</strong>\nKayatmo kadi ti agusar ti naisangsangayan a nagan?",
+       "fileexists-thumbnail-yes": "Daytoy a papeles ket kasla ladawan a napabassit a kadakkel <em>(thumbnail)</em>..\n[[$1|thumb]]\nPangngaasi a kitaem ti papeles ti <strong>[[:$1]]</strong>.\nNo ti nakitam a papeles ket isu ti ladawan iti dati a kadakkel saanen a nasken ti agikarga ti maysa a napabassit unay a ladawan.",
+       "file-thumbnail-no": "Ti nagan ti papeles ket mangrugi iti <strong>$1</strong>.\nKasla ti ladawan a napabassit ti kadakkel <em>(thumbnail)</em>.\nNo addaanka iti daytoy a ladawan iti napno a resolusion ikargam dayta, no saan pangngaasi a sukatam ti nagan ti papeles.",
+       "fileexists-forbidden": "Daytoy a nagan ti papeles ket addan, ken saan a mabalin a masuratan manen.\nNo kayatmo pay latta nga ikarga ti papelesmo, pangngaasi nga agsublika ken agusar iti baro a nagan.\n[[File:$1|thumb|center|$1]]",
+       "fileexists-shared-forbidden": "Ti papeles iti daytoy a nagan ket addan iti pagbingayan a repositorio ti papeles.\nNo kayatmo pay latta nga ikarga ti papeles, pangngaasi nga agsublika ken agusar iti baro a nagan.\n[[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "Daytoy a papeles ket duplikado kadagiti sumaganad a {{PLURAL:$1|papeles|pappapeles}}:",
-       "file-deleted-duplicate": "Ti papeles a kapadpada ti papeles a ([[:$1]]) ket naikkat idin.\nKitaem koma ti pakasaritaan a panakaikkat ti papeles sakbay a mangirugika ti pinag-ipan.",
-       "file-deleted-duplicate-notitle": "Ti papales a kapada ti daytoy a papeles ket dati a naikkat, ken nalapdan ti titulo.\nNasken nga agdamagka ti addaan ti abilidad a mangkita ti nalapdan a datos ti papeles tapno marepaso ti kasasaad sakbay a mapan nga ikarga manen daytoy.",
-       "uploadwarning": "Ballaag iti pinag-ipan",
-       "uploadwarning-text": "Pangngaasi a baliwam ti deskripsion ti papeles ken padasem manen.",
+       "file-deleted-duplicate": "Ti papeles a kapadpada ti papeles a ([[:$1]]) ket dati a naikkat.\nKitaem koma ti pakasaritaan a pannakaikkat ti papeles sakbay a mangirugika a mangikarga manen.",
+       "file-deleted-duplicate-notitle": "Ti papales a kapada iti daytoy a papeles ket dati a naikkat, ken nalapdan ti titulo.\nNasken nga agdamagka iti sabali nga addaan iti abilidad a mangrepaso ti nalapdan a datos ti papeles tapno marepaso ti kasasaad sakbay a mapan nga agikarga manen iti daytoy.",
+       "uploadwarning": "Ballaag ti panagikarga",
+       "uploadwarning-text": "Pangngaasi a baliwam ti deskripsion ti papeles dita baba ken padasen manen.",
        "savefile": "Idulin ti papeles",
-       "uploadedimage": "naipanen ti \"[[$1]]\"",
-       "overwroteimage": "naipan ti baro a bersion ti \"[[$1]]\"",
-       "uploaddisabled": "Naiddep ti pinag-ipan.",
-       "copyuploaddisabled": "Naiddep ti pinag-ipan iti URL.",
-       "uploaddisabledtext": "Napawilan ti pinag-ipan iti papeles.",
-       "php-uploaddisabledtext": "Ti pinag-ipan ti papeles ket naiddep idiay PHP.\nPanngaasi a kitaem ti pannakaikabil ti pinag-ipan ti papeles.",
-       "uploadscripted": "Daytoy a papeles ket adda nagyanna a HTML wenno panagsurat a kodigo a mabalin nga agpakamali ti panagbasa ti sapot a pagbasabasa.",
+       "uploadedimage": "naikarga ti \"[[$1]]\"",
+       "overwroteimage": "nagikarga ti baro a bersion ti \"[[$1]]\"",
+       "uploaddisabled": "Nabaldado dagiti panagikarga.",
+       "copyuploaddisabled": "Nabaldado ti panagikarga babaen ti URL.",
+       "uploaddisabledtext": "Nabaldado dagiti panagikarga ti papeles.",
+       "php-uploaddisabledtext": "Dagiti panangikarga ti papeles ket nabaldado iti PHP.\nPanngaasi a kitaem ti pannakaisaad ti panagikarga ti papeles.",
+       "uploadscripted": "Daytoy a papeles ket naglaon ti HTML wenno eskritu ti kodigo a mabalin a kamali nga inpatarus babaen ti pagbasabasa ti web.",
        "uploadscriptednamespace": "Daytoy a papeles ti SVG ket aglaon ti maysa a saan a mabalin a nagan ti espasio ti \"$1\"",
        "uploadinvalidxml": "Ti XML iti naikarga a papeles ket saan a maiwaswas.",
-       "uploadvirus": "Addaan ti birus daytoy a papeles! Salaysay: $1",
-       "uploadjava": "Daytoy a papeles ket ZIP a papeles nga adda nagyanna a Java .a kita ti papeles.\nSaan a mabalin ti pinag-ipan ti Java a papeles, ngamin ket palabsanda dagiti seguridad a pangrestrikto.",
+       "uploadvirus": "Ti papeles ket aglaon ti birus! \nDagiti salaysay: $1",
+       "uploadjava": "Daytoy a papeles ket papeles ti ZIP nga aglaon ti Java .a klase ti papeles.\nTi panangikarga ti papales ti Java ket saan a maipalubos gapu ta makapataudda a manglabas kadagiti panangigawid ti seguridad.",
        "upload-source": "Taudan ti papeles",
        "sourcefilename": "Taudan a nagan ti papeles:",
        "sourceurl": "Taudan ti URL:",
        "destfilename": "Pangipanan ti nagan ti papeles:",
-       "upload-maxfilesize": "Kadakkel a rukod ti papeles: $1",
-       "upload-description": "Panagipalpalawag ti papeles",
-       "upload-options": "Pagpilian ti pinag-ipan",
+       "upload-maxfilesize": "Kadakkelan a rukod ti papeles: $1",
+       "upload-description": "Deskripsion ti papeles",
+       "upload-options": "Dagiti pagpilian ti panagikarga",
        "watchthisupload": "Bantayan daytoy a papeles",
-       "filewasdeleted": "Ti papeles a nanaganan ti kastoy ket naipapan idin ken napaikkaten.\nKitaem ti $1 sakbay ka nga agi pag-ipan manen.",
-       "filename-bad-prefix": "Ti nagan ti papeles nga inpanmo ket mangrugi ti '''\"$1\"''', ket saan a maipalpalawag a nagan a kayarigan a naipusgan nga automatiko kadagiti digital a pangretrato.\nPangngaasi ti agpili ti maikapalpalawag a nagan ti papelesmo.",
-       "upload-success-subj": "Balligi ti pinag-ipan",
-       "upload-success-msg": "Ti panag-ipan a naggapu idiay [$2] ket naballigi. Ket adda ditoy: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Parikut ti pinag-ipan",
-       "upload-failure-msg": "Addaan ti parikut ti pinag-ipanmo a naggapu idiay [$2]:\n\n$1",
-       "upload-warning-subj": "Ballaag iti pinag-ipan",
-       "upload-warning-msg": "Addaan a parikut ti panag-ipan a naggapu idiay [$2]. Mabalinmo ti agsubli ti [[Special:Upload/stash/$1|nakabuklan ti pag-ipan]] tapno masimpaan ti parikut.",
+       "filewasdeleted": "Ti papeles iti daytoy a nagan ket dati a naikarga ken kanungpalan a naikkat.\nNasken a kitaem ti $1 sakbay nga agtuloy a mangikarga manen.",
+       "filename-bad-prefix": "Ti nagan ti papeles nga ikarkargam ket mangrugi iti <strong>\"$1\"</strong>,  ken saan a deskriptibo a nagan a kadawyan nga automatiko nga ited babaen dagiti digital a kamera.\nPangngaasi nga agpili ti nasaysayaat a deskriptibo a nagan ti papelesmo.",
+       "upload-success-subj": "Balligi ti panagikarga",
+       "upload-success-msg": "Ti panagikargam manipud ti [$2] ket nagballigi. Daytoy ket magun-od ditoy [[:{{ns:file}}:$1]]",
+       "upload-failure-subj": "Parikut ti panagikarga",
+       "upload-failure-msg": "Adda parikut ti panagikargam manipud ti [$2]:\n\n$1",
+       "upload-warning-subj": "Ballaag ti panagikarga",
+       "upload-warning-msg": "Adda parikut iti panagikargam manipud ti [$2]. Mabalinmo ti agsubli iti [[Special:Upload/stash/$1|porma ti panagikarga]] tapno masimpa daytoy a parikut.",
        "upload-proto-error": "Saan a husto a protokol",
-       "upload-proto-error-text": "Dagiti adayo a pinag-ipan ket makasapul kadagiti URL a mangrugi iti <code>http://</code> wenno <code>ftp://</code>.",
+       "upload-proto-error-text": "Ti adayo a panagikarga ket makasapul kadagiti URL a mangrugi iti <code>http://</code> wenno <code>ftp://</code>.",
        "upload-file-error": "Akin-uneg a biddut",
-       "upload-file-error-text": "Adda biddut a naggapu iti uneg idi padasen ti agaramid ti saan nga agnayon a papeles dita server.\nPangngaasi a kontaken ti [[Special:ListUsers/sysop|administrador]]",
-       "upload-misc-error": "Di ammo a biddut ti panag-ipan",
-       "upload-misc-error-text": "Adda saan nga ammo a biddut ti napasamak idi agdama a nag-ipan.\nPangngaasi a  kitaen ti URL ket umisu  ken maserrekan ken padasem manen.\nNo ti parikut ket agsubli latta, kontaken ti [[Special:ListUsers/sysop|administrador]].",
-       "upload-too-many-redirects": "Adu unay ti baw-ing daytoy nga URL",
-       "upload-http-error": "Naka-adda ti biddut ti HTTP: $1",
-       "upload-copy-upload-invalid-domain": "Ti kopia a panagipan ket saan a magun-od manipud iti daytoy a pagturayan.",
-       "backend-fail-stream": "Saan a maiwaig ti papeles $1.",
-       "backend-fail-backup": "Saan a maidulin ti papeles $1.",
-       "backend-fail-notexists": "Ti papeles a $1 ket awanen.",
-       "backend-fail-hashes": "Saan a maala dagiti papeles a hash tapno maipada.",
-       "backend-fail-notsame": "Addaan ti saan a kapada ti papeles idiay $1.",
-       "backend-fail-invalidpath": "$1 ket imbalido a pagnaan ti pagidulinan.",
-       "backend-fail-delete": "Saan a maikkat ti papeles $1.",
-       "backend-fail-describe": "Saam a mabaliwan ti metadata para iti papeles ti \"$1\".",
-       "backend-fail-alreadyexists": "Ti papeles $1 ket addan.",
-       "backend-fail-store": "Saan a maidulin ti papeles $1 idiay $2.",
-       "backend-fail-copy": "Saan a makopia ti papeles $1 idiay $2.",
-       "backend-fail-move": "Saan a maiyalis ti papeles $1 idiay $2.",
+       "upload-file-error-text": "Adda napasamak nga akin-uneg a biddut idi nagpadpadas nga agpartuat ti temporario a papeles iti server.\nPangngaasi a kontaken ti maysa nga [[Special:ListUsers/sysop|administrador]].",
+       "upload-misc-error": "Di ammo a biddut ti panagikarga",
+       "upload-misc-error-text": "Adda napasamak a di ammo a biddut idi las-ud ti panagikarga.\nPangngaasi a pasingkedan ti URL ket umisu ken maserrekan ken padasem manen.\nNo ti parikut ket agsubli latta, kontaken ti maysa nga [[Special:ListUsers/sysop|administrador]].",
+       "upload-too-many-redirects": "Ti URL ket naglaon kadagiti adu unay a baw-ing",
+       "upload-http-error": "Adda napasamak a biddut ti HTTP: $1",
+       "upload-copy-upload-invalid-domain": "Dagiti kopia a panagikarga ket saan a magun-od manipud ti daytoy a dominio.",
+       "backend-fail-stream": "Saan a maipan ti papeles $1.",
+       "backend-fail-backup": "Saan a makaidulin ti kapada ti papeles ti $1.",
+       "backend-fail-notexists": "Awan ti papeles ti $1.",
+       "backend-fail-hashes": "Saan a makaala kadagiti hash ti papeles para iti panangipada.",
+       "backend-fail-notsame": "Addan ti awan kapada a papeles idiay \"$1\".",
+       "backend-fail-invalidpath": "Ti \"$1\" ket imbalido a dalan ti pagidulinan.",
+       "backend-fail-delete": "Saan a maikkat ti papeles ti \"$1\".",
+       "backend-fail-describe": "Saan a mabaliwan ti metadata para iti papeles ti \"$1\".",
+       "backend-fail-alreadyexists": "Addan ti papeles ti \"$1\".",
+       "backend-fail-store": "Saan a maidulin ti papeles ti \"$1\" iti \"$2\".",
+       "backend-fail-copy": "Saan a makopia ti papeles ti \"$1\" iti \"$2\".",
+       "backend-fail-move": "Saan a maiyalis ti papeles ti \"$1\" iti \"$2\".",
        "backend-fail-opentemp": "Saan a malukatan ti temporario a papeles.",
        "backend-fail-writetemp": "Saan a masuratan ti temporario a papeles.",
        "backend-fail-closetemp": "Saan a marikpan ti temporario a papeles.",
-       "backend-fail-read": "Saan a mabasa ti papeles $1.",
-       "backend-fail-create": "Saan a masuratan ti papeles $1.",
-       "backend-fail-maxsize": "Saan a masuratan ti papeles $1 gaputa dakdakkel ngem {{PLURAL:$2|maysa a byte|dagiti $2 a byte}}.",
-       "backend-fail-readonly": "Ti pagidulinan a kalikudan ti \"$1\" ket agdama a mabasa laeng. Ti rason a naited idi ket: \"$2\"",
-       "backend-fail-synced": "Ti papeles \"$1\" ket bangking ti kasasaadna iti kinauneg a pagidulinan ti kalikudan",
-       "backend-fail-connect": "Saan a makaikapet idiay pagidulinan a kalikudan  \"$1\".",
-       "backend-fail-internal": "Adda di amammo a biddut ti napasamak idiay pagidulinan a kalikudan \"$1\".",
-       "backend-fail-contenttype": "Saan a maammoan ti kita ti linaon ti papeles nga idulin idiay \"$1\".",
-       "backend-fail-batchsize": "Nagited ti nagipenpenan ti bunggoy iti $1 a papeles {{PLURAL:$1|nga aramid|nga ar-aramid}}; ti patingga ket $2 {{PLURAL:$2|nga aramid|nga ar-aramid}}.",
-       "backend-fail-usable": "Saan a mabasa wenno masuratan ti papeles $1 gaputa awan ti makaanay a pammalubos wenno awan dagiti direktorio/pangikabilan.",
-       "filejournal-fail-dbconnect": "Saan a maikapet idiay warnakan a database para iti likudan a pagipenpenan \"$1\".",
-       "filejournal-fail-dbquery": "Saan a makapabaro idiay warnakan a database para iti likudan a pagipenpenan \"$1\".",
+       "backend-fail-read": "Saan a mabasa ti papeles ti \"$1\".",
+       "backend-fail-create": "Saan a masuratan ti papeles ti \"$1\".",
+       "backend-fail-maxsize": "Saan a masuratan ti papeles ti \"$1\" gapu ta daytoy ket dakdakkel ngem {{PLURAL:$2|maysa a byte|dagiti $2 a byte}}.",
+       "backend-fail-readonly": "Ti pagidulinan a kalikudan ti \"$1\" ket agdama a mabasa laeng. Ti rason a naited idi ket: \"<em>$2</em>\"",
+       "backend-fail-synced": "Ti papeles ti \"$1\" ket bangking ti kasasaadna iti kaunegan a pagidulinan dagiti kalikudan",
+       "backend-fail-connect": "Saan a makaikapet idiay pagidulinan a kalikudan ti \"$1\".",
+       "backend-fail-internal": "Adda napasamak a di ammo a biddut idiay pagidulinan a kalikudan ti \"$1\".",
+       "backend-fail-contenttype": "Saan a maikeddeng ti kita ti linaon iti papeles a maidulin iti \"$1\".",
+       "backend-fail-batchsize": "Ti pagidulinan a likudan ket naited a paset ti papeles ti $1 nga {{PLURAL:$1|operasion|op-operasion}}; ti patingga ket $2 nga {{PLURAL:$2|operasion|op-operasion}}.",
+       "backend-fail-usable": "Saan a mabasa wenno masuratan ti papeles ti \"$1\" gapu ta awan ti makaanay a pammalubos wenno awan dagiti direktorio/pagikabilan.",
+       "filejournal-fail-dbconnect": "Saan a maikapet iti database ti warnakan a para iti likudan a pagipenpenan ti \"$1\".",
+       "filejournal-fail-dbquery": "Saan a makapabaro ti database ti warnakan para iti likudan a pagipenpenan ti \"$1\".",
        "lockmanager-notlocked": "Saan a malukatan ti \"$1\"; saan a nakandaduan.",
        "lockmanager-fail-closelock": "Saan a marikepan ti nakandaduan a papeles para iti \"$1\".",
-       "lockmanager-fail-deletelock": "Saan a maikkat ti nakandaduan a papeles para iti \"$1\".",
+       "lockmanager-fail-deletelock": "Saan a maikkat ti kandado ti papeles para iti \"$1\".",
        "lockmanager-fail-acquirelock": "Saan a makaala ti kandado para iti \"$1\".",
        "lockmanager-fail-openlock": "Saan a malukatan ti kandado ti papeles para iti \"$1\".",
        "lockmanager-fail-releaselock": "Saan a maibbatan ti kandado para iti \"$1\".",
-       "lockmanager-fail-db-bucket": "Saan a makasilpo ti umanay a kandado kadagiti database idiay timba $1.",
-       "lockmanager-fail-db-release": "Saan a maibbatan dagiti kandado idiay database $1.",
-       "lockmanager-fail-svr-acquire": "Saan a makaala kadagiti kandado ti server $1.",
-       "lockmanager-fail-svr-release": "Saan a maibbatan dagiti kandado idiay server $1.",
-       "zip-file-open-error": "Adda biddut a nasarakan idi panaglukat ti papeles ti panagkita a ZIP.",
-       "zip-wrong-format": "Ti nainagan a papeles ket saan a ZIP a papeles.",
-       "zip-bad": "Daytoy a papeles ket nadadael wenno saan a mabasa a kas ZIP a papeles.\nSaan a mabalin a nasayaat a makita para iti seguridad.",
-       "zip-unsupported": "Ti papeles ket ZIP a papeles nga agus-usar ti ZIP a langa a saan a sinuportaran babaen ti MediaWiki .\nSaan a mabalin a nasayaat a makita para iti seguridad.",
-       "uploadstash": "Pinag-ipan ti stash",
-       "uploadstash-summary": "Daytoy a panid ket mangted ti panagserrek kadagiti papeles a napag-ipan (wenno nairugi a naipan) ngem saan pay a naipablaak iti wiki. Dagitoy a papeles ket saan a makita ti sabsabali ngem laeng ti agar-aramat a nag-ipan kaniada.",
+       "lockmanager-fail-db-bucket": "Saan a makakontak ti umanay a kandado dagiti database idiay timba ti $1.",
+       "lockmanager-fail-db-release": "Saan a maibbatan dagiti kandado iti database ti $1.",
+       "lockmanager-fail-svr-acquire": "Saan a makaala kadagiti kandado ti server ti $1.",
+       "lockmanager-fail-svr-release": "Saan a maibbatan dagiti kandado iti server ti $1.",
+       "zip-file-open-error": "Adda napasamak a biddut idi lukluktan ti papeles para kadagiti panagkita ti ZIP.",
+       "zip-wrong-format": "Ti nainagan a papeles ket saan a papeles ti ZIP.",
+       "zip-bad": "Daytoy a papeles ket nadadael wenno saan a mabasa a papeles ti ZIP.\nSaan a mabalin a nasayaat a makita para iti seguridad.",
+       "zip-unsupported": "Ti papeles ket papales ti ZIP nga agus-usar ti ZIP a langa a saan a masuportaran babaen ti MediaWiki .\nSaan a mabalin a nasayaat a makita para iti seguridad.",
+       "uploadstash": "Panagikarga ti stash",
+       "uploadstash-summary": "Daytoy a panid ket mangited ti panagserrek kadagiti papeles a naikarga wenno mangrugrugi iti proseso a maikarga, ngem saan pay a naipablaak iti wiki. Dagitoy a papeles ket saan a makita ti sinoman ngem ti laeng agar-aramat a nagikarga kaniada.",
        "uploadstash-clear": "Dalusan dagiti na-stash a papeles",
        "uploadstash-nofiles": "Awan ti na-stash a papelesmo.",
-       "uploadstash-badtoken": "Ti panag-tungpal dayta nga aramid ket napaay, ngamin ta dagiti talekmo ti panag-urnos ket nagpaso. Padasem manen.",
+       "uploadstash-badtoken": "Ti panag-tungpal dayta nga aramid ket napaay, ngamin ta dagiti talekmo ti panag-urnos ket nagpason. Padasen manen.",
        "uploadstash-errclear": "Ti panagdalus kadagiti papeles ket napaay.",
-       "uploadstash-refresh": "Pasadiwaam dagiti listaan ti papeles",
-       "invalid-chunk-offset": "Imbalido ti maysa a tangdan",
-       "img-auth-accessdenied": "naiparit ti iseserrek",
-       "img-auth-nopathinfo": "Ti servermo ket mabalin nga agipasa iti daytoy a pakaammo.\nBaka met laeng naibasta ti CGI ken saan na a tapayaen ti img_auth.\nKitaen ti https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization .",
-       "img-auth-notindir": "Ti kiniddaw a dalan ket saan a ti naaramid a direktorio ti pag-ipan",
-       "img-auth-badtitle": "Saan a makaaramid ti umisu a titulo a naggapu idiay \"$1\".",
+       "uploadstash-refresh": "Pasadiwaen dagiti listaan ti papeles",
+       "invalid-chunk-offset": "Imbalido a pirgis ti timbengan",
+       "img-auth-accessdenied": "Nalibak ti iseserrek",
+       "img-auth-nopathinfo": "Ti servermo ket saan a naisaad nga agipasa iti daytoy a pakaammo.\nMabalin a naibatay iti CGI ken saan a makasuporta ti img_auth.\nKitaen ti https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization .",
+       "img-auth-notindir": "Ti kiniddaw a dalan ket saan nga adda iti naaramid a direktorio ti pagikargaan",
+       "img-auth-badtitle": "Saan a makaaramid ti umisu a titulo manipud ti \"$1\".",
        "img-auth-nologinnWL": "Saanka a nakastrek ken ti \"$1\" ket awan idiay mabalin a listaan.",
-       "img-auth-nofile": "Ti papeles \"$1\" ket awan dita.",
-       "img-auth-isdir": "Agserserrekka ti direktorio ti papeles \"$1\".\nTi iseserrek ti papeles ti mabalin laeng.",
-       "img-auth-streaming": "Agwaig \"$1\".",
-       "img-auth-public": "Ti pamay-an ti img_auth.php ket mangiruar kadagiti papeles manipud ti pribado a wiki.\nDaytoy a wiki naipabalin a kas publiko a wiki.\nPara iti kangatuan a talinaay, nabaldado ti img_auth.php.",
-       "img-auth-noread": "Ti agar-aramat ket awan ti pammalubosna nga agbasa \"$1\".",
+       "img-auth-nofile": "Awan ti papeles ti \"$1\".",
+       "img-auth-isdir": "Padpadasem ti mangserrek ti direktorio ti \"$1\".\nTi laeng panagserrek ti papeles ti maipalubos.",
+       "img-auth-streaming": "Agip-ipan ti \"$1\".",
+       "img-auth-public": "Ti annong ti img_auth.php ket ti mangiruar kadagiti papeles manipud ti pribado a wiki.\nDaytoy a wiki naaramid a kas publiko a wiki.\nPara iti kangatuan a seguridad, nabaldado ti img_auth.php.",
+       "img-auth-noread": "Ti agar-aramat ket awan ti pammalubosna nga agbasa ti \"$1\".",
        "http-invalid-url": "Imbalido nga URL: $1",
-       "http-invalid-scheme": "Ti URL nga adda ti \"$1\" a pamuspusan ket saan a masuportaran.",
+       "http-invalid-scheme": "Dagiti URL nga addaan iti \"$1\" a pamuspusan ket saan a masuportaran.",
        "http-request-error": "Ti panagkiddaw ti HTTP ket napaay gapu ti di ammo a biddut.",
        "http-read-error": "Biddut ti panagbasa ti HTTP.",
        "http-timed-out": "Nagsardeng ti panagkiddaw ti HTTP.",
        "http-curl-error": "Biddut ti panagala ti URL: $1",
        "http-bad-status": "Adda pakirut idi las-ud ti panagkiddaw ti HTTP: $1 $2",
        "upload-curl-error6": "Di madanon ti URL",
-       "upload-curl-error6-text": "Ti URL a naited ket saan a madanon.\nPangngaasi a kitaem manen no husto ti URL ken adda dayta a pagsaadan.",
-       "upload-curl-error28": "Nagsardeng ti panag-ipan",
-       "upload-curl-error28-text": "Ti pagsaadan ket nabayag unay a simmungbat.\nPangngaasi a kitaen no naipatakder ti pagsaadan, aguray no madamdama ket padasem manen.\nBaka kayatmo a padasen no saan a makumikom nga oras.",
-       "license": "Lisensia:",
-       "license-header": "Lisensia",
+       "upload-curl-error6-text": "Ti URL a naited ket saan a madanon.\nPangngaasi a kitaem manen no husto ti URL ken adda dayta a sitio.",
+       "upload-curl-error28": "Nagsardeng ti panagikarga",
+       "upload-curl-error28-text": "Ti sitio ket nabayag unay a simmungbat.\nPangngaasi a kitaen no naipatakder ti sito, aguray no madamdama ket padasen manen.\nBaka kayatmo a padasen iti saan a makumikom nga oras.",
+       "license": "Panaglisensia:",
+       "license-header": "Panaglisensia",
        "nolicense": "Awan ti napili",
-       "license-nopreview": "(Saan a mabalin nga ipadas)",
-       "upload_source_url": " (maysa nga umisu, ken maserrekan ti publiko nga URL)",
-       "upload_source_file": "(papeles iti kompiutermo)",
+       "licenses-edit": "Urnosen dagiti pagpilian ti lisensia",
+       "license-nopreview": "(Saan a magun-od ti panagipadas)",
+       "upload_source_url": "(maysa nga umisu, ken publiko a maserrekan nga URL)",
+       "upload_source_file": "(ti papeles iti kompiutermo)",
        "listfiles-delete": "ikkaten",
-       "listfiles-summary": "Daytoy nga espesial a panid ket agiparang kadagiti amin a naipan a papeles.",
-       "listfiles_search_for": "Agsapul para iti nagan ti midia:",
+       "listfiles-summary": "Daytoy nga espesial a panid ket agiparang kadagiti amin a naikarga a papeles.",
+       "listfiles_search_for": "Agbiruk para iti nagan ti midia:",
        "imgfile": "papeles",
        "listfiles": "Listaan ti papeles",
        "listfiles_thumb": "Bassit a ladawan",
        "listfiles_name": "Nagan",
        "listfiles_user": "Agar-aramat",
        "listfiles_size": "Kadakkel",
-       "listfiles_description": "Panagipalpalawag",
+       "listfiles_description": "Deskripsion",
        "listfiles_count": "Dagiti bersion",
        "listfiles-show-all": "Iraman dagiti daan a bersion dagiti ladawan",
        "listfiles-latestversion": "Agdama a bersion",
        "listfiles-latestversion-no": "Saan",
        "file-anchor-link": "Papeles",
        "filehist": "Pakasaritaan ti papeles",
-       "filehist-help": "Ipindut ti maysa a petsa/oras tapno makitam ti papeles iti kasisigud a langana iti dayta nga oras.",
+       "filehist-help": "Pinduten iti petsa/oras tapno makita ti papeles a kas naiparang iti dayta a panawen.",
        "filehist-deleteall": "ikkaten amin",
        "filehist-deleteone": "ikkaten",
        "filehist-revert": "isubli",
        "filehist-datetime": "Petsa/Oras",
        "filehist-thumb": "Bassit a ladawan",
        "filehist-thumbtext": "Bassit a ladawan para iti bersion manipud idi $1",
-       "filehist-nothumb": "Awan ti napabassit a ladawan",
+       "filehist-nothumb": "Awan ti bassit a ladawan",
        "filehist-user": "Agar-aramat",
        "filehist-dimensions": "Dagiti rukod",
        "filehist-filesize": "Kadakkel ti papeles",
        "filehist-comment": "Komentario",
-       "imagelinks": "Panagusar ti papeles",
-       "linkstoimage": "Ti sumaganad {{PLURAL:$1|a silpo ti panid|kadagiti $1 a silpo ti panid}} ditoy a papeles:",
-       "linkstoimage-more": "Ad-adu ngem $1 {{PLURAL:$1|a silsilpo ti panid|silpo ti pampanid}} iti daytoy a papeles.\nTi sumaganad a listaan ket agipakita {{PLURAL:$1|ti umona a silpo ti panid|kadagiti umuna a $1 a silpo ti panid}} iti daytoy laeng a papeles.\nMagun-od ti [[Special:WhatLinksHere/$2|kompleto a listaan]].",
+       "imagelinks": "Panag-usar ti papeles",
+       "linkstoimage": "Ti sumaganad {{PLURAL:$1|a silsilpo ti panid|kadagiti $1 a silpo ti pampanid}} iti daytoy a papeles:",
+       "linkstoimage-more": "Ad-adu ngem $1 {{PLURAL:$1|a silsilpo ti panid|a silpo ti pampanid}} iti daytoy a papeles.\nTi sumaganad a listaan ket mangipakita {{PLURAL:$1|ti umona a silpo ti panid|kadagiti umuna a $1 a silsilpo ti panid}} iti daytoy laeng a papeles.\nMagun-od ti [[Special:WhatLinksHere/$2|kompleto a listaan]].",
        "nolinkstoimage": "Awan ti pampanid a nakasilpo iti daytoy a papeles.",
-       "morelinkstoimage": "Kitaen ti [[Special:WhatLinksHere/$1|ad-adu pay a silpo]] iti daytoy a papeles.",
+       "morelinkstoimage": "Kitaen ti [[Special:WhatLinksHere/$1|adu pay a silsilpo]] iti daytoy a papeles.",
        "linkstoimage-redirect": "$1 (baw-ing ti papeles) $2",
-       "duplicatesoffile": "Ti sumaganad a {{PLURAL:$1|papeles ket duplikado|a $1 a pappapeles ket duplikado}} iti daytoy a papeles ([[Special:FileDuplicateSearch/$2|adu pay a salaysay]]):",
-       "sharedupload": "Daytoy a papeles ket naggapu idiay $1 ken mabalin a mausar kadagiti sabsabali a gandat.",
-       "sharedupload-desc-there": "Daytoy a papeles ket naggapu idiay $1 ken mabalin a mausar kadagiti sabsabali a gandat.\nPangngaasi a kitaem ti [$2 pagipalpalawag ti panid] para iti adu pay a pakaammo.",
-       "sharedupload-desc-here": "Daytoy a papeles ket naggapu idiay $1 ken mabalin a mausar kadagiti sabsabali a gandat.\nTi pagipalpalawagna idiay [$2 pagipalpalawag a panid ti papeles ] ket naipakita dita baba.",
-       "sharedupload-desc-edit": "Daytoy a papeles ket naggapu manipud idiay $1 ken mabalin a mausar babaen dagiti sabali a gandat.\nBaka kayatmo nga urnosen ti bukodna a deskripsion idiay [$2 deskripsion ti papeles a panid].",
-       "sharedupload-desc-create": "Daytoy a papeles ket naggapu manipud idiay $1 ken mabalin a mausar babaen dagiti sabali a gandat.\nBaka kayatmo nga urnosen ti bukodna a deskripsion idiay [$2 deskripsion ti papeles a panid].",
+       "duplicatesoffile": "Ti sumaganad a {{PLURAL:$1|papeles ket duplikado|a $1 a pappapeles ket duplikado}} iti daytoy a papeles ([[Special:FileDuplicateSearch/$2|adu pay a salaysay]]):",
+       "sharedupload": "Daytoy a papeles ket manipud ti $1 ken mabalin a mausar babaen dagiti sabali a gandat.",
+       "sharedupload-desc-there": "Daytoy a papeles ket manipud ti $1 ken mabalin a mausar babaen dagiti sabali a gandat.\nPangngaasi a kitaem ti [$2 panid ti deskripsion ti papeles] para iti adu pay a pakaammo.",
+       "sharedupload-desc-here": "Daytoy a papeles ket manipud ti $1 ken mabalin a mausar babaen dagiti sabali a gandat.\nTi deskripsion iti [$2 panid ti deskripsion ti papelesna] idiay ket naipakita dita baba.",
+       "sharedupload-desc-edit": "Daytoy a papeles ket manipud ti $1 ken mabalin a mausar babaen dagiti sabali a gandat.\nMabalin a kayatmo nga urnosen ti bukodna a deskripsion idiay [$2 panid ti deskripsion ti papeles].",
+       "sharedupload-desc-create": "Daytoy a papeles ket manipud ti $1 ken mabalin a mausar babaen dagiti sabali a gandat.\nMabalin a kayatmo nga urnosen ti bukodna a deskripsion idiay [$2 panid ti deskripsion ti papeles].",
        "filepage-nofile": "Awan ti agnagan ti kasta a papeles.",
-       "filepage-nofile-link": "Awan ti agnagan ti kastoy a papeles, ngem mabalinmo ti [$1 mangipan].",
-       "uploadnewversion-linktext": "Mangipan ti kabarbaro a bersion iti daytoy a papeles",
-       "shared-repo-from": "Naggapo iti $1",
-       "shared-repo": "iti pagbingbingayan a nagikabilan",
-       "upload-disallowed-here": "Saanmo a masuratan manen daytoy a ladawan.",
+       "filepage-nofile-link": "Awan ti agnagan ti kastoy a papeles, ngem mabalinmo ti [$1 agikarga].",
+       "uploadnewversion-linktext": "Agikarga ti baro a bersion iti daytoy a papeles",
+       "shared-repo-from": "manipud ti $1",
+       "shared-repo": "ti pagbingbingayan a repositorio",
+       "upload-disallowed-here": "Saanmo a masuratan manen daytoy a papeles.",
        "filerevert": "Isubli ti $1",
        "filerevert-legend": "Isubli ti papeles",
-       "filerevert-intro": "Mangrugrugika nga agipasubli ti papeles '''[[Media:$1|$1]]''' iti [$4 bersion ti oras ket petsa nga $3, $2].",
+       "filerevert-intro": "Mangrugrugika nga agipasubli ti papeles ti <strong>[[Media:$1|$1]]</strong> iti [$4 bersion manipud idi $3, $2].",
        "filerevert-comment": "Rason:",
-       "filerevert-defaultcomment": "Naisubli ti bersion manipud idi $2, $1",
+       "filerevert-defaultcomment": "Naisubli iti bersion manipud idi $2, $1",
        "filerevert-submit": "Isubli",
-       "filerevert-success": "Ti '''[[Media:$1|$1]]''' ket naipasubli idiay [$4 bersion ti oras ken petsa $3, $2].",
-       "filerevert-badversion": "Awan ti dati a lokal a bersion daytoy a papeles a naited ti dayta nga oras ken petsa.",
+       "filerevert-success": "Ti <strong>[[Media:$1|$1]]</strong> ket naipasubli iti [$4 bersion manipud idi $3, $2].",
+       "filerevert-badversion": "Awan ti dati a lokal a bersion iti daytoy a papeles a naited ti dayta nga oras ken petsa.",
        "filedelete": "Ikkaten ti $1",
        "filedelete-legend": "Ikkaten ti papeles",
-       "filedelete-intro": "Mangrugrugika nga agikkat ti '''[[Media:$1|$1]]''' ken mairaman amin a pakasaritaanna.",
-       "filedelete-intro-old": "Ikikkatem ti bersion iti '''[[Media:$1|$1]]''' manipud idi [$4 $3, $2].",
+       "filedelete-intro": "Mangrugrugika nga agikkat ti <strong>[[Media:$1|$1]]</strong> ken mairaman amin a pakasaritaanna.",
+       "filedelete-intro-old": "Ikikkatem ti bersion iti <strong>[[Media:$1|$1]]</strong> manipud idi [$4 $3, $2].",
        "filedelete-comment": "Rason:",
        "filedelete-submit": "Ikkaten",
-       "filedelete-success": "Naikkaten ti '''$1'''.",
-       "filedelete-success-old": "Ti bersion iti '''[[Media:$1|$1]]''' manipud idi $3, $2 ket naikkaten.",
-       "filedelete-nofile": "awan ti '''$1''' .",
-       "filedelete-nofile-old": "Awan ti naidulin a bersion ti '''$1''' nga addaan ti naited a kakitkitana.",
+       "filedelete-success": "Naikkaten ti <strong>$1</strong>.",
+       "filedelete-success-old": "Ti bersion iti <strong>[[Media:$1|$1]]</strong> manipud idi $3, $2 ket naikkaten.",
+       "filedelete-nofile": "awan ti <strong>$1</strong> .",
+       "filedelete-nofile-old": "Awan ti naidulin a bersion ti <strong>$1</strong> nga addaan kadagiti naited a gupit.",
        "filedelete-otherreason": "Sabali/maipatinayon a rason:",
        "filedelete-reason-otherlist": "Sabali a rason",
-       "filedelete-reason-dropdown": "*Kadawyan a rasrason ti pannakaikkat\n** Panagsalungasing iti karbengan ti panagkopia\n** Nadoble a papeles",
+       "filedelete-reason-dropdown": "*Kadawyan a rasrason ti pannakaikkat\n** Panagsalungasing iti karbengan ti kopia\n** Duplikado a papeles",
        "filedelete-edit-reasonlist": "Urnosen dagiti rason ti panagikkat",
        "filedelete-maintenance": "Ti panagikkat ken panagisubli kadagiti papaeles ket nabaldado iti las-ud ti panagtartaripato.",
-       "filedelete-maintenance-title": "Saan a maikkat daytoy a papeles",
+       "filedelete-maintenance-title": "Saan a maikkat ti papeles",
        "mimesearch": "Pagbiruk ti MIME",
-       "mimesearch-summary": "Daytoy a panid ket pakabaelanna ti panagsagat ti papeles iti MIME a kitada.\nIkabil: kita ti nagyan/subtipo wenno kita ti linaon/*, a kas ti <code>image/jpeg</code>.",
+       "mimesearch-summary": "Daytoy a panid ket pakabaelanna ti panagsagat kadagiti papeles iti MIME a kitada.\nIkabil: kita ti linaon/subtipo wenno kita ti linaon/*, a kas ti <code>image/jpeg</code>.",
        "mimetype": "Kita ti MIME:",
        "download": "ikarga",
        "unwatchedpages": "Di mabambantayan a pampanid",
        "listduplicatedfiles-summary": "Daytoy ket listaan dagiti papeles a ti kaudian unay a bersion ti papeles ket duplikado ti kaudian unay a bersion iti sabali a papeles. Dagiti laeng lokal a papeles ti maikeddeng.",
        "listduplicatedfiles-entry": "Ti [[:File:$1|$1]] ket addaan [[$3|{{PLURAL:$2|iti duplikado|kadagiti $2 a duplikado}}]].",
        "unusedtemplates": "Dagiti saan a nausar a plantilia",
-       "unusedtemplatestext": "Daytoy a panid ket ilistana dagiti panid idiay {{ns:template}} a nagan ti espasio a saan a nairaman iti sabali a panid.\nLaglagipem ti agkita kadagiti sabsabali a silpo ti plantilia sakbay nga ikkatem ida.",
-       "unusedtemplateswlh": "dagiti sabali a silpo",
+       "unusedtemplatestext": "Daytoy a panid ket ilistana dagiti panid iti nagan ti espasio ti {{ns:template}} a saan a nairaman iti sabali a panid.\nLaglagipem a kitaen dagiti sabali a silpo dagiti plantilia sakbay nga ikkaten ida.",
+       "unusedtemplateswlh": "sabali a silsilpo",
        "randompage": "Pugto a panid",
        "randompage-nopages": "Awan ti pampanid iti sumaganad a {{PLURAL:$2|nagan ti espasio|nagnagan ti espasio}}: $1.",
        "randomincategory": "Pugto a panid iti kategoria",
        "randomincategory-invalidcategory": "Ti \"$1\" ket saan nga umisu a nagan ti kategoria.",
-       "randomincategory-nopages": "Awan ti pampanid iti [[:Category:$1]].",
+       "randomincategory-nopages": "Awan ti pampanid iti kategoria ti [[:Category:$1]].",
        "randomincategory-selectcategory": "Agala ti pugto a panid manipud ti kategoria: $1 $2.",
        "randomincategory-selectcategory-submit": "Inkan",
        "randomredirect": "Pugto a baw-ing",
        "randomredirect-nopages": "Awan dagiti baw-ing iti daytoy a nagan ti espasio ti \"$1\".",
        "statistics": "Estadistika",
        "statistics-header-pages": "Estadistika ti panid",
-       "statistics-header-edits": "Estadistika ti inurnos",
+       "statistics-header-edits": "Estadistika ti panag-urnos",
        "statistics-header-views": "Estadistika ti panagkita",
        "statistics-header-users": "Estadistika ti agar-aramat",
-       "statistics-header-hooks": "Estadistika a sabsabali",
+       "statistics-header-hooks": "Sabali nga estadistika",
        "statistics-articles": "Dagiti naglaon a panid",
        "statistics-pages": "Pampanid",
-       "statistics-pages-desc": "Dagiti amin a panid ti wiki, a mairaman dagiti tungtungan a panid, dagiti baw-ing, ken dadduma pay",
-       "statistics-files": "Ti naipapan a papeles",
+       "statistics-pages-desc": "Amin a pampanid iti wiki, a mairaman dagiti tungtungan a panid, dagiti baw-ing, kdpy.",
+       "statistics-files": "Dagiti naikarga a papeles",
        "statistics-edits": "Dagiti naurnos a panid manipud idi nairugi ti {{SITENAME}}",
-       "statistics-edits-average": "Pagtengngaan nga urnos ti tunggal maysa a panid",
+       "statistics-edits-average": "Dagiti pagtengngaan nga inurnos iti tunggal maysa a panid",
        "statistics-views-total": "Dagiti dagup ti panagkita",
-       "statistics-views-total-desc": "Saan a naikabil ti panagkita dagiti awan a panid ken dagiti espesial a panid",
-       "statistics-views-peredit": "Panagkita ti tunggal maysa nga urnos",
+       "statistics-views-total-desc": "Dagiti panagkita ti awan a pampanid ken saan a mairaman dagiti espesial a panid",
+       "statistics-views-peredit": "Panagkita iti tunggal maysa a panag-urnos",
        "statistics-users": "Dagiti nakarehistro nga [[Special:ListUsers|agar-aramat]]",
-       "statistics-users-active": "Dagiti nasiglat nga agar-aramat",
-       "statistics-users-active-desc": "Dagiti agar-aramat a nagtungpal ti aramid ti napalabas nga {{PLURAL:$1|aldaw|$1 nga al-aldaw}}",
+       "statistics-users-active": "Dagiti aktibo nga agar-aramat",
+       "statistics-users-active-desc": "Dagiti agar-aramat a nagtungpal ti aramid iti napalabas nga {{PLURAL:$1|aldaw|$1 nga al-aldaw}}",
        "statistics-mostpopular": "Kaaduan a nabuya a pampanid",
-       "pageswithprop": "Pampanid nga adda maysa a tagikua ti panid",
-       "pageswithprop-legend": "Pampanid nga adda maysa a tagikua ti panid",
+       "pageswithprop": "Pampanid nga adda tagikua ti panid",
+       "pageswithprop-legend": "Pampanid nga adda tagikua ti panid",
        "pageswithprop-text": "Daytoy a panid ket ilistana ti pampanid nga agus-usar ti naisangayan a tagikua ti panid.",
        "pageswithprop-prop": "Nagan ti tagikua:",
        "pageswithprop-submit": "Inkan",
-       "pageswithprop-prophidden-long": "atiddog a testo ti tagikua a nailemmeng ($1)",
+       "pageswithprop-prophidden-long": "atiddog a testo ti pateg ti tagikua a nailemmeng ($1)",
        "pageswithprop-prophidden-binary": "binario a pateg ti tagikua a nailemmeng ($1)",
        "doubleredirects": "Dagiti namindua a naibaw-ing",
-       "doubleredirectstext": "Daytoy a panid ket ilistana dagiti panid nga agbaw-ing kadagiti sabsabali a baw-ing a pampanid.\nIti tunggal maysa nga aray ket adda nagyanna kadagiti silpo iti umuna ken maikadua a baw-ing, ken iti puntaan iti maikadua a baw-ing, nga isu ti \"pudno\" a puntaan ti panid, nga ti umuna a baw-ing ket isu ti ipatudona.\n<del>Nakurosan</del> dagita naikabil ket napadtuan.",
-       "double-redirect-fixed-move": "Naiyalisen ti [[$1]].\nAutomatiko idi a napabaro ken naibaw-ing tattan idiay [[$2]].",
-       "double-redirect-fixed-maintenance": "Automatiko a simsimpaen ti doble a baw-ing manipud ti [[$1]] idiay [[$2]] iti panagtaripato nga obra.",
+       "doubleredirectstext": "Daytoy a panid ket ilistana dagiti panid nga agbaw-ing kadagiti sabali a baw-ing a pampanid.\nIti tunggal maysa nga aray ket aglaon kadagiti silpo iti umuna ken maikadua a baw-ing, ken ti pay puntaan ti maikadua a baw-ing, nga isu ti \"pudno\" a puntaan ti panid, nga ti umuna a baw-ing ket isu koma ti pakaituduanna.\nNasolbaren dagiti <del>nakurosan</del> a naikabil.",
+       "double-redirect-fixed-move": "Naiyalisen ti [[$1]].\nAutomatiko idi a napabaro ken naibaw-ing tattan iti [[$2]].",
+       "double-redirect-fixed-maintenance": "Automatiko nga agsimsimpa ti doble a baw-ing manipud ti [[$1]] iti [[$2]] iti panagtaripato nga obra.",
        "double-redirect-fixer": "Panagsimpa ti baw-ing",
        "brokenredirects": "Dagiti naputed a baw-ing",
-       "brokenredirectstext": "Dagitoy sumaganad a baw-ing ket nakasilpo kadagiti awan a panid:",
+       "brokenredirectstext": "Dagiti sumaganad a baw-ing ket nakasilpo kadagiti awan a panid:",
        "brokenredirects-edit": "urnosen",
        "brokenredirects-delete": "ikkaten",
-       "withoutinterwiki": "Dagiti panid nga awan ti silpona ti pagsasao",
-       "withoutinterwiki-summary": "Dagitoy a pampanid ket saan a nakasilpo ti sabali a bersion ti pagsasao.",
+       "withoutinterwiki": "Pampanid nga awan kadagiti silpo ti pagsasao",
+       "withoutinterwiki-summary": "Dagiti sumaganad a pampanid ket saan a nakasilpo kadagiti sabali a bersion ti pagsasao.",
        "withoutinterwiki-legend": "Pagpasaruno",
        "withoutinterwiki-submit": "Ipakita",
-       "fewestrevisions": "Dagiti panid nga adda kadagiti kabassitan a panangbalbaliw",
+       "fewestrevisions": "Dagiti panid nga adda kadagiti kabassitan a rebision",
        "nbytes": "$1 {{PLURAL:$1|a byte|dagiti byte}}",
        "ncategories": "$1 {{PLURAL:$1|a kategoria|a katkategoria}}",
        "ninterwikis": "$1 {{PLURAL:$1|nga interwiki|dagiti interwiki}}",
        "nlinks": "$1 {{PLURAL:$1|a silpo|kadagiti silpo}}",
        "nmembers": "$1 {{PLURAL:$1|a kameng|kamkameng}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|kameng|kamkameng}}",
-       "nrevisions": "$1 {{PLURAL:$1|a panagbalbaliw|kadagiti panagbalbaliw}}",
+       "nrevisions": "$1 {{PLURAL:$1|a rebison|kadagiti rebision}}",
        "nviews": "$1 {{PLURAL:$1|a panangkita|kadagiti panangkita}}",
-       "nimagelinks": "Inusar idiay $1 {{PLURAL:$1|a panid|a pampanid}}",
-       "ntransclusions": "inusar idiay $1 {{PLURAL:$1|a panid|a pampanid}}",
-       "specialpage-empty": "Awan dagiti nagbanaganna daytoy a padamag.",
+       "nimagelinks": "Inusar iti $1 {{PLURAL:$1|a panid|a pampanid}}",
+       "ntransclusions": "inusar iti $1 {{PLURAL:$1|a panid|a pampanid}}",
+       "specialpage-empty": "Awan dagiti nagbanagan daytoy a reporta.",
        "lonelypages": "Dagiti naulila a panid",
-       "lonelypagestext": "Dagiti sumaganad a panid ket saan a nakasilpo idiay wenno naipakita kadagiti sabali a panid idiay {{SITENAME}}.",
+       "lonelypagestext": "Dagiti sumaganad a panid ket saan a nakasilpo wenno nailak-am kadagiti sabali a panid iti {{SITENAME}}.",
        "uncategorizedpages": "Dagiti saan a nakategoria a panid",
        "uncategorizedcategories": "Dagiti saan a nakategoria a kategoria",
        "uncategorizedimages": "Dagiti saan a nakategoria a papeles",
        "popularpages": "Dagiti nadayeg a panid",
        "wantedcategories": "Dagiti makiddaw a kategoria",
        "wantedpages": "Dagiti makiddaw a panid",
-       "wantedpages-badtitle": "Saan nga umisu a titulo idiay naikabil a pagbanagan: $1",
+       "wantedpages-badtitle": "Imbalido a titulo iti agasmang ti nagbanagan: $1",
        "wantedfiles": "Dagiti makiddaw a papeles",
-       "wantedfiletext-cat": "Dagiti sumaganad a papeles ket maus-usar ngem awanda met. Dagiti papeles a naggapu kadagiti ganganaet a repositorio ket mailista uray pay no addaan da. No adda dagiti kasla adda dagitoy ket <del>maikkat</del> to. A maipanayon pay, dagiti pampanid nga agisengngat kadagiti papeles nga awan ket nailista idiay [[:$1]].",
-       "wantedfiletext-cat-noforeign": "Dagiti sumaganad a papeles ket naus-usar ngem awanda met. Iti pay maipatinayon, dagiti panid a mangipenpen kadagiti papeles ket nailista idiay [[:$1]].",
-       "wantedfiletext-nocat": "Dagiti sumaganad a papeles ket maus-usar ngem awanda met. Dagiti papeles a naggapu kadagiti ganganaet a repositorio ket mailista uray pay no addaan da. No adda dagiti kasla adda dagitoy ket <del>maikkat</del> to.",
-       "wantedfiletext-nocat-noforeign": "Dagiti sumaganad a papeles ket naus-usar ngem awanda met",
+       "wantedfiletext-cat": "Dagiti sumaganad a papeles ket maus-usar ngem awanda met. Dagiti papeles manipud kadagiti ganganaet a repositorio ket mabalin a mailista urayno adda. Ti kasta man a saan nga umno a positibo ket <del>maikkatto</del>. Iti maipatinayon, dagiti panid nga agisengngat kadagiti papeles nga awan ket nailista iti [[:$1]].",
+       "wantedfiletext-cat-noforeign": "Dagiti sumaganad a papeles ket naus-usar ngem awanda met. Iti maipatinayon, dagiti panid a mangipenpen kadagiti papeles ket nailista iti [[:$1]].",
+       "wantedfiletext-nocat": "Dagiti sumaganad a papeles ket maus-usar ngem awanda met. Dagiti papeles manipud ti ganganaet a repositorio ket mabalin a mailista urayno adda. No adda dagiti kasta a saan nga umno a positibo ket <del>maikkatto</del>.",
+       "wantedfiletext-nocat-noforeign": "Dagiti sumaganad a papeles ket naus-usar ngem awanda met.",
        "wantedtemplates": "Dagiti makiddaw a plantilia",
        "mostlinked": "Dagiti panid a kaaduan iti nakasilpo",
        "mostlinkedcategories": "Dagiti kategoria a kaaduan iti nakasilpo",
        "mostcategories": "Dagiti panid a kaaduan kadagiti kategoria",
        "mostimages": "Dagiti papeles a kaaduan iti nakasilpo",
        "mostinterwikis": "Dagiti panid a kaaduan kadagiti interwiki",
-       "mostrevisions": "Dagiti artikulo a kaaduan ti pannakabalbaliwna",
+       "mostrevisions": "Dagiti artikulo a kaaduan kadagiti rebision",
        "prefixindex": "Dagiti amin a panid nga addaan iti pasaruno",
-       "prefixindex-namespace": "Amin a panid nga addaan ti pasaruno ($1 a nagan ti espasio)",
+       "prefixindex-namespace": "Amin a pampanid nga addaan iti pasaruno (nagan ti espasio ti $1)",
        "prefixindex-strip": "Ikkaten ti pasaruno iti listaan",
        "shortpages": "Dagiti ababa a panid",
        "longpages": "Dagiti atiddog a panid",
        "deadendpages": "Dagiti ngudo a panid",
-       "deadendpagestext": "Dagitoy a pampanid ket saan a nakasilpo ti sabali a pampanid ditoy {{SITENAME}} .",
+       "deadendpagestext": "Dagiti sumaganad a panid ket saan a nakasilpo kadagiti sabali a panid iti {{SITENAME}}.",
        "protectedpages": "Dagiti nasalakniban a panid",
-       "protectedpages-indef": "Inggat ingana a salakniban laeng",
+       "protectedpages-indef": "Dagiti inggat ingana a salaknib laeng",
        "protectedpages-summary": "Daytoy a panid ket ilistana dagiti panid nga agdama a nasalakniban. Para iti listaan dagiti titulo a nasalakniban manipud ti pannakapartuat, kitaen ti [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
        "protectedpages-cascade": "Dagiti sariap a salaknib laeng",
        "protectedpages-noredirect": "Ilemmeng dagiti baw-ing",
        "protectedpages-unknown-performer": "Di ammo nga agar-aramat",
        "protectedtitles": "Dagiti nasalakniban a titulo",
        "protectedtitles-summary": "Daytoy a panid ket ilistana dagiti titulo nga agdama a nasalakniban manipud ti pannakapartuat. Para iti listaan dagiti adda a panid a nasalakniban, kitaen ti  [[{{#special:ProtectedPages}}|{{int:protectedpages}}]]..",
-       "protectedtitlesempty": "Awan dagiti titulo nga agdama a nasalakniban iti dagitoy a parametro.",
-       "listusers": "Listaan dagiti agar-aramat",
-       "listusers-editsonly": "Ipakita laeng dagiti agar-aramat nga adda inurnosda",
-       "listusers-creationsort": "Ilasin no ania a petsa ti pannakaaramid",
-       "listusers-desc": "Paglalasinen iti agpababa nga urnos",
+       "protectedtitlesempty": "Awan dagiti titulo nga agdama a nasalakniban kadagitoy a parametro.",
+       "listusers": "Listaan ti agar-aramat",
+       "listusers-editsonly": "Ipakita laeng dagiti agar-aramat nga addaan kadagiti inurnos",
+       "listusers-creationsort": "Ilasin babaen ti petsa a pannakapartuat",
+       "listusers-desc": "Ilasin iti agpababa nga urnos",
        "usereditcount": "$1 {{PLURAL:$1|nga inurnos|kadagiti inurnos}}",
-       "usercreated": "{{GENDER:$3|Inaramid}} idi $1 idi $2",
+       "usercreated": "{{GENDER:$3|Pinartuat}} idi $1, $2",
        "newpages": "Baro a pampanid",
        "newpages-username": "Nagan ti agar-aramat:",
        "ancientpages": "Dagiti kadaanan a panid",
        "move": "Iyalis",
        "movethispage": "Iyalis daytoy a panid",
-       "unusedimagestext": "Adda dagiti sumaganad a papeles ngem saanda a naikabil iti ania man a panid.\nPangngaasi a laglagipen a dagiti sabali a sapot ti pagsaadan  ket makasilpoda ti papeles iti dagus a URL, ken isu pay a nailista da ditoy urayno saanda a naus-usar iti agdama.",
-       "unusedcategoriestext": "Adda dagiti sumaganad a kategoria a panid, ngem awan ti sabali a panid wenno kategoria ti agus-usar kaniada.",
-       "notargettitle": "Awan ti napuntaan",
-       "notargettext": "Saanmo a nainagan ti puntaan a panid wenno agar-aramat ti mangtungpal daytoy nga opisio.",
+       "unusedimagestext": "Adda dagiti sumaganad a papeles ngem saanda a naikabil iti aniaman a panid.\nPangngaasi a laglagipen a dagiti sabali a sitio ti web ket mabalin a nakasilpoda iti papeles iti dagus a URL, ken mabalin pay a nailista ditoy urayno saanda nga aktibo a maus-usar.",
+       "unusedcategoriestext": "Ti sumaganad a kategoria ti pampanid ket adda,urayno awan ti sabali a panid wenno kategoria ti agus-usar kaniada.",
+       "notargettitle": "Awan ti puntaan",
+       "notargettext": "Saanmo a nainagan ti puntaan a panid wenno agar-aramat ti mangtungpal iti daytoy nga annong.",
        "nopagetitle": "Awan ti kasta a puntaan a panid",
        "nopagetext": "Awan ti puntaan a panid a nainaganam.",
        "pager-newer-n": "{{PLURAL:$1|nabarbaro 1|dagiti nabarbaro $1}}",
        "pager-older-n": "{{PLURAL:$1|nadadaan 1|nadadaan $1}}",
        "suppress": "Pakapansin",
-       "querypage-disabled": "Daytoy a nangruna a panid ket nabaldado gapu kadagiti rason a panagtungpal.",
+       "querypage-disabled": "Daytoy nga espesial a panid ket nabaldado gapu kadagiti rason ti kasayaat ti panagpataray.",
        "booksources": "Dagiti taudan ti libro",
-       "booksources-search-legend": "Agsapul para kadagiti taudan ti libro",
+       "booksources-search-legend": "Agbiruk para kadagiti taudan ti libro",
        "booksources-go": "Inkan",
-       "booksources-text": "Dita baba ket listaan dagiti silpo ti sabsali a lugar nga aglaklako ti liblibro, ken baka adda pay adu a pakaammoda kadagiti liblibro a kitkitaem:",
-       "booksources-invalid-isbn": "Ti naited nga ISBN ket kasla saan nga umisu; kitaen dagiti biddut ti panagtulad kadagiti naggappuanna a taudan.",
-       "specialloguserlabel": "Ti nagtungpal:",
+       "booksources-text": "Dita baba ket listaan dagiti silpo ti sabali a sitio nga aglaklako ti baro ken saan a nausar a liblibro, ken mabalin nga addaan pay iti adu a pakaammo a maipanggep kadagiti libro a birbirukem:",
+       "booksources-invalid-isbn": "Ti naited nga ISBN ket kasla saan nga umisu; kitaen dagiti biddut ti panagtulad manipud ti kasisigud a taudan.",
+       "specialloguserlabel": "Perpormer:",
        "speciallogtitlelabel": "Puntaan (titulo wenno agar-aramat):",
        "log": "Dagiti listaan",
        "all-logs-page": "Amin a listaan a publiko",
-       "alllogstext": "Naipagtipon a pinagpakita kadagiti amin nga adda a listaan ti {{SITENAME}}.\nMapabassitmo ti pinagpakita no piliam ti kita ti listaan, ti nagan ti agar-aramat (sensitibo ti kadakkel ti letra), wenno ti naapektaran a panid (ket sensitibo met ti kadakkel ti letra).",
-       "logempty": "Awan ti agpada a bagay dita listaan.",
-       "log-title-wildcard": "Agsapul kadagiti titulo nga agrugi iti daytoy a testo",
-       "showhideselectedlogentries": "Ipakita/ilemmeng dagiti napili a naikabil ti listaan",
+       "alllogstext": "Naikaykaysa a panagiparang kadagiti amin a magun-od a listaan iti {{SITENAME}}.\nMapabassitmo ti panagkita babaen ti panagpili ti kita ti listaan, ti nagan ti agar-aramat (sensitibo ti kadakkel ti letra), wenno ti naapektaran a panid (sensitibo pay ti kadakkel ti letra).",
+       "logempty": "Awan dagiti maipada a banag iti listaan.",
+       "log-title-wildcard": "Agbiruk kadagiti titulo a mangrugi iti daytoy a testo",
+       "showhideselectedlogentries": "Baliwan ti panagkita kadagiti napili a naikabil iti listaan",
        "allpages": "Amin a pampanid",
        "nextpage": "sumaruno a panid ($1)",
        "prevpage": "Napalabas a panid ($1)",
        "allpagesfrom": "Ipakita dagiti panid a mangrugi iti:",
        "allpagesto": "Ipakita dagiti panid nga agpatingga iti:",
        "allarticles": "Amin a pampanid",
-       "allinnamespace": "Amin a pampanid ($1 a nagan ti espasio)",
+       "allinnamespace": "Amin a pampanid (nagan ti espasio ti $1)",
        "allpagessubmit": "Inkan",
        "allpagesprefix": "Iparang dagiti pampanid nga adda pasarunona:",
-       "allpagesbadtitle": "Ti naited a titulo ti panid ket imbalido wenno adda idi ti sabali a pagsasao wenno interwiki a pasarunona.",
-       "allpages-bad-ns": "Awan ti {{SITENAME}} iti nagan ti espasio a \"$1\".",
+       "allpagesbadtitle": "Ti naited a titulo ti panid ket imbalido wenno adda idi ti sabali a pagsasao wenno interwiki a pasarunona.\nDaytoy ket mabalin nga aglaon iti maysa wenno ad-adu a karkarakter a saan a mausar kadagiti titulo.",
+       "allpages-bad-ns": "Ti {{SITENAME}} ket awan iti nagan ti espasio iti \"$1\".",
        "allpages-hide-redirects": "Ilemmeng dagiti baw-ing",
-       "cachedspecial-viewing-cached-ttl": "Kitkitaem ti naidulin a bersion iti daytoy a panid, nga addan ti kadaanan a $1.",
-       "cachedspecial-viewing-cached-ts": "Kitkitaem ti maysa a naidulin a bersion iti daytoy a panid, a baka daytoy ket saan a kompleto nga agpayso.",
+       "cachedspecial-viewing-cached-ttl": "Kitkitaem ti naidulin a bersion iti daytoy a panid, a mabalin nga agduog iti $1.",
+       "cachedspecial-viewing-cached-ts": "Kitkitaem ti maysa a naidulin a bersion iti daytoy a panid, a mabalin daytoy a saan a kompleto nga agpayso.",
        "cachedspecial-refresh-now": "Kitaen ti kinaudian.",
        "categories": "Katkategoria",
        "categoriespagetext": "Ti sumaganad a {{PLURAL:$1|kategoria ket aglaon|katkategoria ket aglaon}} kadagiti panid wenno midia.\n[[Special:UnusedCategories|Dagiti saan a nausar a kategoria]] ket saan a maiparang ditoy.\nKitaen met [[Special:WantedCategories|dagiti makiddaw a kategoria]].",
        "categoriesfrom": "Ipakita dagiti kategoria a mangrugi iti:",
-       "special-categories-sort-count": "paglalasinen babaen ti bilang",
-       "special-categories-sort-abc": "paglalasinen nga alpabetiko",
-       "deletedcontributions": "Dagiti naikkat nga inararamid ti agar-aramat",
-       "deletedcontributions-title": "Dagiti naikkat nga inararamid ti agar-aramat",
-       "sp-deletedcontributions-contribs": "naar-aramid",
+       "special-categories-sort-count": "ilasin babaen ti bilang",
+       "special-categories-sort-abc": "ilasin nga alpabetiko",
+       "deletedcontributions": "Dagiti naikkat a kontribusion ti agar-aramat",
+       "deletedcontributions-title": "Dagiti naikkat a kontribusion ti agar-aramat",
+       "sp-deletedcontributions-contribs": "dagiti kontribusion",
        "linksearch": "Dagiti panagbiruk ti ruar a silpo",
        "linksearch-pat": "Tabas ti panagbiruk:",
        "linksearch-ns": "Nagan ti espasio:",
        "linksearch-ok": "Biruken",
-       "linksearch-text": "Ti naataap a tarheta a kas ti \"*.wikipedia.org\" ket mabalin nga usaren.\nMasapul ti kangatuan a pagturayan, a kaspagarigan \"*.org\".<br />\n{{PLURAL:$2|Ti protokol|Dagiti protokol}} a nasuportaran: <code>$1</code> (naipakasigud ti http:// no awan ti protokol a nainaganan).",
-       "linksearch-line": "Ti $1 ket nakasilpo idiay $2",
-       "linksearch-error": "Ti naatap a tarheta ket agparang laeng iti panagrugi ti nagan ti agsangaili.",
+       "linksearch-text": "Ti naataap a tarheta a kas ti \"*.wikipedia.org\" ket mabalin nga usaren.\nMasapul ti saan a basbassit ngem kangatuan a dominio, kas pagarigan \"*.org\".<br />\n{{PLURAL:$2|Ti protokol|Dagiti protokol}} a nasuportaran: <code>$1</code> (kasisigud iti http:// no awan ti nainaganan a protokol).",
+       "linksearch-line": "Ti $1 ket naisilpo manipud ti $2",
+       "linksearch-error": "Ti naatap a tarheta ket mabalin nga agparang laeng iti rugi ti nagan ti agsangaili.",
        "listusersfrom": "Iparang dagiti agar-aramat a mangrugi iti:",
        "listusers-submit": "Ipakita",
        "listusers-noresult": "Awan ti nasarakan nga agar-aramat.",
        "listusers-blocked": "(naserraan)",
-       "activeusers": "Listaan dagiti nasiglat nga agar-aramat",
+       "activeusers": "Listaan dagiti aktibo nga agar-aramat",
        "activeusers-intro": "Daytoy ti listaan dagiti agar-aramat nga adda inararamidda kadagiti napalabas a $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}.",
-       "activeusers-count": "$1 {{PLURAL:$1|a tignay|tigtignay}} idi kalpasan ti {{PLURAL:$3|nga aldaw|$3 nga al-aldaw}}",
+       "activeusers-count": "$1 {{PLURAL:$1|a tignay|tigtignay}} iti napalabas {{PLURAL:$3|nga aldaw|$3 nga al-aldaw}}",
        "activeusers-from": "Iparang dagiti agar-aramat a mangrugi iti:",
        "activeusers-hidebots": "Ilemmeng dagiti bot",
        "activeusers-hidesysops": "Ilemmeng dagiti administrador",
        "activeusers-noresult": "Awan ti nasarakan nga agar-aramat.",
        "listgrouprights": "Dagiti karbengan ti grupo ti agar-aramat",
-       "listgrouprights-summary": "Dagiti sumaganad a listaan ti grupo ti agar-aramat a naipalawag iti daytoy a wiki, a nairaman dagiti karbengan ti panagserrekda.\nAdda pay mabalin nga [[{{MediaWiki:Listgrouprights-helppage}}|adu a pakaammo]] a maipapan kadagiti bukbukod a karbengan.",
-       "listgrouprights-key": "Sarita: \n* <span class=\"listgrouprights-granted\">Naited a karbengan</span> \n* <span class=\"listgrouprights-revoked\">Naukas a karbengan</span>",
+       "listgrouprights-summary": "Dagiti sumaganad a listaan ti grupo ti agar-aramat a naipalawag iti daytoy a wiki, a nairaman dagiti mainaig a karbengan ti panagserrekda.\nAdda pay mabalin nga [[{{MediaWiki:Listgrouprights-helppage}}|adu a pakaammo]] a maipanggep kadagiti kabukbuodan a karbengan.",
+       "listgrouprights-key": "Leyenda: \n* <span class=\"listgrouprights-granted\">Naited a karbengan</span> \n* <span class=\"listgrouprights-revoked\">Naukas a karbengan</span>",
        "listgrouprights-group": "Grupo",
        "listgrouprights-rights": "Dagiti karbengan",
        "listgrouprights-helppage": "Help:Dagiti karbengan ti grupo",
        "listgrouprights-members": "(listaan ti kamkameng)",
-       "listgrouprights-addgroup": "Agnayon ti {{PLURAL:$2|a grupo|kadagiti grupo}} : $1",
-       "listgrouprights-removegroup": "Aggikkat ti {{PLURAL:$2|a grupo|kadagiti grupo}}: $1",
+       "listgrouprights-addgroup": "Agnayon {{PLURAL:$2|iti grupo|kadagiti grupo}} : $1",
+       "listgrouprights-removegroup": "Aggikkat {{PLURAL:$2|iti grupo|kadagiti grupo}}: $1",
        "listgrouprights-addgroup-all": "Inayon amin dagiti grupo",
        "listgrouprights-removegroup-all": "Ikkatem amin dagiti grupo",
-       "listgrouprights-addgroup-self": "Agnayon ti {{PLURAL:$2|a grupo|kadagiti grupo}} iti bukod a pakabilangan: $1",
-       "listgrouprights-removegroup-self": "Agikkat ti {{PLURAL:$2|a grupo|kadagiti grupo}} manipud ti bukod a pakabilangan: $1",
+       "listgrouprights-addgroup-self": "Agnayon {{PLURAL:$2|iti grupo|kadagiti grupo}} iti bukod a pakabilangan: $1",
+       "listgrouprights-removegroup-self": "Agikkat {{PLURAL:$2|iti grupo|kadagiti grupo}} manipud ti bukod a pakabilangan: $1",
        "listgrouprights-addgroup-self-all": "Inayon amin dagiti grupo iti bukod a pakabilangan",
        "listgrouprights-removegroup-self-all": "Ikkatem amin dagiti grupo manipud ti bukod a pakabilangan",
        "listgrouprights-namespaceprotection-header": "Dagiti panangigawid ti nagan ti espasio",
        "post-expand-template-argument-category-desc": "Kalpasan ti panagpadakkel ti argumento ti plantilia (dagiti addaan iti tallo a pangrikep, kasla ti <code>{{{Foo}}}</code>), ti panid ket dakdakkel ngem ti <code>$wgMaxArticleSize</code>.",
        "expensive-parserfunction-category-desc": "Adu unay dagiti nangina nga annong ti parser (kasla ti <code>#ifexist</code>) a nairaman iti panid. Kitaen ti[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "broken-file-category-desc": "Kategoria a nainayon no ti panid ket aglaon ti nadadael a silpo ti papeles (ti silpo a panangisengngat ti papeles no awan ti papeles).",
-       "hidden-category-category-desc": "Daytoy ket kategoria nga addaan iti <code><nowiki>__HIDDENCAT__</nowiki></code> , a mangpawil daytoy nga agparang kadagiti silpo ti kahon ti kategoria kadagiti panid, bbabaen ti kasisigud.",
+       "hidden-category-category-desc": "Daytoy ket kategoria nga addaan iti <code><nowiki>__HIDDENCAT__</nowiki></code> , a mangpawil daytoy nga agparang kadagiti silpo ti kahon ti kategoria kadagiti panid, babaen ti kasisigud.",
        "trackingcategories-nodesc": "Awan ti magun-od a deskripsion.",
        "trackingcategories-disabled": "Nabaldado ti kategoria",
        "mailnologin": "Awan ti pagipatulodan a pagtaengan",
-       "mailnologintext": "Masapul a [[Special:UserLogin|nakastrekka]] ken adda umisu nga esurat a pagtaengan idiay [[Special:Preferences|kaykayatmo]] ti agipatulod ti esurat kadagiti sabsabali nga agar-aramat.",
+       "mailnologintext": "Masapul a [[Special:UserLogin|nakastrekka]] ken adda umisu nga esurat a pagtaengan idiay [[Special:Preferences|kaykayatam]] tapno makaipatulod iti esurat kadagiti sabali nga agar-aramat.",
        "emailuser": "Esuratan daytoy nga agar-aramat",
        "emailuser-title-target": "Esuratam daytoy nga {{GENDER:$1|agar-aramat}}",
        "emailuser-title-notarget": "Esuratan ti agar-aramat",
        "emailpage": "Esuratan ti agar-aramat",
-       "emailpagetext": "Mabalinmo nga usaren ti kinabuklan dita baba nga agipatulod ti e-surat a mensahe ti daytoy nga {{GENDER:$1|agar-aramat}}.\nTi e-surat nga inkabilmo idiay  [[Special:Preferences|kakaykayatam]] ket agparang a kas \"Naggapu\" a pagtaengan ti e-surat, tapno ti nagipatulodam ket makasungbat kenka.",
+       "emailpagetext": "Mabalinmo nga usaren ti porma dita baba tapno makaipatulod ti esurat a mensahe iti daytoy nga {{GENDER:$1|agar-aramat}}.\nTi esurat nga inkabilmo iti [[Special:Preferences|kakaykayatam]] ket agparang a kas \"Naggapu\" a pagtaengan ti esurat, tapno ti nagipatulodam ket makasungbat kenka.",
        "defemailsubject": "Esurat ti {{SITENAME}} a naggapo kenni \"$1\"",
        "usermaildisabled": "Saanmo a mabalin ti agipatulod ti esurat",
-       "usermaildisabledtext": "Saanmo a mabalin ti agipatulod ti esurat kadagiti sabali nga agar-aramat ditoy a wiki",
+       "usermaildisabledtext": "Saanmo a mabalin ti agipatulod ti esurat kadagiti sabali nga agar-aramat iti daytoy a wiki",
        "noemailtitle": "Awan ti esurat a pagtaengan",
        "noemailtext": "Ti agar-aramat ket saan a nanginagan ti umisu nga esurat a pagtaengan.",
        "nowikiemailtext": "Ti agar-aramat ket mabalinna ti agpili a saan nga umawat iti esurat kadagiti sabali nga agar-aramat.",
        "emailccsubject": "Kopia ti mensahem kenni $1: $2",
        "emailsent": "Naipatuloden ti esurat",
        "emailsenttext": "Naipatuloden ti esurat a mensahem.",
-       "emailuserfooter": "Daytoy nga esurat ket impatulod ni $1 kenni $2 iti \"Esurat\" a panagararamid idiay {{SITENAME}}",
-       "usermessage-summary": "Agibatbati ti mesahe iti sistema.",
-       "usermessage-editor": "Mensahero iti sistema",
+       "emailuserfooter": "Daytoy nga esurat ket impatulod babaen ni $1 kenni $2 iti \"Esurat\" nga annong iti {{SITENAME}}",
+       "usermessage-summary": "Pumanpanaw iti mesahe ti sistema.",
+       "usermessage-editor": "Mensahero ti sistema",
        "watchlist": "Bambantayan",
        "mywatchlist": "Bambantayan",
        "watchlistfor2": "Para iti $1 $2",
        "nowatchlist": "Awan ti banag iti listaan dagiti bambantayam.",
        "watchlistanontext": "Pangngaasim ti $1 tapno makitam dagiti inurnosmo dita bambantayam.",
        "watchnologin": "Saan a nakastrek",
-       "addwatch": "Inayon iti bambantayan",
+       "addwatch": "Inayon iti listaan ti bambantayan",
        "addedwatchtext": "Ti panid iti \"[[:$1]]\" ket nainayonen idiay [[Special:Watchlist|listaan ti bambantayam]].\nDagiti masakbayan a panagsukat iti daytoy a panid ken dagiti mainaig a tungtunganna a panid ket mailistanto idiay.",
        "addedwatchtext-short": "Ti panid ti \"$1\" ket nainayonen iti listaan ti bambantayam.",
-       "removewatch": "Ikkaten dita bambantayan",
+       "removewatch": "Ikkaten manipud ti listaan ti bambantayan",
        "removedwatchtext": "Daytoy a panid  \"[[:$1]]\" ket naikkat idiay [[Special:Watchlist|bambantayam]].",
        "removedwatchtext-short": "Ti panid ti \"$1\" ket naikkaten manipud ti listaan ti bambantayam.",
-       "watch": "bantayan",
+       "watch": "Bantayan",
        "watchthispage": "Bantayan daytoy a panid",
        "unwatch": "Saanen a bantayan",
        "unwatchthispage": "Isardeng a bantayan daytoy a panid",
        "notanarticle": "Saan a naglaon a panid",
-       "notvisiblerev": "Ti panagbalbaliw ti sabali nga agar-aramat ket naikkaten",
-       "watchlist-details": "{{PLURAL:$1|$1 panid|$1 dagiti panid}} a bambantayam, saan a naisina a mairaman dagiti panid ti tungtungan.",
+       "notvisiblerev": "Ti naudi a rebision babaen ti sabali nga agar-aramat ket naikkaten",
+       "watchlist-details": "{{PLURAL:$1|$1 a panid|$1 a pampanid}} iti listaan ti bambantayam, a saan a naisina a mairaman dagiti panid ti tungtungan.",
        "wlheader-enotif": "Napakabaelan ti panangipakaammo ti esurat.",
-       "wlheader-showupdated": "Dagiti panid a nasukatanen manipud ti kinaudi a panagsarungkarmo ket naipakita iti '''napuskol'''",
+       "wlheader-showupdated": "Dagiti panid a nasukatanen manipud ti kinaudi a panagsarungkarmo ket naipakita iti <strong>napuskol</strong>.",
        "wlnote2": "Dita baba ket dagiti binalbaliwan {{PLURAL:$1|iti napalabas nga oras|kadagiti napalabas a <strong>$1</strong> nga oras}}, manipud idi $2, $3.",
        "wlshowlast": "Ipakita dagiti naudi a $1 nga or-oras $2 nga al-aldaw $3",
        "watchlist-options": "Dagiti pagpilian ti listaan a bambantayan",
        "watching": "Bambantayan...",
        "unwatching": "Saanen a bantayan...",
-       "watcherrortext": "Adda nagkabiddut idi suksukatam ti kita ti bambantayam \"$1\".",
+       "watcherrortext": "Adda napasamak a biddut bayat a suksukatam dagiti pannakaisaad ti listaan ti bambantayam para iti \"$1\".",
        "enotif_reset": "Markaan amin a pampanid a kas nasarungkaran",
        "enotif_impersonal_salutation": "Agar-aramat ti {{SITENAME}}",
        "enotif_subject_deleted": "Ti {{SITENAME}} a panid ti $1 ket inikkat idin babaen ni {{gender:$2|$2}}",
-       "enotif_subject_created": "Ti {{SITENAME}} a panid ti $1 ket napartuat idin babaen ni {{gender:$2|$2}}",
-       "enotif_subject_moved": "Ti {{SITENAME}} panid ti $1 ket naiyalis idin babaen ni {{gender:$2|$2}}",
-       "enotif_subject_restored": "Ti {{SITENAME}} a panid ti $1 ket naipasubli idin babaen ni {{gender:$2|$2}}",
-       "enotif_subject_changed": "Ti {{SITENAME}} a panid ti $1 ket nasukatan idin babaen ni {{gender:$2|$2}}",
-       "enotif_body_intro_deleted": "Ti {{SITENAME}} a panid ti $1 ket {{GENDER:$2|naikkaten}} idiay $PAGEEDITDATE babaen ni $2, kitaen ti $3.",
-       "enotif_body_intro_created": "Ti {{SITENAME}} a panid ti $1 ket napartuat idin idiay $PAGEEDITDATE babaen ni {{gender:$2|$2}}, kitaen ti $3 para iti agdama panagbaliw.",
-       "enotif_body_intro_moved": "Ti {{SITENAME}} a panid ti $1 ket naiyalis idin idiay $PAGEEDITDATE babaen ni {{gender:$2|$2}}, kitaen ti $3 para iti agdama panagbaliw.",
-       "enotif_body_intro_restored": "Ti {{SITENAME}} a panid ti $1 ket naipasubli idi idiay $PAGEEDITDATE babaen ni {{gender:$2|$2}}, kitaen ti $3 para iti agdama panagbaliw.",
-       "enotif_body_intro_changed": "Ti {{SITENAME}} a panid ti $1 ket nasukatan idin idiay $PAGEEDITDATE babaen ni {{gender:$2|$2}}, kitaen ti $3 para iti agdama panagbaliw.",
+       "enotif_subject_created": "Ti {{SITENAME}} a panid ti $1 ket pinartuat idin babaen ni {{gender:$2|$2}}",
+       "enotif_subject_moved": "Ti {{SITENAME}} panid ti $1 ket inyalis idin babaen ni {{gender:$2|$2}}",
+       "enotif_subject_restored": "Ti {{SITENAME}} a panid ti $1 ket inpulang idin babaen ni {{gender:$2|$2}}",
+       "enotif_subject_changed": "Ti {{SITENAME}} a panid ti $1 ket sinukatan idin babaen ni {{gender:$2|$2}}",
+       "enotif_body_intro_deleted": "Ti {{SITENAME}} a panid ti $1 ket {{GENDER:$2|naikkat}} idi $PAGEEDITDATE babaen ni $2, kitaen ti $3.",
+       "enotif_body_intro_created": "Ti {{SITENAME}} a panid ti $1 ket napartuaten idi $PAGEEDITDATE babaen ni {{gender:$2|$2}}, kitaen ti $3 para iti agdama panagbaliw.",
+       "enotif_body_intro_moved": "Ti {{SITENAME}} a panid ti $1 ket naiyalisen idi $PAGEEDITDATE babaen ni {{gender:$2|$2}}, kitaen ti $3 para iti agdama panagbaliw.",
+       "enotif_body_intro_restored": "Ti {{SITENAME}} a panid ti $1 ket naipulangen idi $PAGEEDITDATE babaen ni {{gender:$2|$2}}, kitaen ti $3 para iti agdama panagbaliw.",
+       "enotif_body_intro_changed": "Ti {{SITENAME}} a panid ti $1 ket nasukatanen idi $PAGEEDITDATE babaen ni {{gender:$2|$2}}, kitaen ti $3 para iti agdama panagbaliw.",
        "enotif_lastvisited": "Kitaen ti $1 para iti am-amin a panagsukat sipud ti naudi nga isasarungkarmo.",
        "enotif_lastdiff": "Kitaen ti $1 tapno mabuya daytoy a panagsukat.",
        "enotif_anon_editor": "di am-ammo nga agar-aramat $1",
-       "enotif_body": "Nadungngo a $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nPakabuklan ti mannurat: $PAGESUMMARY $PAGEMINOREDIT\n\nKontaken ti mannurat:\nsurat: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nAwanton dagiti sabali a pakaammo iti kaso ti adu pay a panagtigtignay malaksid no sarungkaram datoy a panid bayat a nakastrekka. Mabalinmo pay nga iyasentar manen dagiti wagayway ti pakaammo para kadagiti amin a bambantayam a panid idiay listaan ti bambantayam.\n\nTi mannakigayyem a sistema ti panagpaammo ti {{SITENAME}} \n\n--\nTi panagsukat ti kasasaad ti esurat a pagpa-ammom, sarungkaram ti\n{{canonicalurl:{{#special:Preferences}}}}\n\nTi panagsukat kadagiti kasasaad ti bambantayam, sarungkaram ti\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nTi panag-ikkat ti panid kadagiti bambantayam, sarungkaram ti\n$UNWATCHURL\n\nTi makunkunam ken no masapulmo pay ti tulong:\n$HELPPAGE",
+       "enotif_body": "Nadungngo a $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nPakabuklan ti mannurat: $PAGESUMMARY $PAGEMINOREDIT\n\nKontaken ti mannurat:\nsurat: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nAwanton dagiti sabali a pakaammo iti kaso ti adu pay a panagtigtignay malaksid no sarungkaram datoy a panid bayat a nakastrekka. Mabalinmo pay nga isaad manen dagiti wagayway ti pakaammo para kadagiti amin a bambantayam a panid idiay listaan ti bambantayam.\n\nTi mannakigayyem a sistema ti panagpaammo ti {{SITENAME}} \n\n--\nTi panagsukat ti kasasaad ti esurat a pagpa-ammom, sarungkaram ti\n{{canonicalurl:{{#special:Preferences}}}}\n\nTi panagsukat kadagiti kasasaad ti listaan ti bambantayam, sarungkaram ti\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nTi panagikkat ti panid kadagiti listaan ti bambantayam, sarungkaram ti\n$UNWATCHURL\n\nTi makunkunam ken no masapulmo pay ti tulong:\n$HELPPAGE",
        "created": "naaramid",
        "changed": "nasukatan",
        "deletepage": "Ikkaten ti panid",
        "confirm": "Pasingkedan",
        "excontent": "ti linaon idi ket: '$1'",
-       "excontentauthor": "ti linaonna idi ket: \"$1\" (ken ti laeng nakaaramid idi ket ni \"[[Special:Contributions/$2|$2]]\")",
+       "excontentauthor": "ti linaonna idi ket: \"$1\" (ken ti laeng kontributor idi ket ni \"[[Special:Contributions/$2|$2]]\")",
        "exbeforeblank": "ti linaon sakbay idi nablanko ket: \"$1\"",
        "delete-confirm": "Ikkaten ti \"$1\"",
        "delete-legend": "Ikkaten",
-       "historywarning": "'''Ballaag: ''' Ti panid a kayatmo nga ikkaten ket adda pakasaritaanna ti agarup a $1 {{PLURAL:$1|a binaliwan|kadagiti binaliwan}}:",
-       "confirmdeletetext": "Ikkatemon ti maysa a panid agraman am-amin a pakasaritaanna.\nPangngaasim ta pasingkedam a talaga a kayatmo nga aramiden daytoy, a maawatam ti bunga ti panangikkatmo, ken aramidem daytoy kas maiyannugot iti [[{{MediaWiki:Policy-url}}|annuroten]].",
-       "actioncomplete": "Nalpasen a naaramid",
+       "historywarning": "<strong>Ballaag:</strong> Ti panid a kayatmo nga ikkaten ket adda pakasaritaanna ti agarup a $1 {{PLURAL:$1|a rebision|kadagiti rebision}}:",
+       "confirmdeletetext": "Mangrugrugika a mangikkat ti maysa a panid a kakuyogna amin ti pakasaritaanna.\nPangngaasi a pasingkedam a talaga a kayatmo nga aramiden daytoy, a maawatam ti bunga ti panangikkatmo, ken aramidem daytoy kas maiyannugot iti [[{{MediaWiki:Policy-url}}|annuroten]].",
+       "actioncomplete": "Nalpasen ti aramid",
        "actionfailed": "Napaay ti aramid",
-       "deletedtext": "Naikkaten ti \"$1\".\nKitaen ti $2 para iti pannakrehistro dagiti naudi a naikkat.",
+       "deletedtext": "Naikkaten ti \"$1\".\nKitaen ti $2 para iti pannakairehistro dagiti naudi a pangikkat.",
        "dellogpage": "Listaan ti panagikkat",
        "dellogpagetext": "Adda dita baba ti listaan dagiti kaudian a panangikkat.",
        "deletionlog": "listaan ti panagikkat",
-       "reverted": "Naisubli iti immuna a panagbalbaliw",
+       "reverted": "Naisubli iti nasapsapa a rebision",
        "deletecomment": "Rason:",
        "deleteotherreason": "Sabali/maipatinayon a rason:",
        "deletereasonotherlist": "Sabali a rason",
-       "deletereason-dropdown": "* Kadawyan a rasrason ti panagikkat\n** Spam\n** Bandalismo\n** Panaglabsing iti karbengan ti panagipablaak\n** Kiddaw ti mannurat\n** Naputed a baw-ing",
+       "deletereason-dropdown": "* Kadawyan a rasrason ti panagikkat\n** Spam\n** Bandalismo\n** Panaglabsing iti karbengan ti kopia\n** Kiddaw ti mannurat\n** Naputed a baw-ing",
        "delete-edit-reasonlist": "Urnosen dagiti rason ti panagikkat",
        "delete-toobig": "Daytoy a panid ket dakkel ti pakasaritaanna, sumurok a  $1 {{PLURAL:a panagbaliwan|dagiti panagbaliwan}}.\nTi panagikkat ti kastoy a pammpanid ket naparitan tapno mapawilan ti saan nga inkarkaro a pannakadadael ti {{SITENAME}}.",
        "delete-warning-toobig": "Daytoy a panid ket adda ti dakkel unay a pakasaritaan ti panag-urnos, ti kaadu nga $1 {{PLURAL:$1|panagbaliw|dagiti panagbaliw}}.\nTi panagikkat ket madisturbo ti panagpataray ti database ti {{SITNAME}};\nagal-aluadka a mangrugi.",
        "rollback": "Isubli dagiti panag-urnos",
        "rollback_short": "Isubli",
        "rollbacklink": "isubli",
-       "rollbacklinkcount": "agisubli ti $1 {{PLURAL:$1|nga inurnos|nga inururnos}}",
-       "rollbacklinkcount-morethan": "agisubli ti ad-adu ngem $1 {{PLURAL:$1|nga inurnos|nga inururnos}}",
+       "rollbacklinkcount": "agisubli ti $1 {{PLURAL:$1|nga inurnos|nga inur-urnos}}",
+       "rollbacklinkcount-morethan": "agisubli ti ad-adu ngem $1 {{PLURAL:$1|nga inurnos|nga inur-urnos}}",
        "rollbackfailed": "Napaay ti panangisubli",
-       "cantrollback": "Saan a maisubli ti panagurnos;\nti naudi a nakaaramid ket iti laeng nagsurat daytoy a panid..",
+       "cantrollback": "Saan a maisubli ti panagurnos;\nti naudi a nakaaramid ket iti laeng nagsurat iti daytoy a panid.",
        "alreadyrolled": "Saan a maipasubli ti kinaudi a panagurnos iti [[:$1]] babaen ni [[User:$2|$2]] ([[User talk:$2|tungtungan]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nadda sabali a naurnos wenno nagipasubli ti panid.\n\nTi kinaudi a panagurnos ti daytoy a panid ket babaen ni [[User:$3|$3]] ([[User talk:$3|tungtungan]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-       "editcomment": "Ti panagurnos a pakabuklan idi ket: \"''$1''\".",
-       "revertpage": "Insubli ti panagurnos babaen ni [[Special:Contributions/$2|$2]] ([[User talk:$2|tungtungan]]), naisubli ti kinaudi a panagbaliw babaen ni [[User:$1|$1]]",
-       "revertpage-nouser": "Naisubli dagiti inurnos babaen ti nailemmeng nga agar-aramat iti kinaudi a panagbalbaliw babaen ni {{GENDER:$1|[[User:$1|$1]]}}",
-       "rollback-success": "Naibabawi dagiti panag-urnos babaen ni $1;\nnaisubli manen ti naudi a panagbaliw babaen ni $2.",
-       "sessionfailure-title": "Napaay ti gimong",
-       "sessionfailure": "Adda parikut ti gimong ti panagserrekmo;\ndaytoy nga aramid ket naibabawi a kas pagpawilan ti panaghijack ti gimong.\nAgsubli ka ti naggapuam a panid, ikargam ti panid ken padasem manen.",
+       "editcomment": "Ti pakabuklan ti panag-urnos idi ket: \"''$1''\".",
+       "revertpage": "Insubli ti panag-urnos babaen ni [[Special:Contributions/$2|$2]] ([[User talk:$2|tungtungan]]), naisubli ti kinaudi a rebision babaen ni [[User:$1|$1]]",
+       "revertpage-nouser": "Naisubli dagiti inurnos babaen ti nailemmeng nga agar-aramat iti kinaudi a rebision babaen ni {{GENDER:$1|[[User:$1|$1]]}}",
+       "rollback-success": "Naibabawi dagiti panag-urnos babaen ni $1;\nnaisubli manen ti naudi a rebision babaen ni $2.",
+       "sessionfailure-title": "Napaay ti sesion",
+       "sessionfailure": "Adda parikut ti sesion ti panagserrekmo;\ndaytoy nga aramid ket naibabawi a kas pagpawilan ti panaghijack ti sesion.\nAgsublika iti naggapuam a panid, ikargam manen ti panid ken padasen manen.",
        "protectlogpage": "Listaan ti panagsalaknib",
        "protectlogtext": "Dita baba ket adda listaan dagiti sinukatan a salaknib ti panid.\nKitaen ti [[Special:ProtectedPages|listaan kadagiti nasalakniban a panid]] ti listaan kadagiti agdama a panagpataray a panagsalaknib ti panid.",
        "protectedarticle": "nasalakniban ti \"[[$1]]\"",
        "modifiedarticleprotection": "nasukatan ti agpang ti salaknib para iti \"[[$1]]\"",
-       "unprotectedarticle": "naikkat ti salaknib ti \"[[$1]]\"",
-       "movedarticleprotection": "iyalis ti kasasaad ti salaknib manipud iti \"[[$2]]\" idiay \"[[$1]]\"",
+       "unprotectedarticle": "naikkat ti salaknib manipud ti \"[[$1]]\"",
+       "movedarticleprotection": "iyalis ti kasasaad ti salaknib manipud ti \"[[$2]]\" iti \"[[$1]]\"",
        "protect-title": "Sukatan ti agpang ti salaknib para iti \"$1\"",
        "protect-title-notallowed": "Kitaen ti agpang ti salaknib ti \"$1\"",
        "prot_1movedto2": "[[$1]] naiyalis iti [[$2]]",
        "protect-badnamespace-title": "Saan a mabalin a salakniban a nagan ti espasio",
-       "protect-badnamespace-text": "Dagiti panid ditoy a nagan ti espasio ket saan a mabalin a masalakniban.",
-       "protect-norestrictiontypes-text": "Daytoy a panid ket saan a mabalin a masalakniban gaputa awan dagiti maiparit a kita a magun-od.",
+       "protect-badnamespace-text": "Dagiti panid iti daytoy a nagan ti espasio ket saan a mabalin a masalakniban.",
+       "protect-norestrictiontypes-text": "Daytoy a panid ket saan a mabalin a masalakniban gapu ta awan dagiti magun-od a kita ti panangigawid.",
        "protect-norestrictiontypes-title": "Di masalakniban a panid",
        "protect-legend": "Pasingkedan ti panagsalaknib",
        "protectcomment": "Rason:",
        "protect_expiry_invalid": "Imbalido ti oras a panagpaso.",
        "protect_expiry_old": "Napalabasen ti oras ti panagpaso.",
        "protect-unchain-permissions": "Lukatan dagiti pagpilian ti salaknib",
-       "protect-text": "Mabalinmo a kitaen ken sukatan ti agpang ti salaknib para iti panid ti '''$1'''.",
-       "protect-locked-blocked": "Saanmo a mabalin a sukatan dagiti kita ti salaknib no naserraanka.\nAdda ditoy kadagiti agdama a kasasaad ti panid '''$1''':",
-       "protect-locked-dblock": "Ti kita ti salaknib ket saan a masukatan gapu ti agdama a kandado ti database.\nAdda ditoy kadagiti agdama a kasasaad ti panid '''$1''':",
-       "protect-locked-access": "Awan ti pammalubos ti pakabilangam a mangsukat kadagiti lessaad ti salaknib ti panid.\nDagitoy dagiti agdama a kasasaad ti panid a '''$1''':",
-       "protect-cascadeon": "Daytoy a panid ket agdama a nasalakniban gapu ta nairaman kadagiti sumaganad a {{PLURAL:$1|panid, nga addaan|pampanid, nga addaan}} iti sipapakat a salaknib a sariap.\nDagiti panagbaliw iti agpang ti salaknib iti daytoy a panid ket saan a mabanagan ti salaknib a sariap.",
+       "protect-text": "Mabalinmo a kitaen ken sukatan ti agpang ti salaknib para iti panid ti <strong>$1</strong>.",
+       "protect-locked-blocked": "Saanmo a mabalin a sukatan dagiti kita ti salaknib no naserraanka.\nAdda ditoy kadagiti agdama a kasasaad ti panid ti <strong>$1</strong>:",
+       "protect-locked-dblock": "Ti kita ti salaknib ket saan a masukatan gapu ti agdama a kandado ti database.\nAdda ditoy kadagiti agdama a kasasaad ti panid ti <strong>$1</strong>:",
+       "protect-locked-access": "Ti pakabilangam ket awan pammalubosna a mangsukat kadagiti agpang ti salaknib ti panid.\nDagitoy ti agdama a pannakaisaad para iti panid ti <strong>$1</strong>:",
+       "protect-cascadeon": "Daytoy a panid ket agdama a nasalakniban gapu ta nairaman kadagiti sumaganad a {{PLURAL:$1|panid, nga addaan|pampanid, nga addaan}} iti nalukatan a salaknib ti sariap.\nDagiti panagbaliw iti agpang ti salaknib iti daytoy a panid ket saan a mabanagan ti salaknib ti sariap.",
        "protect-default": "Palubosan amin nga agar-aramat",
        "protect-fallback": "Palubosan laeng dagiti agar-aramat nga adda iti \"$1\" a pammalubos",
        "protect-level-autoconfirmed": "Palubosan laeng dagiti automatiko a napasingkedan nga agar-aramat",
        "protect-existing-expiry": "Ti adda a panagpaso ti oras: $3, $2",
        "protect-otherreason": "Sabali/maipatinayon a rason:",
        "protect-otherreason-op": "Sabali a rason",
-       "protect-dropdown": "*Kadawyan a rasrason ti panagsalaknib\n** Adu unay a bandalismo\n** Adu unay a panagspam\n** Saan a produktibo ti kasinnungat a panag-urnos\n** Adu unay nga agbuybuya ti panid",
+       "protect-dropdown": "*Kadawyan a rasrason ti panagsalaknib\n** Adu unay a bandalismo\n** Adu unay a panagspam\n** Saan a produktibo ti agsinnungat a panag-urnos\n** Adu unay nga agbuybuya iti panid",
        "protect-edit-reasonlist": "Urnosen dagiti rason ti salaknib",
        "protect-expiry-options": "1 nga oras:1 hour,1 nga aldaw:1 day,1 a lawas:1 week,2 a lawas:2 weeks,1 a bulan:1 month,3 a bulan:3 months,6 a bulan:6 months,1 a tawen:1 year,awan inggana:infinite",
        "restriction-type": "Pammalubos:",
-       "restriction-level": "Agpang ti pannakaiparit:",
-       "minimum-size": "Kinababa a kadakkel:",
-       "maximum-size": "Kinangato a kadakkel:",
+       "restriction-level": "Agpang ti panangigawid:",
+       "minimum-size": "Kababaan a kadakkel:",
+       "maximum-size": "Kangatuan a kadakkel:",
        "pagesize": "(dagiti byte)",
        "restriction-edit": "Urnosen",
        "restriction-move": "Iyalis",
-       "restriction-create": "Aramiden",
-       "restriction-upload": "Pang-ipan",
+       "restriction-create": "Agpartuat",
+       "restriction-upload": "Agikarga",
        "restriction-level-sysop": "napno a nasalakniban",
        "restriction-level-autoconfirmed": "nasalakniban bassit",
        "restriction-level-all": "aniaman nga agpang",
        "undelete": "Kitaen dagiti naikkat a panid",
        "undeletepage": "Kitaen ken isubli dagiti naikkat a panid",
-       "undeletepagetitle": "'''Ti sumaganad ket buklen dagiti naikkat a panagbaliw ni [[:$1|$1]]'''.",
+       "undeletepagetitle": "<strong>Ti sumaganad ket buklen dagiti naikkat a rebision ti [[:$1|$1]]</strong>.",
        "viewdeletedpage": "Kitaen dagiti naikkat a panid",
        "undeletepagetext": "Ti sumaganad a {{PLURAL:$1|panid ket naikkaten ngem|$1 pampanid ket naikkaten ngem}} adda pay naarkibo ken mabalin pay a maipasubli .\nTi arkibo ket mabalin a sagpaminsan a madalusan.",
-       "undelete-fieldset-title": "Ipasubli dagiti binaliwan",
-       "undeleteextrahelp": "Tapno maipasubli ti intero a pakasaritaan ti panid, ibatim a saan nga nakur-itan dagita kahon ken ipindut ti '''''{{int:undeletebtn}}'''''.\nTi agaramid ti napilian a panagisubli, ikur-it dagita napilim kadagiti kahon ti kayatmo nga ipasubli, ken ipindut ti '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|a binalbaliwan|kadagiti binalbaliwan}} ti nailebben",
-       "undeletehistory": "No ipasublim daytoy a panid, amin dagiti pinagbaliwan ket maipasubli idiay pakasaritaan.\nKet no adda baro a panid a kanagnagan na a naaramid ti napalabas a pinagikkat, dagiti naipasubli a pinagbaliwan ket agparang idiay napalabas a pakasaritaan.",
-       "undeleterevdel": "Ti panagikkat ket saan a maaramid no agbanag iti rabaw ti panid, wenno ti pinagbaliwan ti papeles ket maikkatan ti bassit.\nIti kastoy a kaso, masapul nga ikkatem ti kur-it wenno ikkatem ti lemmeng dagiti kabarbaro a naikkat a binalbaliwan.",
-       "undeletehistorynoadmin": "Daytoy a panid ket naikkaten.\nTi rason ti panagikkat ket naipakita ti pakabuklan dita baba, ken dagita dsalaysay ti agar-aramat a nagpabaliw ditoy a panid sakbay a naikkat.\nTi husto a testo ti nabaliwan a panagbaliw ket adda kadagiti administrador laeng.",
-       "undelete-revision": "Naikkat ti binaliwan a $1 (manipud idi $4, idi $5) babaen ni $3:",
-       "undeleterevision-missing": "Imbalido wenno napukaw a panagbaliw.\nAddaanka ngata ti madi a silpo, wenno ti panagbaliw ket naipasubli wenno naikkat manipud idiay nailebbeng.",
-       "undelete-nodiff": "Awan ti nasarakan kadagiti dati a nabalbaliwan.",
+       "undelete-fieldset-title": "Ipasubli dagiti rebision",
+       "undeleteextrahelp": "Tapno maipasubli ti intero a pakasaritaan ti panid, ibatim a saan nga nakur-itan dagita kahon ken pinduten ti '''''{{int:undeletebtn}}'''''.\nTi agaramid ti napilian a panagisubli, ikur-it dagita napilim kadagiti kahon ti kayatmo nga ipasubli, ken pinduten ti '''''{{int:undeletebtn}}'''''.",
+       "undeleterevisions": "$1 {{PLURAL:$1|a rebision|kadagiti rebision}} ti naarkibo",
+       "undeletehistory": "No ipasublim daytoy a panid, amin dagiti rebision ket maipasubli iti pakasaritaan.\nKet no adda baro a panid a kanagnaganna a naaramid ti napalabas a panagikkat, dagiti naipasubli a rebision ket agparang iti napalabas a pakasaritaan.",
+       "undeleterevdel": "Ti panagikkat ket saan a maaramid no agbanag iti rabaw ti panid, wenno ti rebision ti papeles ket maikkatan ti bassit.\nIti kastoy a kaso, masapul nga ikkatem ti kur-it wenno ikkatem ti lemmeng dagiti kabarbaro a naikkat a rebision.",
+       "undeletehistorynoadmin": "Daytoy a panid ket naikkaten.\nTi rason ti panagikkat ket naipakita iti pakabuklan dita baba, ken dagita a salaysay ti agar-aramat a nagurnos iti daytoy a panid sakbay a naikkat.\nTi husto a testo dagitoy a naikat a rebision ket magun-od laeng dagiti administrador.",
+       "undelete-revision": "Naikkat ti rebision ti $1 (manipud idi $4, $5) babaen ni $3:",
+       "undeleterevision-missing": "Imbalido wenno napukaw a rebision.\nAddaanka ngata ti madi a silpo, wenno ti rebision ket mabalin a naipasubli wenno naikkat manipud ti arkibo.",
+       "undelete-nodiff": "Awan ti nasarakan kadagiti dati a rebision.",
        "undeletebtn": "Isubli",
        "undeletelink": "kitaen/isubli",
        "undeleteviewlink": "kitaen",
        "undeleteinvert": "Baliktaden ti napili",
        "undeletecomment": "Rason:",
-       "undeletedrevisions": "{{PLURAL:$1|1 a  binaliwan|dagiti $1 a binaliwan}} ti naisubli",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 a binaliwan|dagiti $1 a binaliwan}} ken {{PLURAL:$2|1 a papeles|dagiti $2 a papeles}} ti naisubli",
+       "undeletedrevisions": "{{PLURAL:$1|1 a rebision|dagiti $1 a rebision}} ti naisubli",
+       "undeletedrevisions-files": "{{PLURAL:$1|1 a rebision|dagiti $1 a rebision}} ken {{PLURAL:$2|1 a papeles|dagiti $2 a papeles}} ti naisubli",
        "undeletedfiles": "{{PLURAL:$1|1 a papeles|dagiti $1 a papeles}} ti naisubli",
-       "cannotundelete": "Napaay ti panagikkat:\n$1",
-       "undeletedpage": "'''Naisublin ti $1'''\n\nBinsiren ti [[Special:Log/delete|listaan ti naik-ikkat]] para iti listaan dagiti naudi a naik-ikkat ken naisubsubli.",
-       "undelete-header": "Kitaen [[Special:Log/delete|ti listaan ti pinagikkat]] kadagiti kinaudian a naikkat a panid.",
+       "cannotundelete": "Napaay ti panagisubli iti panagikkat:\n$1",
+       "undeletedpage": "<strong>Naisublin ti $1</strong>\n\nBinsiren ti [[Special:Log/delete|listaan ti panagikkat]] para iti rehistro dagiti kaudian panagikkat ken naisubsubli.",
+       "undelete-header": "Kitaen [[Special:Log/delete|ti listaan ti panagikkat]] kadagiti kaudian a naikkat a panid.",
        "undelete-search-title": "Biruken dagiti naikkat a panid",
        "undelete-search-box": "Biruken dagiti naikkat a panid",
        "undelete-search-prefix": "Ipakita dagiti panid a mangrugi iti:",
        "undelete-search-submit": "Biruken",
-       "undelete-no-results": "Awan dagiti kapada ti panid a nasarakan idiay lebben ti panagikkat.",
-       "undelete-filename-mismatch": "Saan maisubli ti panagikkat ti pinagbaliwan ti papeles nga adda oras ket petsana a $1: Saan nga agpada ti nagan ti papeles.",
-       "undelete-bad-store-key": "Saan a maisubli ti pinagikkat ti pinagbaliwan ti papeles nga adda oras ket petsana a $1: Ti papeles ket napukaw sakbay a naikkat.",
-       "undelete-cleanup-error": "Biddut ti panagikkat ti saan a naus-usar a naidulin a papeles \"$1\".",
-       "undelete-missing-filearchive": "Saan a naipabalin ti panagisubli ti ID ti papeles a nailebben $1 ngamin ket awan idiay database.\nMabalin daytoy a naikkaten.",
-       "undelete-error": "Ballaag ti panagisubli ti panagikkat ti panid",
-       "undelete-error-short": "Biddut ti pannakaikkat ti papeles: $1",
-       "undelete-error-long": "Adda nasarakan a biddut idi panagisubli ti panagikkat ti papeles:\n\n$1",
-       "undelete-show-file-confirm": "Sigurado a kayatmo ti mangkita ti naikkat a panagbaliw ti papeles \"<nowiki>$1</nowiki>\" manipud idi $2 idi $3?",
+       "undelete-no-results": "Awan dagiti kapada ti panid a nasarakan idiay arkibo ti panagikkat.",
+       "undelete-filename-mismatch": "Saan maisubli ti panagikkat ti rebision ti papeles nga adda oras ket petsana a $1: Saan nga agpada ti nagan ti papeles.",
+       "undelete-bad-store-key": "Saan a maisubli ti pinagikkat ti rebision ti papeles nga adda oras ket petsana a $1: Ti papeles ket napukaw sakbay a naikkat.",
+       "undelete-cleanup-error": "Biddut ti panagikkat ti saan a naus-usar a naarkibo a papeles ti \"$1\".",
+       "undelete-missing-filearchive": "Saan a naipasubli ti ID ti arkibo ti papeles ti $1 ngamin ket awan idiay database.\nMabalin naikkaten daytoy.",
+       "undelete-error": "Biddut ti panagisubli ti panagikkat ti panid",
+       "undelete-error-short": "Biddut ti panagisubli ti pannakaikkat ti papeles: $1",
+       "undelete-error-long": "Adda dagiti nasarakan a biddut bayat ti panagisubli ti panagikkat ti papeles:\n\n$1",
+       "undelete-show-file-confirm": "Sigurado a kayatmo ti mangkita ti naikkat a rebision ti papeles \"<nowiki>$1</nowiki>\" manipud idi $2, $3?",
        "undelete-show-file-submit": "Wen",
        "namespace": "Nagan ti espasio:",
        "invert": "Baliktaden ti napili",
        "tooltip-invert": "Ikur-it daytoy a kahon ti panagilemmeng kadagiti sinukatan a panid iti uneg ti napili a nagan ti espasio (ken ti nairaman a nagan ti espasio no naikur-it)",
-       "namespace_association": "Nairaman a nagan ti espasio",
-       "tooltip-namespace_association": "Ikur-it daytoy a kahon ti panagiraman ti kapatangan wenno suheto ti nagan ti espasio a nairaman kadagiti napili a nagan ti espasio.",
+       "namespace_association": "Mainaig a nagan ti espasio",
+       "tooltip-namespace_association": "Ikur-it daytoy a kahon ti panagiraman ti tungtungan wenno suheto ti nagan ti espasio a nairaman kadagiti napili a nagan ti espasio",
        "blanknamespace": "(Umuna)",
-       "contributions": "Naar-aramid ti {{GENDER:$1|Agar-aramat}}",
-       "contributions-title": "Inar-aramid ti agar-aramat para kenni $1",
-       "mycontris": "Naar-aramid",
+       "contributions": "Dagiti kontribusion ti {{GENDER:$1|agar-aramat}}",
+       "contributions-title": "Kontribusion ti agar-aramat para kenni $1",
+       "mycontris": "Inar-aramid",
        "contribsub2": "Para kenni {{GENDER:$3|$1}} ($2)",
-       "contributions-userdoesnotexist": "Ti pakabilangan ti agar-aramat \"$1\" ket saan a nakarehistro.",
-       "nocontribs": "Awan ti nasarakan a nasukatan a kapada daytoy a kita.",
+       "contributions-userdoesnotexist": "Ti pakabilangan ti agar-aramat ni \"$1\" ket saan a nakarehistro.",
+       "nocontribs": "Awan ti nasarakan a nasukatan a kapada dagitoy a kriteria.",
        "uctop": "(agdama)",
-       "month": "Manipud iti bulan ti (ken nasapsapa pay):",
-       "year": "Manipud iti tawen (ken nasapsapa pay):",
-       "sp-contributions-newbies": "Iparang dagiti inar-aramid dagiti kabarbaro a pakabilangan laeng",
+       "month": "Manipud ti bulan (ken nasapsapa):",
+       "year": "Manipud ti tawen (ken nasapsapa):",
+       "sp-contributions-newbies": "Iparang dagiti kontribusion dagiti kabarbaro a pakabilangan laeng",
        "sp-contributions-newbies-sub": "Para kadagiti kabarbaro a pakabilangan",
-       "sp-contributions-newbies-title": "Dagiti inar-aramid ti agar-aramat iti baro a pakabilangan",
-       "sp-contributions-blocklog": "listaan ti naserraan",
+       "sp-contributions-newbies-title": "Dagiti kontribusion para kadagiti baro a pakabilangan",
+       "sp-contributions-blocklog": "listaan ti serra",
        "sp-contributions-suppresslog": "pasardengen dagiti kontribusion ti agar-aramat",
-       "sp-contributions-deleted": "dagiti naikkat nga inar-aramid ti agar-aramat",
-       "sp-contributions-uploads": "dagiti pang-ipan",
-       "sp-contributions-logs": "listaan",
+       "sp-contributions-deleted": "dagiti naikkat a kontribusion ti agar-aramat",
+       "sp-contributions-uploads": "dagiti naikarga",
+       "sp-contributions-logs": "dagiti listaan",
        "sp-contributions-talk": "tungtungan",
        "sp-contributions-userrights": "panagtaripato kadagiti karbengan ti agar-aramat",
-       "sp-contributions-blocked-notice": "Naserraan tatta daytoy nga agar-aramat.\nTi naudi a listaan ti pannakaserra ket adda dita baba tapno mausar a reperensia:",
-       "sp-contributions-blocked-notice-anon": "Daytoy nga IP a pagtaengan ket naserraan.\nTi naudi a listaan ti pannakaserra ket adda dita baba tapno mausar a reperensia:",
-       "sp-contributions-search": "Agsapul para kadagiti naar-aramid",
+       "sp-contributions-blocked-notice": "Adama a naserraan daytoy nga agar-aramat.\nTi naudi a naikabil iti listaan ti pannakaserra ket naited dita baba para iti reperensia:",
+       "sp-contributions-blocked-notice-anon": "Daytoy nga IP a pagtaengan ket agdama a naserraan.\nTi naudi a naikabil iti listaan ti pannakaserra ket adda dita baba para iti reperensia:",
+       "sp-contributions-search": "Agbiruk para kadagiti kontribusion",
        "sp-contributions-username": "IP a pagtaengan wenno nagan ti agar-aramat:",
-       "sp-contributions-toponly": "Ipakita laeng dagiti inurnos a kinaudian a panagbaliw",
+       "sp-contributions-toponly": "Ipakita laeng dagiti inurnos dagiti kaudian a rebision",
        "sp-contributions-newonly": "Ipakita laeng dagiti inurnos a pannakapartuat ti pampanid",
        "sp-contributions-submit": "Biruken",
        "whatlinkshere": "Dagiti nakasilpo ditoy",
        "whatlinkshere-title": "Pampanid a nakasilpo iti \"$1\"",
        "whatlinkshere-page": "Panid:",
-       "linkshere": "Dagiti sumaganad a panid ket nakasilpo iti '''[[:$1]]''':",
-       "nolinkshere": "Awan ti pampanid a nakasilpo iti '''[[:$1]]'''.",
-       "nolinkshere-ns": "Awan ti pampanid a nakasilpo idiay '''[[:$1]]''' iti napili a nagan ti espasio.",
+       "linkshere": "Dagiti sumaganad a panid ket nakasilpo iti <strong>[[:$1]]</strong>:",
+       "nolinkshere": "Awan ti pampanid a nakasilpo iti <strong>[[:$1]]</strong>.",
+       "nolinkshere-ns": "Awan ti pampanid a nakasilpo iti <strong>[[:$1]]</strong> iti napili a nagan ti espasio.",
        "isredirect": "baw-ing a panid",
        "istemplate": "mailak-am",
        "isimage": "silpo ti papeles",
        "whatlinkshere-next": "{{PLURAL:$1|sumaruno|sumaruno a $1}}",
        "whatlinkshere-links": "← silsilpo",
        "whatlinkshere-hideredirs": "$1 dagiti baw-ing",
-       "whatlinkshere-hidetrans": "$1 dagiti mailaklak-am",
+       "whatlinkshere-hidetrans": "$1 dagiti mailak-am",
        "whatlinkshere-hidelinks": "$1 dagiti silpo",
-       "whatlinkshere-hideimages": "$1 a silsilpo ti papeles",
+       "whatlinkshere-hideimages": "$1 dagiti silpo ti papeles",
        "whatlinkshere-filters": "Dagiti sagat",
        "autoblockid": "Auto a panagserra #$1",
        "block": "Seraan ti agar-aramat",
        "unblock": "Ikkaten ti serra ti agar-aramat",
        "blockip": "Serraan ti agar-aramat",
        "blockip-legend": "Serraan ti agar-aramat",
-       "blockiptext": "Usaren ti kinabuklan dita baba tapno maserraan ti panagsurat manipud iti naisangayan nga IP a pagtaengan wenno nagan ti agar-aramat.\nUsaren laeng daytoy tapno pawilan ti bandalismo, ken panagtunos iti [[{{MediaWiki:Policy-url}}|annuroten]].\nIkkan ti naisangayan a rason dita baba (kas pagarigan, dakamaten ti maysa a panid a na-bandalismo) .",
+       "blockiptext": "Usaren ti porma dita baba tapno maserraan ti panagsurat manipud iti naisangayan nga IP a pagtaengan wenno nagan ti agar-aramat.\nUsaren laeng daytoy tapno pawilan ti bandalismo, ken panagtunos iti [[{{MediaWiki:Policy-url}}|annuroten]].\nIkkan ti naisangayan a rason dita baba (kas pagarigan, dakamaten ti maysa a panid a na-bandalismo) .",
        "ipaddressorusername": "IP a pagtaengan wenno nagan ti agar-aramat:",
        "ipbexpiry": "Agpaso:",
        "ipbreason": "Rason:",
-       "ipbreason-dropdown": "*Dagiti kadawyan a rason ti panagserra\n** Agikabil kadagiti  madi a pakaammo\n** Agikkat kadagiti linaon ti pampanid\n** Agikabil ti spam a silpo iti ruar\n** Agikabil ti minamaag/saan a maawatan a pampanid\n** Nabutbuteng a panagkukua /agriribok\n** Agab-abuso kadagiti sabsabali a pakabilangan\n** Saan a maawat a nagan ti agar-aramat",
-       "ipb-hardblock": "Iparit kadagiti nakastrek nga agar-aramat manipud ti panagurnos manipud ti naggapo ditoy nga IP a pagtaengan",
+       "ipbreason-dropdown": "*Dagiti kadawyan a rason ti panagserra\n** Agikabil kadagiti  madi a pakaammo\n** Agikkat kadagiti linaon ti pampanid\n** Agikabil ti spam a silpo iti ruar\n** Agikabil ti minamaag/saan a maawatan a pampanid\n** Mangbutbuteng a panagkukua /mangriribok\n** Agab-abuso kadagiti nadumaduma a pakabilangan\n** Saan a maawat a nagan ti agar-aramat",
+       "ipb-hardblock": "Iparit dagiti nakastrek nga agar-aramat manipud ti panagurnos manipud ti daytoy nga IP a pagtaengan",
        "ipbcreateaccount": "Pawilan ti panagpartuat iti pakabilangan",
        "ipbemailban": "Pawilan ti agar-aramat nga agipatulod ti esurat",
-       "ipbenableautoblock": "Automatiko ti serra ti naudi nga IP a pagtaengan nga inusar daytoy nga agar-aramat, ken dagiti sumaruno nga IP a pagtaengan a padasenda nga agpabaliw",
+       "ipbenableautoblock": "Automatiko a mangserra ti naudi nga IP a pagtaengan nga inusar daytoy nga agar-aramat, ken dagiti sumaruno nga IP a pagtaengan nga ayan ti pangipadasanda nga agurnos",
        "ipbsubmit": "Serraan daytoy nga agar-aramat",
        "ipbother": "Sabali nga oras:",
        "ipboptions": "2 nga oras:2 hours,1 nga aldaw:1 day,3 nga aldaw:3 days,1 a lawas:1 week,2 a lawas:2 weeks,1 a bulan:1 month,3 a bulan:3 months,6 a bulan:6 months,1 a tawen:1 year,awan inggana:infinite",
        "ipbhidename": "Ilemmeng ti nagan ti agar-aramat kadagiti listaan ken inurnos",
        "ipbwatchuser": "Bantayan ti panid ti agar-ramat ken panid ti tungtungan daytoy nga agar-aramat",
-       "ipb-disableusertalk": "Pawilan daytoy nga agar-aramat nga agurnos kadagiti bukodda a tungtungan a panid no naserraan",
-       "ipb-change-block": "Serraan manen ti agar-aramat kadagitoy a disso",
+       "ipb-disableusertalk": "Pawilan daytoy nga agar-aramat nga agurnos kadagiti bukodda a tungtungan a panid bayat a naserraan",
+       "ipb-change-block": "Serraan manen ti agar-aramat kadagitoy a pannakaisaad",
        "ipb-confirm": "Pasingkedan ti serra",
        "badipaddress": "Imbalido nga IP a pagtaengan",
        "blockipsuccesssub": "Balligi ti panangserra",
-       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] ket naserraanen.<br />\nKitaen ti [[Special:BlockList|listaan ti lapden nga IP ]] tapno marepaso dagiti serra.",
+       "blockipsuccesstext": "Ni [[Special:Contributions/$1|$1]] ket naserraanen.<br />\nKitaen ti [[Special:BlockList|listaan ti serra]] tapno marepaso dagiti serra.",
        "ipb-blockingself": "Mangrugrugika nga agserra kenka! Sigurado a kayatmo nga aramiden daytoy?",
-       "ipb-confirmhideuser": "Mangrugrugika ti mangserra ti agar-aramat nga adda ti napabalinna nga \"ilemmeng ti agar-aramat\". Iddeppenna ti nagan daytoy nga agar-aramat kadagiti amin a listaan ken dagiti naikabkabil ti listaan. Siguradoka a kasta ti kayatmo?",
-       "ipb-confirmaction": "No segurado a kayatmo nga aramiden daytoy, pangngaasi a kitaen ti \"{{int:ipb-confirm}}\" a pagikabilan dita baba.",
+       "ipb-confirmhideuser": "Mangrugrugika ti mangserra iti agar-aramat a napakabaelan iti \"ilemmeng ti agar-aramat\". Iddeppenna ti nagan daytoy nga agar-aramat kadagiti amin a listaan ken dagiti naikabkabil ti listaan. Siguradoka a kasta ti kayatmo?",
+       "ipb-confirmaction": "No sigurado a kayatmo nga aramiden daytoy, pangngaasi a kitaen ti \"{{int:ipb-confirm}}\" a pagikabilan dita baba.",
        "ipb-edit-dropdown": "Urnosen dagiti rason ti panagserra",
        "ipb-unblock-addr": "Lukatan ti serra ni $1",
        "ipb-unblock": "Lukatan ti serra ti nagan ti agar-aramat wenno IP a pagtaengan",
        "ipb-blocklist": "Kitaen dagiti adda a serra",
-       "ipb-blocklist-contribs": "Dagiti inaramid ni $1",
+       "ipb-blocklist-contribs": "Dagiti kontribusion para kenni $1",
        "unblockip": "Lukatan ti serra ti agar-aramat",
-       "unblockiptext": "Usaren ti porma dita baba ti panangisubli ti panagserrek nga agsurat ti napalabas a naserran nga IP a pagtaengan wenno nagan ti agar-aramat.",
+       "unblockiptext": "Usaren ti porma dita baba tapno maisubli ti panagserrek ti panagsurat ti dati a naserran nga IP a pagtaengan wenno nagan ti agar-aramat.",
        "ipusubmit": "Ikkaten daytoy a serra",
        "unblocked": "Naikkat ti pannakaserra ni [[User:$1|$1]].",
-       "unblocked-range": "Naikkat ti serra ti $1.",
+       "unblocked-range": "Naikkaten ti serra ti $1.",
        "unblocked-id": "Naikkaten ti serra ti $1.",
        "blocklist": "Dagiti naserraan nga agar-aramat",
        "ipblocklist": "Dagiti naserraan nga agar-aramat",
        "blocklist-userblocks": "Ilemmeng dagiti serra ti pakabilangan",
        "blocklist-tempblocks": "Ilemmeng dagiti temporario a serra",
        "blocklist-addressblocks": "Ilemmeng ti maysa a serra dagiti IP",
-       "blocklist-rangeblocks": "Ilemmeng dagiti nasakup a serra",
+       "blocklist-rangeblocks": "Ilemmeng dagiti nasakop a serra",
        "blocklist-timestamp": "Petsa ken oras",
        "blocklist-target": "Puntaan",
        "blocklist-expiry": "Agpaso",
        "blocklist-by": "Ti nagserra nga admin",
-       "blocklist-params": "Parametro ti serra",
+       "blocklist-params": "Dagiti parametro ti serra",
        "blocklist-reason": "Rason",
        "ipblocklist-submit": "Biruken",
        "ipblocklist-localblock": "Lokal a serra",
        "ipblocklist-otherblocks": "Sabali {{PLURAL:$1|a serra|kadagiti serra}}",
        "infiniteblock": "inggana't inggana",
-       "expiringblock": "agpaso intono $1 ti oras nga $2",
-       "anononlyblock": "di am-ammo laeng",
-       "noautoblockblock": "nabaldado ti auto a serra",
+       "expiringblock": "agpaso intono $1, $2",
+       "anononlyblock": "di ammo laeng",
+       "noautoblockblock": "nabaldado ti automatiko a serra",
        "createaccountblock": "naserraan ti pannakapartuat ti pakabilangan",
-       "emailblock": "naserraan ti esurat",
+       "emailblock": "nabaldado ti esurat",
        "blocklist-nousertalk": "saan a mabalin nga agurnos ti bukod a tungtungan a panid",
-       "ipblocklist-empty": "Awan nagyan ti listaan ti serra.",
-       "ipblocklist-no-results": "Ti kiniddaw nga IP a pagtaengan wenno nagan ti agar-aramat ket saan a naserraan",
+       "ipblocklist-empty": "Awan linaon ti listaan ti serra.",
+       "ipblocklist-no-results": "Ti kiniddaw nga IP a pagtaengan wenno nagan ti agar-aramat ket saan a naserraan.",
        "blocklink": "serraan",
-       "unblocklink": "saanen a naserraan",
-       "change-blocklink": "baliwan  ti serra",
+       "unblocklink": "ikkaten ti serra",
+       "change-blocklink": "baliwan ti serra",
        "contribslink": "aramid",
        "emaillink": "ipatulod ti esurat",
        "autoblocker": "Automatiko a naserraan ngamin ket ti IP a pagtaengam ket naudi nga inusar babaen ni \"[[User:$1|$1]]\".\nTi inted a rason para iti serra ni $1 ket: \"$2\"",
-       "blocklogpage": "Listaan ti naserraan",
-       "blocklog-showlog": "Daytoy nga agar-aramat ket dati a naserraan.\nTi listaan ti serra ket naikabil dita baba tapno mausar a reperensia:",
-       "blocklog-showsuppresslog": "Daytoy nga agar-aramat ket dati a naserraan ken nailemmeng.\nTi listaan ti napasardeng ket naikabil dita baba tapno mausar a reperensia:",
+       "blocklogpage": "Listaan ti serra",
+       "blocklog-showlog": "Daytoy nga agar-aramat ket dati a naserraan.\nTi listaan ti serra ket naikabil dita baba para iti reperensia:",
+       "blocklog-showsuppresslog": "Daytoy nga agar-aramat ket dati a naserraan ken nailemmeng.\nTi listaan ti panagpasardeng ket naikabil dita baba para iti reperensia:",
        "blocklogentry": "naserraan ni [[$1]] nga adda ti oras a panagpaso iti $2 $3",
-       "reblock-logentry": "sinukatan ti pannakaserra para kenni [[$1]] nga adda ti oras a panagpaso iti  $2 $3",
-       "blocklogtext": "Daytoy ket listaan ti agar-aramat kadagiti panagserra ken panaglukat ti serra\nDagiti na-atomatiko a panakaserra ti IP a pagtaengan ket saan a nailista.\nKitaen ti [[Special:BlockList|Listaan ti lapden nga IP]] para iti listaan kadagiti agdama a naiparit a pagpataray ken dagiti serra.",
+       "reblock-logentry": "sinukatan ti pannakaserra para kenni [[$1]] nga adda ti oras a panagpaso iti $2 $3",
+       "blocklogtext": "Daytoy ket listaan ti agar-aramat kadagiti panagserra ken panaglukat ti serra\nDagiti automatiko a panakaserra ti IP a pagtaengan ket saan a nailista.\nKitaen ti [[Special:BlockList|listaan ti serra]] para iti listaan kadagiti agdama a naiparit a pagpataray ken dagiti serra.",
        "unblocklogentry": "lukatan ti serra ni $1",
-       "block-log-flags-anononly": "dagiti di am-ammo nga agar-aramat laeng",
+       "block-log-flags-anononly": "dagiti di ammo nga agar-aramat laeng",
        "block-log-flags-nocreate": "nabaldado ti panagpartuat ti pakabilangan",
-       "block-log-flags-noautoblock": "naiddep ti auto-serra",
-       "block-log-flags-noemail": "naserraan ti esurat",
+       "block-log-flags-noautoblock": "nabaldado ti automatiko a serra",
+       "block-log-flags-noemail": "nabaldado ti esurat",
        "block-log-flags-nousertalk": "saan a mabalin nga agurnos ti bukodna a tungtungan a panid",
-       "block-log-flags-angry-autoblock": "napabalin ti napasayaat nga auto-serra",
+       "block-log-flags-angry-autoblock": "napakabaelan ti napasayaat nga automatiko a serra",
        "block-log-flags-hiddenname": "nailemmeng ti nagan ti agar-aramat",
-       "range_block_disabled": "Ti abilidad ti administrador nga agaramid ti nasakupan a serra ket naiddep.",
+       "range_block_disabled": "Ti abilidad ti administrador nga agpartuat ti nasakupan a serra ket nabaldado.",
        "ipb_expiry_invalid": "Imbalido ti oras a panagpaso.",
        "ipb_expiry_temp": "Ti serra ti nagan ti agar-aramat ket masapul a permanente.",
-       "ipb_hide_invalid": "Saan a mapasardeng daytoy a pakabilangan; daytoy ket addaan ti ad-adu ngem {{PLURAL:$1|maysa nga inurnos|dagiti $1 nga inurnos}}.",
-       "ipb_already_blocked": " \"$1\" ket naserraan",
-       "ipb-needreblock": "$1 ket naseraan. Kayatmo a sukatan ti serrana?",
+       "ipb_hide_invalid": "Saan a mapasardeng daytoy a pakabilangan; daytoy ket addaan iti ad-adu ngem {{PLURAL:$1|maysa nga inurnos|dagiti $1 nga inurnos}}.",
+       "ipb_already_blocked": "Ni \"$1\" ket naserraanen.",
+       "ipb-needreblock": "Ni $1 ket naseraanen. Kayatmo a sukatan ti serrana?",
        "ipb-otherblocks-header": "Sabali {{PLURAL:$1|a naserraan|kadagiti naserraan}}",
        "unblock-hideuser": "Saanmo a maisubli ti serra daytoy nga agar-aramat, nailemmengen ti nagan daytoy nga agar-aramat.",
-       "ipb_cant_unblock": "Biddut: ID $1 ti serra a nabirukan. Baka nalukatan ti serranan.",
-       "ipb_blocked_as_range": "Ballag: Ti IP a pagtaengan $1 ket saan a dagus a naserraan ken saan a malukatan ti serrana.\nNgem, nupay kasta, naserran a kas paset ti sakup ti $2, a mabalin a malukatan ti serrana.",
-       "ip_range_invalid": "Imbalido a sakup ti IP.",
-       "ip_range_toolarge": "Dagiti serra a nasakup a dakdakkel ngem /$1 ket saan a maipalubos.",
+       "ipb_cant_unblock": "Biddut: San a nabirukan ti ID $1 ti serra. Mabalin a nalukatanen ti serrana.",
+       "ipb_blocked_as_range": "Biddut: Ti IP a pagtaengan ti $1 ket saan a dagus a naserraan ken saan a malukatan ti serrana.\nNgem, nupay kasta, naserran a kas paset ti sakop ti $2, a mabalin a malukatan ti serrana.",
+       "ip_range_invalid": "Imbalido a sakop ti IP.",
+       "ip_range_toolarge": "Dagiti serra a nasakop a dakdakkel ngem /$1 ket saan a maipalubos.",
        "proxyblocker": "Pannakbagi a panagserra",
-       "proxyblockreason": "Ti IP a pagtaengam ket naserraan ngamin ket daytoy ket nakalukat a panakbagi.\nPangngaasi ta kontakem ti agit-ited ti serbisio ti Internetmo wenno teknikal a suporta ti kaurnusam ken ibagam kaniada ti nakaro a parikut ti seguridad.",
-       "sorbsreason": "Ti IP a pagtaengam ket nakalista a kasla \"nalukatan a pannakbagi\" idiay DNSBL nga inusar ti {{SITNAME}}.",
-       "sorbs_create_account_reason": "Ti IP a pagtaengam ket nakalista a kasla \"nalukatan a pannakbagi\" idiay DNSBL nga inusar ti {{SITNAME}}.\nSaanka a makaaramid ti pakabilangan",
+       "proxyblockreason": "Ti IP a pagtaengam ket naserraan ngamin ket daytoy ket nakalukat a panakbagi.\nPangngaasi a kontakem ti agit-ited ti serbisio ti Internetmo wenno teknikal a suporta ti gunglom ken ibagam kaniada ti nakaro a parikut ti seguridad.",
+       "sorbsreason": "Ti IP a pagtaengam ket nailista a kasla \"nalukatan a pannakbagi\" iti DNSBL nga inusar babaen ti {{SITNAME}}.",
+       "sorbs_create_account_reason": "Ti IP a pagtaengam ket nailista a kasla \"nalukatan a pannakbagi\" iti DNSBL nga inusar babaen ti {{SITNAME}}.\nSaanka a makapartuat ti pakabilangan.",
        "xffblockreason": "Ti maysa nga IP a pagtaengan nga adda iti X-Forwarded-For header, mabalin a kukuam wenno ti pannakbagi a server nga us-usarem, ket naserraan. Ti kasisigud a rason ti pannakaserra idi ket: $1",
-       "cant-see-hidden-user": "Ti agar-aramat a kayatmo a serraan ket naserraan ken nailemmeng.\nKet awan met ti karbengam nga agilemming ti agar-aramat, saan mo a makita wenno mabaliwan ti serra ti agar-aramat.",
-       "ipbblocked": "Saanmo a mabalin ti agserra wenno agikkat ti serra ti sabali nga agar-aramat, ngamin ket naserraan ka met.",
-       "ipbnounblockself": "Saanmo a mabalin a lukatan ti serram",
+       "cant-see-hidden-user": "Ti agar-aramat a kayatmo a serraan ket naserraanen ken nailemmeng.\nGapu ta awan met ti karbengam nga agilemming ti agar-aramat, saanmo a makita wenno maurnos ti serra ti agar-aramat.",
+       "ipbblocked": "Saanmo a mabalin ti agserra wenno agikkat ti serra ti sabali nga agar-aramat, ngamin ket naserraanka met.",
+       "ipbnounblockself": "Saanmo a mabalin a lukatan ti serram.",
        "lockdb": "Balunetan ti database",
        "unlockdb": "Lukatan ti database",
-       "lockdbtext": "Ti panagserra ti database ket makaikkat ti abilidad kadagiti amin nga agar-aramat ti agurnos kadagiti panid, ti panagsukat dagiti kaykayatda, ti panagurnos dagiti bambantayanda, ken dagiti sabsabali pay a masapul ti panagsukat idiay database.\nPangngaasi a pasingkedam daytoy no kayatmo nga aramiden, ken luktam dayta database no malpas kan nga agsimpa.",
-       "unlockdbtext": "Ti panaglukat ti database ket mangipasubli ti abilidad dagiti amin nga agar-aramat ti panagurnos kadagiti panid, ti panagsukat dagiti kaykayatda, ti panagurnos dagiti bambantayanda, ken dagiti amin a makasapul ti panagsukat idiay database.\nPangngaasi a pasingkedam a daytoy no kayatmo nga aramiden.",
+       "lockdbtext": "Ti panagserra ti database ket makaikkat ti abilidad kadagiti amin nga agar-aramat ti agurnos kadagiti panid, ti panagsukat dagiti kakaykaytanda, ti panagurnos dagiti listaan ti bambantayanda, ken dagiti sabali pay a masapul ti panagsukat iti database.\nPangngaasi a pasingkedam daytoy no kayatmo nga aramiden, ken luktam dayta database no malpaskan nga agsimpa.",
+       "unlockdbtext": "Ti panaglukat ti database ket mangipasubli ti abilidad dagiti amin nga agar-aramat ti panagurnos kadagiti panid, ti panagsukat kadagiti kakaykayatanda, ti panagurnos dagiti listaan bambantayanda, ken dagiti amin a makasapul ti panagsukat iti database.\nPangngaasi a pasingkedam a daytoy no kayatmo nga aramiden.",
        "lockconfirm": "Wen, talaga a kayatko a balunetan ti database.",
        "unlockconfirm": "Wen, talaga a kayatko a balunetan ti database.",
        "lockbtn": "Balunetan ti database",
        "unlockdbsuccesssub": "Naikkaten ti balunet ti database",
        "lockdbsuccesstext": "Nabalunetan ti database.<br />\nLaglagipem nga [[Special:UnlockDB|ikkaten ti balunetna]] kalpasan a malpaska nga agsimpa.",
        "unlockdbsuccesstext": "Nalukatanen ti database.",
-       "lockfilenotwritable": "Ti serra a papeles ti database ket saan a masuratan.\nTi agserra ken aglukat iti database, masapul a masuratan ti web server.",
+       "lockfilenotwritable": "Ti papeles ti balunet ti database ket saan a masuratan.\nTapno mabalunetan ken malukatan ti database, nasken daytoy a masuratan babaen ti web server.",
        "databasenotlocked": "Saan a nabalunetan ti database.",
-       "lockedbyandtime": "(ni {{GENDER:$1|$1}} idi $2 ti oras $3)",
+       "lockedbyandtime": "(ni {{GENDER:$1|$1}} idi $2, $3)",
        "move-page": "Iyalis ti $1",
        "move-page-legend": "Iyalis ti panid",
-       "movepagetext": "Ti panagusar ti kinabuklan dita baba, ket mangnagan manen ti panid, a mangiyalis amin ti pakasaritaanna idiay baro a nagan.\nTi daan a titulo ket agbalin a baw-ing a panid idiay baro a titulo.\nMapabarom a kas automatiko dagiti baw-ing a nakatudo dita kasisigud a titulo.\nNo agpilika a saanmo a kayat, pasaraduam a kitaen ti [[Special:DoubleRedirects|doble]] wenno [[Special:BrokenRedirects|nadadael a baw-ing]].\nRenbbengmo ti mangpatalged nga amin a silpo ket agtultuloy a nakatudo iti nasken a papananda.\n\nLaglagipen a ti panid ket '''saan''' a maiyalis no addan sigud a panid iti baro a titulo, malaksid no ti kinaudi ket maysa a baw-ing ken awan ti napalabas a pakasaritaan ti panag-urnos. \nKayat a sawen daytoy a mabalinmo a suktan ti nagan ti maysa a panid manipud iti punto ti pannakasukat ti nagan no nagbiddutka, ken saan mo a mabalin a suratan manen ti addaan a panid.\n\n'''Ballaag!'''\nMabalin a maysa daytoy a nakaro ken saan a bigla a panagbaliw iti maysa a nasikat a panid;\npangngaasim a pasingkedam a maawatam ti ibunga daytoy sakbay nga agtuloyka a mangbaliw.",
-       "movepagetext-noredirectfixer": "Ti panagusar ti kinabuklan dita baba, ket panaganan ti panid, iyalis na amin ti pakasaritaan na idiay baro a nagan.\nTi daan a titulo ket agbalin baw-ing a panid idiay baro a titulo.\nPasaruduam a kitaen ti [[Special:DoubleRedirects|doble]] wenno [[Special:BrokenRedirects|nadadael a baw-ing]].\nRebbengem ti mangpatalged nga amin a panilpo ket agtultuloy a nakatudo iti nasken a papananda.\n\nLaglagipen a ti panid ket '''saan''' a maiyalis no addan sigud a panid iti baro a titulo, malaksid no awan linaonna wenno no maysa a baw-ing a panid ken awan ti panagbaliw iti pakasaritaan ti napalabas. \nKayat a sawen daytoy a mabalinmo a suktan ti nagan ti maysa a panid manipud iti punto ti pannakasukat ti nagan no nagbiddutka, ken saan mo a mabalin a suratan manen ti addaan a panid.\n\n'''Ballaag!'''\nMabalin a maysa daytoy a nakaro ken saan a bigla a panagbaliw iti maysa a nasikat a panid;\npangngaasim ta pasingkedam a maawatam ti ibunga daytoy sakbay nga agtuloyka a mangbaliw.",
-       "movepagetalktext": "Ti mainaig a tungtungan ti panid ket giddato a maiyalis a karamanna '''malaksid:'''\n*No addan sigud nga awan linaonna a tungtungan ti panid babaen ti baro a nagan, wenno\n*No ikkatem ti kur-itna ti kahon iti baba.\n\nKadagitoy a kaso, masapul nga iyalis wenno itiponmo a manual ti panid no kayatmo.",
+       "movepagetext": "Ti panagusar ti porma dita baba, ket mangnagan manen ti panid, a mangiyalis amin ti pakasaritaanna iti baro a nagan.\nTi daan a titulo ket agbalin a baw-ing a panid iti baro a titulo.\nMapabarom a kas automatiko dagiti baw-ing a nakatudo dita kasisigud a titulo.\nNo agpilika a saanmo a kayat, siguraduem a kitaen ti [[Special:DoubleRedirects|doble]] wenno [[Special:BrokenRedirects|nadadael a baw-ing]].\nRenbbengmo ti mangpatalged nga amin a silpo ket agtultuloy a nakatudo iti nasken a papananda.\n\nLaglagipen a ti panid ket <strong>saan</strong> a maiyalis no addan sigud a panid iti baro a titulo, malaksid no ti kinaudi ket maysa a baw-ing ken awan ti napalabas a pakasaritaan ti panag-urnos. \nKayat a sawen daytoy a mabalinmo a suktan ti nagan ti maysa a panid manipud iti punto ti pannakasukat ti nagan no nagbiddutka, ken saan mo a mabalin a suratan manen ti addaan a panid.\n\n<strong>Ballaag!</strong>\nMabalin a maysa daytoy a nakaro ken saan a bigla a panagbaliw iti maysa a nasikat a panid;\npangngaasim a pasingkedam a maawatam ti ibunga daytoy sakbay nga agtuloyka a mangbaliw.",
+       "movepagetext-noredirectfixer": "Ti panagusar ti kinabuklan dita baba, ket panaganan ti panid, iyalisna amin ti pakasaritaanna iti baro a nagan.\nTi daan a titulo ket agbalin baw-ing a panid idiay baro a titulo.\nPasaruduam a kitaen ti [[Special:DoubleRedirects|doble]] wenno [[Special:BrokenRedirects|nadadael a baw-ing]].\nRebbengem ti mangpatalged nga amin a silpo ket agtultuloy a nakatudo iti nasken a papananda.\n\nLaglagipen a ti panid ket <strong>saan</strong> a maiyalis no addan sigud a panid iti baro a titulo, malaksid no awan linaonna wenno no maysa a baw-ing a panid ken awan ti panagbaliw iti pakasaritaan ti napalabas. \nKayat a sawen daytoy a mabalinmo a suktan ti nagan ti maysa a panid manipud iti punto ti pannakasukat ti nagan no nagbiddutka, ken saanmo a mabalin a suratan manen ti addaan a panid.\n\n<strong>Ballaag!</strong>\nMabalin a maysa daytoy a nakaro ken saan a bigla a panagbaliw iti maysa a nasikat a panid;\npangngaasim ta pasingkedam a maawatam ti ibunga daytoy sakbay nga agtuloyka a mangbaliw.",
+       "movepagetalktext": "Ti mainaig a tungtungan ti panid ket automatikonto a maiyalis a karamanna <strong>malaksid:</strong>\n*Ti addan ti awan linaon a tungtungan ti panid babaen ti baro a nagan, wenno\n*No ikkatem ti kur-itna ti kahon iti baba.\n\nKadagitoy a kaso, masapul nga iyalis wenno manual nga itiponmo ti panid no kayatmo.",
        "movearticle": "Iyalis ti panid:",
-       "moveuserpage-warning": "'''Ballaag:''' Mangrugrugika nga agiyalis ti panid ti agar-aramat. Pangngaasi a laglapipen a ti panid ket isu laeng ti mabalin nga iyalis ken ti agar-aramat ket ''saan'' a managanan.",
+       "moveuserpage-warning": "<strong>Ballaag:</strong> Mangrugrugika nga agiyalis ti panid ti agar-aramat. Pangngaasi a laglapipen a ti panid ket isu laeng ti maiyalis ken ti agar-aramat ket <em>saanto</em> a managanan.",
        "movecategorypage-warning": "<strong>Ballaag:</strong> Mangiyal-aliskan iti panid ti kategoria. Pangngaasi a laglagipen a ti maiyalisto laeng ket ti panid ken ti aniaman a pampanid iti daan a kategoria ket <em>saanto</em> a maikategoria iti baro.",
        "movenologintext": "Masapul a nakarehistroka nga agar-aramat ken [[Special:UserLogin|nakastrek]] tapno makaiyalis iti panid.",
        "movenotallowed": "Awan ti pammalubosmo nga agiyalis kadagiti panid.",
        "movenotallowedfile": "Awan ti pammalubosmo nga agiyalis kadagiti papeles.",
-       "cant-move-user-page": "Awan ti pammalubos mo nga agiyalis kadagiti panid ti agar-aramat (malaksid kadaiti subpanid).",
-       "cant-move-to-user-page": "Awan ti pammalubos mo nga agiyalis ti panid idiay panid ti agar-aramat (malaksid kadagiti subpanid ti agar-aramat).",
+       "cant-move-user-page": "Awan ti pammalubosmo nga agiyalis kadagiti panid ti agar-aramat (malaksid kadagiti subpanid).",
+       "cant-move-to-user-page": "Awan ti pammalubosmo nga agiyalis ti panid iti panid ti agar-aramat (malaksid kadagiti subpanid ti agar-aramat).",
        "cant-move-category-page": "Awan ti pammalubosmo nga agiyalis kadagiti panid ti kategoria.",
        "cant-move-to-category-page": "Awan ti pammalubosmo nga agiyalis ti panid iti panid ti kategoria.",
        "newtitle": "Iti baro a titulo:",
-       "move-watch": "Bantayan daytoy a panid",
+       "move-watch": "Bantayan ti taudan a panid ken puntaan a panid",
        "movepagebtn": "Iyalis ti panid",
        "pagemovedsub": "Balligi ti panangiyalis",
-       "movepage-moved": "Naiyalis ti '''\"$1\" iti \"$2\"'''",
+       "movepage-moved": "<strong>Naiyalisen ti \"$1\" iti \"$2\"</strong>",
        "movepage-moved-redirect": "Napartuaten ti maysa a baw-ing.",
-       "movepage-moved-noredirect": "Ti panagaramid ti baw-ing ket napasardeng.",
-       "articleexists": "Adda panid nga adda ti kasta a nagan, wenno ti nagan a pinilim ket saan a mabalin.\nPangngaasim a mangpilika iti sabali a nagan.",
-       "cantmove-titleprotected": "Saanmo a maiyalis ti panid iti daytoy a lokasion, ngamin ket ti baro a titulo ket nasalakniban para iti panakapartuat.",
+       "movepage-moved-noredirect": "Ti pannakapartuat ti baw-ing ket napasardeng.",
+       "articleexists": "Adda panid nga adda ti kastan a nagan, wenno ti nagan a pinilim ket saan a mabalin.\nPangngaasi nga agpili ti sabali a nagan.",
+       "cantmove-titleprotected": "Saanmo a maiyalis ti panid iti daytoy a lokasion ngamin ket ti baro a titulo ket nasalakniban manipud ti pannakapartuat",
        "movetalk": "Iyalis ti mainaig a panid ti tungtungan",
-       "move-subpages": "Iyalis dagiti subpanid (aginggana ti $1)",
-       "move-talk-subpages": "Iyalis dagiti subpanid ti tungtungan ti panid (aginggana ti $1)",
-       "movepage-page-exists": "Ti panid ti $1 ket addan ken saan a mautomatiko a suratan manen.",
-       "movepage-page-moved": "Naiyalis ti panid a $1 iti $2.",
-       "movepage-page-unmoved": "Saan a maiyalis ti panid $1 iti $2.",
-       "movepage-max-pages": "Ti kaadu iti $1 a {{PLURAL:$1|panid|pampanid}} ket naiyalis ken awanen ti automatiko a maiyalis.",
+       "move-subpages": "Iyalis dagiti subpanid (aginggana iti $1)",
+       "move-talk-subpages": "Iyalis dagiti subpanid ti tungtungan ti panid (aginggana iti $1)",
+       "movepage-page-exists": "Ti panid ti $1 ket addan ken saan a mabalin nga automatiko a masuratan manen.",
+       "movepage-page-moved": "Ti panid ti $1 ket naiyalisen iti $2.",
+       "movepage-page-unmoved": "Ti panid ti $1 ket saan a maiyalis iti $2.",
+       "movepage-max-pages": "Ti kaaduan iti $1 a {{PLURAL:$1|panid|pampanid}} ket naiyalisen ken awanton ti automatiko a maiyalis.",
        "movelogpage": "Listaan ti naiyalis",
-       "movelogpagetext": "Adda dita baba ti listaan dagiti naiyalis a panid.",
+       "movelogpagetext": "Adda dita baba ti listaan dagiti amin a naiyalis a panid.",
        "movesubpage": "{{PLURAL:$1|Subpanid|Dagiti subpanid}}",
-       "movesubpagetext": "Daytoy a panid ket adda $1 {{PLURAL:$1|a subpanid|kadagiti subpanid}} a naipakita dita baba.",
+       "movesubpagetext": "Daytoy a panid ket addaan iti $1 {{PLURAL:$1|a subpanid|kadagiti subpanid}} a naipakita dita baba.",
        "movenosubpage": "Daytoy a panid ket awan ti subpanidna.",
        "movereason": "Rason:",
        "revertmove": "isubli",
        "delete_and_move": "Ikkaten ken iyalis",
-       "delete_and_move_text": "== Masapul nga ikkaten ==\nTi pangipanan ti panid ket \"[[:$1]]\" addan.\nKayatmo nga ikkaten  tapno makaiyaliska?",
+       "delete_and_move_text": "== Masapul nga ikkaten ==\nTi pangipanan ti panid ket \"[[:$1]]\" addan.\nKayatmo nga ikkaten tapno makaiyaliska?",
        "delete_and_move_confirm": "Wen, ikkaten ti panid",
-       "delete_and_move_reason": "Naikkat tapno mawayaan ti pannaka-iyalis idiay \"[[$1]]\"",
+       "delete_and_move_reason": "Naikkat tapno mawayaan ti pannaka-iyalis manipud ti \"[[$1]]\"",
        "selfmove": "Ti titulo ti taudan ken ti pangipanan ket agpadpada;\nsaanmo a maiyalis ti panid ti isu met laeng a panid.",
-       "immobile-source-namespace": "Saan a maiyalis dagiti panid idiay nagan ti espasio ti  \"$1\"",
-       "immobile-target-namespace": "Saan a maiyalis dagiti panid idiay nagan ti espasio ti \"$1\"",
+       "immobile-source-namespace": "Saan a maiyalis dagiti panid iti nagan ti espasio ti \"$1\"",
+       "immobile-target-namespace": "Saan a maiyalis dagiti panid iti nagan ti espasio ti \"$1\"",
        "immobile-target-namespace-iw": "Ti silpo nga interwiki ket saan nga umiso a puntaan para iti panagiyalis ti panid.",
        "immobile-source-page": "Saan a mabalin nga iyalis daytoy a panid.",
-       "immobile-target-page": "Saan a maiyalis iti dayata a pangipanan a titulo.",
-       "bad-target-model": "Ti kinaykayat a pangipanan ket agus-usar ti sabali a modelo ti linaon. Saan a maipabalin manipud ti $1 iti $2.",
-       "imagenocrossnamespace": "Saan a maiyalis ti papeles idiay saan a papeles a nagan ti espasio",
-       "nonfile-cannot-move-to-file": "Saan a maiyalis ti saan a papeles idiay papeles a nagan ti espasio",
-       "imagetypemismatch": "Ti baro a pagpaatiddog ti papeles ket saan nga agpada ti kitana",
+       "immobile-target-page": "Saan a maiyalis iti dayta a pangipanan a titulo.",
+       "bad-target-model": "Ti kinaykayat a pangipanan ket agus-usar ti sabali a modelo ti linaon. Saan a mapagbaliwen manipud ti $1 iti $2.",
+       "imagenocrossnamespace": "Saan a maiyalis ti papeles iti saan nagan ti espasio ti papeles",
+       "nonfile-cannot-move-to-file": "Saan a maiyalis ti saan a papeles iti nagan ti espasio ti papeles",
+       "imagetypemismatch": "Ti baro a pagpaatiddog ti papeles ket saan a maipada iti bukodna a kita",
        "imageinvalidfilename": "Ti puntaan a nagan ti papeles ket imbalido",
-       "fix-double-redirects": "Agpabaro ti amin a baw-ing a mangipatudo ti kasisigud a titulo",
+       "fix-double-redirects": "Agpabaro kadagiti aniaman a baw-ing a mangipatudo ti kasisigud a titulo",
        "move-leave-redirect": "Mangibati ti baw-ing",
-       "protectedpagemovewarning": "'''Ballaag:''' Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan ti gundaway nga administrador ti makaiyalis.\nTi kinaudi a naikabil ti listaan ket adda dita baba tapno mausar a reperensia:",
-       "semiprotectedpagemovewarning": "'''Pakaammo:''' Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaiyalis daytoy.\nTi kinaudi a naikabil ti listaan ket adda iti baba tapno mausar a reperensia:",
-       "move-over-sharedrepo": "== Addaan ti papeles ==\n[[:$1]] addaan idiay pagbingayan a repositorio. Ti panagiyalis ti papeles iti titulo nga itoy ket paawanenna ti pagbingayan a papeles.",
-       "file-exists-sharedrepo": "Ti napilim a nagan ti papeles ket naususaren idiay pagbingayan a pagikabilan.\nPangngaasi nga agpilika ti sabali a nagan.",
+       "protectedpagemovewarning": "<strong>Balaag:</strong> Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan ti gundaway nga administrador ti makaiyalis.\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:",
+       "semiprotectedpagemovewarning": "<strong>Nota:</strong> Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaiyalis daytoy.\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:",
+       "move-over-sharedrepo": "== Addaan ti papeles ==\nTi [[:$1]] addaan iti pagbingayan a repositorio. Ti panagiyalis ti papeles iti daytoy a titulo ket tuonenna ti pagbingayan a papeles.",
+       "file-exists-sharedrepo": "Ti napilim a nagan ti papeles ket naususaren iti pagbingayan a repositorio.\nPangngaasi nga agpilika ti sabali a nagan.",
        "export": "Agipan kadagiti panid",
        "exporttext": "Maipanmo ti testo ken pakasaritaan ti inurnos iti maysa a panid wenno pampanid a nabalkut ti XML.\nDaytoy ket mabalin a maikabil iti sabali a wiki nga agususar ti MediaWiki nga usaren ti [[Special:Import|pinagala ti panid]].\n\nTi pinagipan ti panid, ikabil ti titulo dita kahon ti testo dita baba, maysa a titulo iti maysa a linia, ken agpili ka no ti kayatmo ket ti agdama a pinagbaliw ken amin nga daan a panagbalbaliw, nga addaan ti linia ti pakasaritaan ti pampanid, wenno ti agdama a panagbaliw nga addaan ti pakaammo a maipapan ti kinaudi a panagurnos.\n\nNo iti kinaudi a kaso mabalinmo nga usaren ti silpo, a kas pagarigan [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para iti panid \"[[{{MediaWiki:Mainpage}}]]\".",
        "exportall": "Ipan amin a pampanid",
        "exportcuronly": "Iraman laeng ti kinaudi a panagbaliw, saan a ti napno a pakasaritaan",
-       "exportnohistory": "----\n'''Palagip:''' Ti pagipapan dagiti napno a pakasaritaan dagiti panid iti daytoy a kinabuklan ket nabaldado gapu dagiti pannakalaing ti panagandar a rason.",
+       "exportnohistory": "----\n<strong>Nota:</strong> Ti pagipapan dagiti napno a pakasaritaan dagiti panid iti daytoy a kinabuklan ket nabaldado gapu dagiti pannakalaing ti panagandar a rason.",
        "exportlistauthors": "Iraman ti amin a listaan kadagiti nagaramid iti tunggal a maysa a panid",
        "export-submit": "Agipan",
-       "export-addcattext": "Agnayon kadagiti panid a naggapu idiay kategoria:",
+       "export-addcattext": "Agnayon kadagiti panid manipud ti kategoria:",
        "export-addcat": "Inayon",
-       "export-addnstext": "Nayunan dagiti panid a naggapu idiay nagan ti espasio:",
+       "export-addnstext": "Agnayon kadagiti panid manipud ti nagan ti espasio:",
        "export-addns": "Inayon",
        "export-download": "Idulin a kas papeles",
        "export-templates": "Mangiraman kadagiti plantilia",
        "allmessagesname": "Nagan",
        "allmessagesdefault": "Kasisigud a testo ti mensahe",
        "allmessagescurrent": "Agdama a testo ti mensahe",
-       "allmessagestext": "Daytoy ti listaan dagiti mensahe ti sistema a magun-od idiay MediaWiki a nagan ti espasio.\nPangngaasi a bisitaen ti [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Lokalisasion ti MediaWiki] ken [//translatewiki.net translatewiki.net] no kayatmo ti agparawad kadagiti sapasap a panagipatarus ti MediaWiki.",
-       "allmessagesnotsupportedDB": "Saan a mausar daytoy a panid ngamin ket ti '''$wgUseDatabaseMessages''' ket nabaldado.",
+       "allmessagestext": "Daytoy ti listaan dagiti mensahe ti sistema a magun-od iti nagan ti espasio ti MediaWiki.\nPangngaasi a bisitaen ti [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Lokalisasion ti MediaWiki] ken [//translatewiki.net translatewiki.net] no kayatmo ti agparawad kadagiti sapasap a panagipatarus ti MediaWiki.",
+       "allmessagesnotsupportedDB": "Daytoy a panid ket saan a musar gapu ta nabaldado ti <strong>$wgUseDatabaseMessages</strong>.",
        "allmessages-filter-legend": "Sagat",
        "allmessages-filter": "Sagaten babaen ti naipaduma a kasasaad:",
        "allmessages-filter-unmodified": "Saan a nabaliwan",
        "allmessages-filter-submit": "Inkan",
        "allmessages-filter-translate": "Ipatarus",
        "thumbnail-more": "Padakkelen",
-       "filemissing": "Napukaw ti papeles",
-       "thumbnail_error": "Biddut ti panagaramid ti bassit a ladawan: $1",
+       "filemissing": "Awan ti papeles",
+       "thumbnail_error": "Biddut ti panagpartuat ti bassit a ladawan: $1",
        "thumbnail_error_remote": "Biddut a mensahe manipud ti $1: \n$2",
-       "djvu_page_error": "Ti DjVu a panid ket saan a nasakup",
+       "djvu_page_error": "Ti DjVu a panid ket saan a masakop",
        "djvu_no_xml": "Saan a naala ti XML iti DjVu a papeles",
-       "thumbnail-temp-create": "Saan a makaaramid ti temporario a bassit a ladawan ti papeles",
+       "thumbnail-temp-create": "Saan a makapartuat ti temporario a bassit a ladawan ti papeles",
        "thumbnail-dest-create": "Saan a maidulin ti basit a ladawan idiay pagipanan",
-       "thumbnail_invalid_params": "Imbalido a parametro ti bassit a ladawan",
-       "thumbnail_dest_directory": "Saan a nakaaramid ti pangipanan a direktorio.",
-       "thumbnail_image-type": "Daytoy a kita ti ladawan ket saan a nasuportaran.",
-       "thumbnail_gd-library": "Saan a kompleto a GD biblioteka a pannakaaramid: Awan ti opisio ti $1",
-       "thumbnail_image-missing": "Daytoy a papeles ket kasla napukaw: $1",
+       "thumbnail_invalid_params": "Imbalido dagiti parametro ti bassit a ladawan",
+       "thumbnail_dest_directory": "Saan a nakapartuat ti pangipanan a direktorio.",
+       "thumbnail_image-type": "Daytoy a kita ti ladawan ket saan a nasuportaran",
+       "thumbnail_gd-library": "Saan a kompleto a konpigurasion ti biblioteka ti GD: Awan ti annong ti $1",
+       "thumbnail_image-missing": "Kasla awan daytoy a papeles: $1",
        "thumbnail_image-failure-limit": "Adu unayen dagiti nabiit a napaay a panagipadas ($1 wenno ad-adu) a panangiparamg daytoy bassit a ladawan. Pangngaasi a padasen manen intono madamdama.",
        "import": "Agala kadagiti panid",
        "importinterwiki": "Agala ti transwiki",
-       "import-interwiki-text": "Agpilika ti wiki ken titulo ti panid nga alaem.\nDagit panagbaliw a petsa ken dagiti nagan ti mannurat ket maipreserba.\nAmin a transwiki nga alaem ket mailista idiay [[Special:Log/import|listaan ti pinagala]].",
+       "import-interwiki-text": "Agpilika ti wiki ken titulo ti panid nga alaem.\nDagiti rebision ti petsa ken dagiti nagan ti mannurat ket maipreserba.\nAmin a transwiki nga alaem ket mailista iti [[Special:Log/import|listaan ti panagala]].",
        "import-interwiki-source": "Taudan ti wiki/panid:",
-       "import-interwiki-history": "Kopiaen amin dagiti bersion ti pakasaritaan daytoy a panid",
+       "import-interwiki-history": "Kopiaen amin dagiti rebision ti pakasaritaan daytoy a panid",
        "import-interwiki-templates": "Iraman amin dagiti plantilia",
        "import-interwiki-submit": "Agala",
        "import-interwiki-namespace": "Pangipanan a nagan ti espasio:",
        "import-interwiki-rootpage": "Papanan a ramut ti panid (pagpilian):",
        "import-upload-filename": "Nagan ti papeles:",
        "import-comment": "Komentario:",
-       "importtext": "Pangngaasi nga ipanmo ti papeles a naggapu iti nagtaudan a wiki nga agusar ti [[Special:Export|agipan]].",
-       "importstart": "Agal-ala dagiti panid...",
-       "import-revision-count": "$1 {{PLURAL:$1|a pinagbaliwan|kadagiti pinagbaliwan}}",
-       "importnopages": "Awan dagiti panid ti maala.",
+       "importtext": "Pangngaasi nga ipanmo ti papeles manipud ti nagtaudan a wiki nga agusar ti [[Special:Export|ramit ti panagipan]].\nIdulinmo iti bukodmo a kompiuter ken ikarga ditoy.",
+       "importstart": "Agal-ala kadagiti panid...",
+       "import-revision-count": "$1 {{PLURAL:$1|a rebision|kadagiti rebision}}",
+       "importnopages": "Awan dagiti maala a panid.",
        "imported-log-entries": "Naala ti $1 {{PLURAL:$1|a nailista|kadagiti nailista}}.",
        "importfailed": "Napaay ti panagala: <nowiki>$1</nowiki>",
-       "importunknownsource": "Di amammo a kita ti taudan ti innala",
+       "importunknownsource": "Di ammmo a kita ti taudan ti innala",
        "importcantopen": "Saan a maluktan ti innala a papeles",
        "importbadinterwiki": "Saan a nasayaat a silpo ti interwiki",
-       "importsuccess": "Nalpasen ti pinagala!",
-       "importnosources": "Awan ti innala a taudan ti transwiki ti naipalawag ken ti dagus a pakasaritaan ti pinag-ipan ket nabaldado.",
-       "importnofile": "Awan ti inalam a papeles a naipapan.",
-       "importuploaderrorsize": "Ti pinag-ipan ti innala a papeles ket napaay.\nTi papeles ket dakdakel ngem ti mabalin a kadakkel ti pang-ipan.",
-       "importuploaderrorpartial": "Ti pinag-ipan ti innala a papeles ket napaay.\nPaset laeng ti papeles ti napag-ipan.",
-       "importuploaderrortemp": "Ti pinag-ipan ti papeles ket napaay.\nAwan ti saan nga agnayon a polder.",
-       "import-parse-failure": "Napaay ti pinagala ti XML parse",
+       "importsuccess": "Nalpasen ti panagala!",
+       "importnosources": "Awan ti innala a taudan ti transwiki ti naipalawag ken ti dagus a pakasaritaan ti panagikarga ket nabaldado.",
+       "importnofile": "Awan ti innalam a papeles ti naikarga.",
+       "importuploaderrorsize": "Ti panagikarga ti innala a papeles ket napaay.\nTi papeles ket dakdakel ngem ti maipalubos a kadakkel ti maikarga.",
+       "importuploaderrorpartial": "Ti panagikarga ti innala a papeles ket napaay.\nPaset laeng ti papeles ti naikarga.",
+       "importuploaderrortemp": "Ti panagikarga ti innala a papeles ket napaay.\nAwan ti temporario a polder.",
+       "import-parse-failure": "Napaay ti panagala ti panagwaswas ti XML",
        "import-noarticle": "Awan ti panid a maaala!",
-       "import-nonewrevisions": "Awan dagiti naala panagbalbaliw (mabalin nga adda amin dagitoyen, wenno nalabsan gapu kadagiti biddut).",
+       "import-nonewrevisions": "Awan dagiti naala a rebision (mabalin nga adda amin dagitoyen, wenno nalabsan gapu kadagiti biddut).",
        "xml-error-string": "$1 iti linia $2, tukol $3 (byte $4): $5",
-       "import-upload": "Ipan ti XML data",
-       "import-token-mismatch": "Napukaw ti gimong ti datos.\nPangngaasi a padasem manen.",
-       "import-invalid-interwiki": "Saan a makaala dita naited a wiki.",
+       "import-upload": "Ikarga ti datos ti XML",
+       "import-token-mismatch": "Napukaw ti sesion ti datos.\nPangngaasi a padasen manen.",
+       "import-invalid-interwiki": "Saan a makaala manipud ti nainaganan a wiki.",
        "import-error-edit": "Ti panid ti \"$1\" ket saan a naala ngamin ket saanmo a mabalin nga urnosen.",
-       "import-error-create": "Ti panid ti \"$1\" ket saan a naala ngamin ket saanmo a mabalin nga aramiden.",
-       "import-error-interwiki": "Ti panid ti \"$1\" ket saan a naala ngamin ket ti nagan ket nailasin para iti ruar a panagsilpo (interwiki).",
-       "import-error-special": "Ti panid ti \"$1\" ket saan a naala ngamin ket bukod ti  espesial a nagan a lugar a saan nga agpalubos ti pampanid.",
-       "import-error-invalid": "Ti panid ti \"$1\" ket saan a naala ngamin ket ti nagan ket imbalido.",
-       "import-error-unserialize": "Ti panagbaliw ti $2 iti panid ti \"$1\" ket di maipagsasaruno. Ti panagbalbaliw ket naireporta idi nga agus-usar ti modelo ti $3 a naipagsasaruno a kas $4.",
-       "import-error-bad-location": "Ti panagbaliw ti $2 nga agus-usar ti modelo a linaon ti $3 ket saan a maipenpen iti \"$1\" iti daytoy a wiki, gapu ta dayta a modelo ket saan a nasuportaran iti dayta a panid.",
+       "import-error-create": "Ti panid ti \"$1\" ket saan a naala ngamin ket saanmo a mabalin a partuaten.",
+       "import-error-interwiki": "Ti panid ti \"$1\" ket saan a naala ngamin ket ti nagan ket naireserba para iti ruar a panagsilpo (interwiki).",
+       "import-error-special": "Ti panid ti \"$1\" ket saan a naala ngamin ket bukod ti espesial a nagan ti espasio ket saan nga agpalubos iti pampanid.",
+       "import-error-invalid": "Ti panid ti \"$1\" ket saan a naala ngamin ket ti naganna ket imbalido.",
+       "import-error-unserialize": "Ti rebisionn ti $2 iti panid ti \"$1\" ket di maipagsasaruno. Ti rebision ket naireporta idi nga agus-usar ti modelo ti $3 a naipagsasaruno a kas $4.",
+       "import-error-bad-location": "Ti rebision ti $2 nga agus-usar ti modelo a linaon ti $3 ket saan a maipenpen iti \"$1\" iti daytoy a wiki, gapu ta dayta a modelo ket saan a nasuportaran iti dayta a panid.",
        "import-options-wrong": "Saan a husto {{PLURAL:$2|a pagpilian|a pagpilpilian}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "Ti naited a ramut ti panid ket imbalido a titulo.",
-       "import-rootpage-nosubpage": "Ti nagan ti lugar ti \"$1\" iti ramut ti panid ket saan amangpalubos kadagiti apo ti panid.",
-       "importlogpage": "Alaen ti listaan",
-       "importlogpagetext": "Ti administratibo a panagala dagiti panid nga adda ti pakasaritaanna nga urnos kadagiti sabsabali a wiki.",
-       "import-logentry-upload": "innala ti [[$1]] iti papeles a pinag-ipan",
-       "import-logentry-upload-detail": "$1 {{PLURAL:$1|a pinagbaliwan|kadagiti pinagbaliwan}}",
-       "import-logentry-interwiki": "nai-transwiki ti $1",
-       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|pinagbaliwan|dagiti pinagbaliwan}} manipud iti $2",
-       "javascripttest": "Subsubokan ti JavaScript",
-       "javascripttest-title": "Agpatpataray ti $1 a subsubokan",
-       "javascripttest-pagetext-noframework": "Daytoy a panid ket nailasin para iti panagpataray ti subsubokan a JavaScript.",
-       "javascripttest-pagetext-unknownframework": "Di amamo a pagsubsubokan a tabas \"$1\".",
-       "javascripttest-pagetext-frameworks": "Pangngaasi nga agpili ti maysa kadagiti sumaganad a pagsubokan a tabas: $1",
-       "javascripttest-pagetext-skins": "Agpili ti kudil a pangipatarayan ti pagsubokan:",
+       "import-rootpage-nosubpage": "Ti nagan ti espasio ti \"$1\" iti ramut ti panid ket saan a mangpalubos kadagiti subpanid.",
+       "importlogpage": "Listaan ti panagala",
+       "importlogpagetext": "Dagiti administratibo a panagala kadagiti panid nga addaan iti pakasaritaan ti panag-urnos manipud kadagiti sabali a wiki.",
+       "import-logentry-upload": "innala ti [[$1]] babaen ti panagikarga ti papeles",
+       "import-logentry-upload-detail": "$1 {{PLURAL:$1|a rebision|kadagiti rebision}}",
+       "import-logentry-interwiki": "nai-transwiki iti $1",
+       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|rebision|dagiti rebision}} manipud ti $2",
+       "javascripttest": "Panagsubok ti JavaScript",
+       "javascripttest-title": "Agpatpataray kadagiti panagsubok ti $1",
+       "javascripttest-pagetext-noframework": "Daytoy a panid ket naireserba para iti panagpataray kadagiti panagsubok ti JavaScript.",
+       "javascripttest-pagetext-unknownframework": "Di ammo a tabas ti panagsubok ti \"$1\".",
+       "javascripttest-pagetext-frameworks": "Pangngaasi nga agpili ti maysa kadagiti sumaganad a tabas ti panagsubok: $1",
+       "javascripttest-pagetext-skins": "Agpili ti kudil a pangipatarayan kadagiti panagsubok:",
        "javascripttest-qunit-intro": "Kitaen ti [ $1 dukomentasion ti panagsubok] idiay mediawiki.org.",
        "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit test suite",
        "tooltip-pt-userpage": "Panidmo nga agar-aramat",
-       "tooltip-pt-anonuserpage": "Ti panid ti agar-aramat daytoy nga IP a pagtaengan nga urnosem a  kasla",
-       "tooltip-pt-mytalk": "Pakitungtungam a panid",
-       "tooltip-pt-anontalk": "Pakitungtungan a maipapan ti panagurnos a naggapu ditoy nga IP a pagtaengan",
+       "tooltip-pt-anonuserpage": "Ti panid ti agar-aramat para iti daytoy nga IP a pagtaengan a kas ur-urnosem",
+       "tooltip-pt-mytalk": "Tungtungam a panid",
+       "tooltip-pt-anontalk": "Pakitungtungan a maipanggep kadagiti panagurnos manipud ti daytoy nga IP a pagtaengan",
        "tooltip-pt-preferences": "Dagiti kakaykayatam",
-       "tooltip-pt-watchlist": "Listaan dagiti panid a sipsiputem para iti panakabalbaliw",
-       "tooltip-pt-mycontris": "Listaan dagiti inaramidmo",
+       "tooltip-pt-watchlist": "Listaan dagiti panid a sipsiputem para iti pannakabalbaliw",
+       "tooltip-pt-mycontris": "Ti listaan dagiti kontribusionmo",
        "tooltip-pt-login": "Maisingasing a sumrekka; nupay kasta, daytoy ket saan a maipapilit",
        "tooltip-pt-logout": "Rummuar",
        "tooltip-ca-talk": "Pagtungtungan a maipapan ti linaon ti panid",
        "tooltip-ca-edit": "Mabalinmo nga urnosen daytoy a panid. Pangngaasi nga aramatem ti buton ti panagipadas sakbay nga agidulin",
        "tooltip-ca-addsection": "Mangirugi ti baro a paset",
        "tooltip-ca-viewsource": "Nasalakniban daytoy a panid.\nMabalinmo a kitaen ti taudanna.",
-       "tooltip-ca-history": "Dagiti napalabas a panagbalbaliw iti daytoy a panid.",
+       "tooltip-ca-history": "Dagiti napalabas a rebision iti daytoy a panid.",
        "tooltip-ca-protect": "Salakniban daytoy a panid",
        "tooltip-ca-unprotect": "Sukatan ti salaknib daytoy a panid",
        "tooltip-ca-delete": "Ikkaten daytoy a panid",
-       "tooltip-ca-undelete": "Isubli dagiti inurnos ti daytoy a panid sakbay idi naikkat",
+       "tooltip-ca-undelete": "Isubli dagiti inurnos a naaramid iti daytoy a panid sakbay idi naikkat",
        "tooltip-ca-move": "Iyalis daytoy a panid",
-       "tooltip-ca-watch": "Inayon daytoy a panid kadagiti bambantayam",
-       "tooltip-ca-unwatch": "Ikkatem daytoy a panid kadagiti bambantayam",
-       "tooltip-search": "Biruken idiay {{SITENAME}}",
+       "tooltip-ca-watch": "Inayon daytoy a panid iti listaan ti bambantayam",
+       "tooltip-ca-unwatch": "Ikkaten daytoy a panid manipud ti listan ti bambantayam",
+       "tooltip-search": "Agbiruk iti {{SITENAME}}",
        "tooltip-search-go": "Inka idiay panid nga adda kastoy a naganna no adda",
        "tooltip-search-fulltext": "Biruken dagiti panid para iti daytoy a testo",
        "tooltip-p-logo": "Sarungkaran ti umuna a panid",
        "tooltip-n-mainpage": "Sarungkaran ti umuna a panid",
        "tooltip-n-mainpage-description": "Sarungkaran ti umuna a panid",
-       "tooltip-n-portal": "Maipapan ti gandat, ti aniaman a maaramidam, no sadino ti pagbirukam kadagiti banbanag",
-       "tooltip-n-currentevents": "Agsapul iti lugar ti likud a pakaammo kadagiti agdama a paspasamak",
-       "tooltip-n-recentchanges": "Listaan dagiti naudi a sinukatan iti wiki.",
-       "tooltip-n-randompage": "Mangiparuar iti pugto a panid",
+       "tooltip-n-portal": "Maipapan ti gandat, ti aniaman a maaramidmo, no sadino ti pagbirukam kadagiti banbanag",
+       "tooltip-n-currentevents": "Agsapul ti pakaammo kadagiti agdama a paspasamak",
+       "tooltip-n-recentchanges": "Listaan dagiti naudi a sinukatan iti wiki",
+       "tooltip-n-randompage": "Agikarga iti pugto a panid",
        "tooltip-n-help": "Ti lugar a pagsapulan",
-       "tooltip-t-whatlinkshere": "Listaan ti am-amin a pampanid ti wiki a nakasilpo ditoy",
-       "tooltip-t-recentchangeslinked": "Kinaudian a sinukatan  dagiti panid a nakasilpo ditoy a panid",
+       "tooltip-t-whatlinkshere": "Listaan ti amin a pampanid ti wiki a nakasilpo ditoy",
+       "tooltip-t-recentchangeslinked": "Kaudian a balbaliw kadagiti panid a naisilpo manipud ti daytoy a panid",
        "tooltip-feed-rss": "RSS a pakan para iti daytoy a panid",
        "tooltip-feed-atom": "Atom a pakan para iti daytoy a panid",
-       "tooltip-t-contributions": "Kitaen ti listaan dagiti naaramid daytoy nga agar-aramat",
+       "tooltip-t-contributions": "Ti lstaan dagiti kontribusion iti daytoy nga agar-aramat",
        "tooltip-t-emailuser": "Patulodan ti esurat daytoy nga agar-aramat",
-       "tooltip-t-upload": "Agipan iti papeles",
+       "tooltip-t-upload": "Agikarga kadagiti papeles",
        "tooltip-t-specialpages": "Listaan ti amin nga espesial a pampanid",
-       "tooltip-t-print": "Maimaldit a bersion ti panid",
-       "tooltip-t-permalink": "Agnanayon a silpo ti daytoy a panagbaliw ti panid",
+       "tooltip-t-print": "Maimaldit a bersion iti daytoy a panid",
+       "tooltip-t-permalink": "Permanente a silpo iti daytoy a rebision ti panid",
        "tooltip-ca-nstab-main": "Kitaen ti naglaon a panid",
        "tooltip-ca-nstab-user": "Kitaen ti panid ti agar-aramat",
        "tooltip-ca-nstab-media": "Kitaen ti panid ti midia",
-       "tooltip-ca-nstab-special": "Maysa daytoy nga espesial a panid, saanmo a mismo a maurnos daytoy a panid",
+       "tooltip-ca-nstab-special": "Daytoy ket espesial a panid, saanmo a mismo a maurnos daytoy a panid",
        "tooltip-ca-nstab-project": "Kitaen ti panid ti gandat",
        "tooltip-ca-nstab-image": "Kitaen ti panid ti papeles",
        "tooltip-ca-nstab-mediawiki": "Kitaen ti mensahe ti sistema",
        "tooltip-ca-nstab-category": "Kitaen ti panid ti kategoria",
        "tooltip-minoredit": "Markaan daytoy a kas bassit a panag-urnos",
        "tooltip-save": "Idulin dagiti sinukatam",
-       "tooltip-preview": "Ipadas dagiti sinukatam, pangngaasim nga usarem daytoy sakbay nga idulinmo ti panid!",
+       "tooltip-preview": "Ipadas dagiti sinukatam, pangngaasi nga usarem daytoy sakbay nga idulin ti panid!",
        "tooltip-diff": "Ipakita no ania dagiti sinukatan nga inaramidmo iti testo",
-       "tooltip-compareselectedversions": "Kitaen ti naggidiatan dagiti dua a napili a bersion ti daytoy a panid.",
-       "tooltip-watch": "Inayon daytoy a panid idiay listaan dagiti bambantayam",
+       "tooltip-compareselectedversions": "Kitaen ti naggidiatan dagiti dua a napili a bersion iti daytoy a panid.",
+       "tooltip-watch": "Inayon daytoy a panid iti listaan ti bambantayam",
        "tooltip-watchlistedit-normal-submit": "Ikkaten dagiti titulo",
        "tooltip-watchlistedit-raw-submit": "Pabaruen ti listaan ti bambantayan",
-       "tooltip-recreate": "Aramidem manen ti panid urayno dati a naikkat.",
-       "tooltip-upload": "Rugian ti agip-ipan",
-       "tooltip-rollback": "\"Baliktaden\"   isubli ti inurnos (dagiti inurnos) ti daytoy a panid ti kinaudi a nangaramid iti maysa a takla",
-       "tooltip-undo": "\"Ibabawi\" ipasubli daytoy nga urnos ken lukatanna ti kinabuklan ti urnos iti panagpadas. Agpabalin daytoy a mangikabil ti rason idiay pinakabuklan.",
+       "tooltip-recreate": "Partuaten manen ti panid urayno dati a naikkat.",
+       "tooltip-upload": "Irugi ti panagikarga",
+       "tooltip-rollback": "\"Baliktaden\"  isubli ti inurnos (dagiti inurnos) iti daytoy a panid iti naudi a kontributor iti maysa a pindut",
+       "tooltip-undo": "\"Ibabawi\" ipasubli daytoy nga urnos ken lukatanna ti porma ti pagurnosan iti panagpadas a moda. Mangpalubos daytoy ti agikabil ti rason iti pakabuklan.",
        "tooltip-preferences-save": "Idulin dagiti kakaykayatam",
-       "tooltip-summary": "Ikabil ti bassit a pakabuklan",
-       "anonymous": "Di am-ammo {{PLURAL:$1|nga agar-aramat|kadagiti agar-aramat}} iti {{SITENAME}}",
+       "tooltip-summary": "Agikabil ti bassit a pakabuklan",
+       "anonymous": "Di ammo {{PLURAL:$1|nga agar-aramat|kadagiti agar-aramat}} iti {{SITENAME}}",
        "siteuser": "{{SITENAME}} nga agar-aramat $1",
-       "anonuser": "{{SITENAME}} di amammo nga agar-aramat $1",
-       "lastmodifiedatby": "Daytoy a panid ket naudi a binalbaliwan idi $2, $1 ni $3.",
+       "anonuser": "{{SITENAME}} di ammo nga agar-aramat $1",
+       "lastmodifiedatby": "Daytoy a panid ket naudi a nabaliwan idi $2, $1 babaen ni $3.",
        "othercontribs": "Naibasar iti obra ni $1.",
        "others": "dadduma pay",
        "siteusers": "{{SITENAME}}  {{PLURAL:$2|agar-aramat|dagiti agar-aramat}}  $1",
-       "anonusers": "{{SITENAME}} di am-ammo {{PLURAL:$2|nga agar-aramat|a digiti agar-aramat}} $1",
-       "creditspage": "Dagiti pagdaydayaw ti panid",
-       "nocredits": "Awan dagiti pakaammo ti pammadayaw nga adda ditoy a panid.",
-       "spamprotectiontitle": "Panagsalaknib a sagat  para ti spam",
-       "spamprotectiontext": "Ti testo a kayatmo nga idulin ket sinerraan ti sagat ti spam.\nDaytoy ket mabalin a gapuanan babaen ti silpo a naiparit ti akin ruar a pagsaadan.",
-       "spamprotectionmatch": "Ti sumaganad a testo ti nangirugi ti sagat ti spam: $1",
-       "spambot_username": "Panagdalus iti MediaWiki spam",
-       "spam_reverting": "Ipasubli ti kinaudi a panagbaliw nga awan dagiti linaon a silpo idiay $1",
-       "spam_blanking": "Dagiti amin a panagbaliw ket aglaon kadagiti silpo idiay $1, iblanko",
-       "spam_deleting": "Dagiti amin a panagbaliw ket naglaon kadagiti silpo idiay $1, ik-ikkaten",
-       "simpleantispam-label": "Kontra-spam a panagkita.\n '''Saan''' a suratan daytoy!",
+       "anonusers": "{{SITENAME}} di ammo {{PLURAL:$2|nga agar-aramat|a digiti agar-aramat}} $1",
+       "creditspage": "Dagiti pammadayaw ti panid",
+       "nocredits": "Awan dagiti pakaammo ti pammadayaw a magun-od para iti daytoy a panid.",
+       "spamprotectiontitle": "Panagsalaknib a sagat para iti spam",
+       "spamprotectiontext": "Ti testo a kayatmo nga idulin ket sinerraan babaen ti sagat ti spam.\nDaytoy ket mabalin a gapuanan babaen ti silpo a naiparit ti akin ruar a sitio.",
+       "spamprotectionmatch": "Ti sumaganad a testo ket isu ti nangkalbit ti sagat ti spam: $1",
+       "spambot_username": "Panagdalus iti spam ti MediaWiki",
+       "spam_reverting": "Ipasubli ti naudi a rebision nga awan dagiti linaon a silpo iti $1",
+       "spam_blanking": "Amin dagiti rebision ket aglaon kadagiti silpo iti $1, iblanko",
+       "spam_deleting": "Amin dagiti rebision ket aglaon kadagiti silpo iti $1, ik-ikkaten",
+       "simpleantispam-label": "Pammasingked ti anti-spam.\n<strong>SAAN</strong> a kargaan daytoy!",
        "pageinfo-title": "Pakaammo para iti \"$1\"",
-       "pageinfo-not-current": "Pasensia, saan a mabalin ti mangited ti pakaammo para kadagiti daan a panagbalbaliw.",
+       "pageinfo-not-current": "Pasensia, saan a mabalin ti mangited ti pakaammo para kadagiti daan a rebision.",
        "pageinfo-header-basic": "Kangrunaan a pakaammo",
        "pageinfo-header-edits": "Pakasaritaan ti inurnos",
        "pageinfo-header-restrictions": "Panagsalaknib ti panid",
        "pageinfo-redirects-name": "Bilang dagiti baw-ing iti daytoy a panid",
        "pageinfo-subpages-name": "Bilang dagiti subpanid iti daytoy a panid",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|baw-ing|bawbaw-ing}}; $3 {{PLURAL:$3|saan a baw-ing|saan a bawbaw-ing}})",
-       "pageinfo-firstuser": "Nagpartuat ti panid",
+       "pageinfo-firstuser": "Nagpartuat iti panid",
        "pageinfo-firsttime": "Petsa a pannakapartuat ti panid",
-       "pageinfo-lastuser": "Kinaudi a nagurnos",
+       "pageinfo-lastuser": "Kinaudi nga editor",
        "pageinfo-lasttime": "Petsa ti kinaudi a panag-urnos",
        "pageinfo-edits": "Dagup a bilang dagiti inurnos",
        "pageinfo-authors": "Dagup a bilang dagiti naisangsangayan a mannurat",
        "pageinfo-templates": "Nailak-am {{PLURAL:$1|a plantilia|a planplantilia}} ($1)",
        "pageinfo-transclusions": "{{PLURAL:$1|Panid|Pampanid}} a nakailak-aman ($1)",
        "pageinfo-toolboxlink": "Pakaammo ti panid",
-       "pageinfo-redirectsto": "Maibaw-ing idiay",
+       "pageinfo-redirectsto": "Maibaw-ing iti",
        "pageinfo-redirectsto-info": "pakaammo",
        "pageinfo-contentpage": "Naibilang a kas naglaon a panid",
        "pageinfo-contentpage-yes": "Wen",
        "pageinfo-protect-cascading": "Dagiti panagsalaknib ket agsariap manipud ditoy",
        "pageinfo-protect-cascading-yes": "Wen",
-       "pageinfo-protect-cascading-from": "Dagiti panagsalaknib ket agsariap manipud idiay",
+       "pageinfo-protect-cascading-from": "Dagiti panagsalaknib ket agsariap manipud ti",
        "pageinfo-category-info": "Pakaammo ti kategoria",
        "pageinfo-category-pages": "Bilang dagiti panid",
        "pageinfo-category-subcats": "Bilang dagiti subkategoria",
        "markaspatrolleddiff": "Markaan a kas napatruliaan",
        "markaspatrolledtext": "Markaan daytoy a panid a kas napatruliaan",
        "markedaspatrolled": "Markaan a kas napatruliaan",
-       "markedaspatrolledtext": "Ti napili a panagbaliw iti [[:$1]] ket namarkaan a kas napatrulian.",
-       "rcpatroldisabled": "Nabaldado ti panagpatrulia kadagiti kinaudi a pinagbaliw",
-       "rcpatroldisabledtext": "Dagiti langa a patrulia ti kinaudi a pinagbaliw ket agdama a nabaldado",
+       "markedaspatrolledtext": "Ti napili a rebision iti [[:$1]] ket namarkaan a kas napatrulian.",
+       "rcpatroldisabled": "Nabaldado ti panagpatrulia iti kaudian balbaliw",
+       "rcpatroldisabledtext": "Dagiti langa ti patrulia iti kaudian a balbaliw ket agdama a nabaldado.",
        "markedaspatrollederror": "Madi a mamarkaan a kas napatruliaan",
        "markedaspatrollederrortext": "Nasken a naganam ti maysa a rebision tapno mamarkaan a kas napatruliaan.",
        "markedaspatrollederror-noautopatrol": "Saanmo a mabalin a markaan dagita sinukatam a kas napatruliaan.",
-       "markedaspatrollednotify": "Daytoy a panagbaliw ti $1 ket namarkaanen a kas napatruliaan.",
+       "markedaspatrollednotify": "Daytoy a panagbaliw iti $1 ket namarkaanen a kas napatruliaan.",
        "markedaspatrollederrornotify": "Ti panagmarka a kas napatruliaan ket napaay.",
        "patrol-log-page": "Listaan ti napatruliaan",
-       "patrol-log-header": "Daytoy ket listaan dagiti napatruliaan a panagbabaliw.",
+       "patrol-log-header": "Daytoy ket listaan dagiti napatruliaan a rebision.",
        "log-show-hide-patrol": "$1 listaan ti napatruliaan",
-       "deletedrevision": "Naikkat ti daan a binaliwan $1",
+       "deletedrevision": "Naikkat a daan a rebision ti $1",
        "filedeleteerror-short": "Biddut ti panakaikkat ti papeles: $1",
        "filedeleteerror-long": "Adda nasarakan a biddut idi agikikkat ti papeles:\n\n$1",
-       "filedelete-missing": "Ti papeles \"$1\" ket saan a maikkat, ngamin ket awanen dita.",
-       "filedelete-old-unregistered": "Ti nainagan a pinagbaliw ti papeles \"$1\" ket awan idiay database.",
-       "filedelete-current-unregistered": "Ti nainagan a papeles \"$1\" ket awan idiay database.",
-       "filedelete-archive-read-only": "Ti pagidulinan a direktorio \"$1\" ket saan a masuratan ti webserver.",
-       "previousdiff": "← Napalabas a naurnos",
-       "nextdiff": "Sumaruno a naurnos →",
-       "mediawarning": "'''Ballaag'': Daytoy a papeles ket naglaon ti dakes a kodigo.\nNo usarem daytoy, baka makompromiso ti sistema.",
-       "imagemaxsize": "Ti patingga a kadakkel ti papeles:<br />''(para dagiti pagpalpalawag ti papeles a panid)''",
+       "filedelete-missing": "Ti papeles ti \"$1\" ket saan a maikkat, ngamin ket awanen dita.",
+       "filedelete-old-unregistered": "Ti nainagan a rebison ti papeles ti \"$1\" ket awan iti database.",
+       "filedelete-current-unregistered": "Ti nainagan a papeles ti \"$1\" ket awan iti database.",
+       "filedelete-archive-read-only": "Ti arkibo a direktorio ti \"$1\" ket saan a masuratan babaen ti webserver.",
+       "previousdiff": "← Nadadaan nga urnos",
+       "nextdiff": "Barbaro nga urnos →",
+       "mediawarning": "<strong>Ballaag:</strong> Daytoy a papeles ket naglaon ti dakes a kodigo.\nNo usarem daytoy, baka makompromiso ti sistema.",
+       "imagemaxsize": "Ti patingga a kadakkel ti papeles:<br /><em>(para kadagiti panid ti deskripsion ti papeles)</em>",
        "thumbsize": "Rukod ti bassit a ladawan:",
        "widthheightpage": "$1 × $2, $3 a {{PLURAL:$3|panid|pampanid}}",
        "file-info": "kadakkel ti papeles: $1, MIME a kita: $2",
        "show-big-image-other": "Sabali {{PLURAL:$2|a resolusion|kadagiti resolusion}}: $1.",
        "show-big-image-size": "$1 × $2 dagiti piksel",
        "file-info-gif-looped": "nasiluan",
-       "file-info-gif-frames": "$1 {{PLURAL:$1|a kuadro| kadagiti kuadro}}",
+       "file-info-gif-frames": "$1 {{PLURAL:$1|a kuadro|a kuadkuadro}}",
        "file-info-png-looped": "nasiluan",
        "file-info-png-repeat": "inay-ayam ti $1 {{PLURAL:$1|a beses|a besbeses}}",
-       "file-info-png-frames": "$1 {{PLURAL:$1|a kuadro| kadagiti kuadro}}",
-       "file-no-thumb-animation": "'''Paammo: Gapu kadagiti teknikal a pannakaipatingga, dagiti bassit a ladawan ti daytoy a papeles ket saanto a maanimado.'''",
-       "file-no-thumb-animation-gif": "'''Paammo: Gapu kadagiti teknikal a pannakaipatingga, dagiti bassit a ladawan ti nangato a resolusion dagiti GIF a ladawan a kas daytoy ket saanto a maanimado.'''",
-       "newimages": "Galeria dagiti kabarbaro a papeles",
-       "imagelisttext": "Adda dita baba ti listaan ti ''$1''' {{PLURAL:$1|a papeles|dagiti papeles}} a nailasin a kas $2.",
-       "newimages-summary": "Daytoy nga espesial a panid ket ipakitana ti kinaudi a pinag-ipan kadagiti papeles.",
+       "file-info-png-frames": "$1 {{PLURAL:$1|a kuadro| a kuadkuadro}}",
+       "file-no-thumb-animation": "<strong>Nota: Gapu kadagiti teknikal a pannakaipatingga, dagiti bassit a ladawan iti daytoy a papeles ket saanto a maanimado.</strong>",
+       "file-no-thumb-animation-gif": "<strong>Nota: Gapu kadagiti teknikal a pannakaipatingga, dagiti bassit a ladawan ti nangato a resolusion dagiti GIF a ladawan a kas daytoy ket saanto a maanimado.</strong>",
+       "newimages": "Galeria dagiti baro a papeles",
+       "imagelisttext": "Adda dita baba ti listaan ti <strong>$1</strong> {{PLURAL:$1|a papeles|a pappapeles}} a nailasin a kas $2.",
+       "newimages-summary": "Daytoy nga espesial a panid ket ipakitana ti naudi a panagikarga kadagiti papeles.",
        "newimages-legend": "Sagat",
-       "newimages-label": "Nagan ti papeles (wenno paset na) :",
+       "newimages-label": "Nagan ti papeles (wenno pasetna) :",
        "newimages-showbots": "Ipakita dagiti naikarga babaen dagiti bot",
        "noimages": "Awan ti makita.",
        "ilsubmit": "Biruken",
        "bydate": "babaen ti petsa",
-       "sp-newimages-showfrom": "Iparang dagiti baro a papeles mangrugi iti $2, $1",
-       "seconds": "{{PLURAL:$1|$1 segundo|$1 segundo}}",
-       "minutes": "{{PLURAL:$1|$1 minuto|$1 minutos}}",
+       "sp-newimages-showfrom": "Iparang dagiti baro a papeles a mangrugi manipud idi $2, $1",
+       "seconds": "{{PLURAL:$1|$1 a segundo|$1 a segsegundo}}",
+       "minutes": "{{PLURAL:$1|$1 a minuto|$1 a minminuto}}",
        "hours": "{{PLURAL:$1|$1 nga oras|$1 nga or-oras}}",
        "days": "{{PLURAL:$1|$1 nga aldaw|$1 nga al-aldaw}}",
        "weeks": "{{PLURAL:$1|$1 a lawas|$1 a law-lawas}}",
        "months": "{{PLURAL:$1|$1 a bulan|$1 a bulbulan}}",
        "years": "{{PLURAL:$1|$1 a tawen|$1 a tawtawen}}",
-       "ago": "$1 nagtapos",
+       "ago": "nagtapos idi $1",
        "just-now": "tatta laeng",
-       "hours-ago": "$1 nga {{PLURAL:$1|oras|or-oras}} ti napalabas",
-       "minutes-ago": "$1 a {{PLURAL:$1|minuto|minutos}} ti napalabas",
-       "seconds-ago": "$1 a {{PLURAL:$1|segundo|seg-segundo}} ti napalabas",
-       "monday-at": "Lunes idiay $1",
-       "tuesday-at": "Martes idiay $1",
-       "wednesday-at": "Mierkoles idiay $1",
-       "thursday-at": "Huebes idiay $1",
-       "friday-at": "Biernes idiay $1",
-       "saturday-at": "Sabado idiay $1",
-       "sunday-at": "Dominggo idiay $1",
-       "yesterday-at": "Idi kalman idiay $1",
-       "bad_image_list": "Ti kinabuklan ket kas iti sumaganad:\n\nDagiti laeng banag iti listaan (linlinia a mangrugi iti *) ti mabalin.\nTi umuna a silpo iti maysa a linia ket nasken a nakasilpo iti maysa a saan a nasayaat a papeles.\nAnia man a sumarsaruno a silsilpo iti isu met laeng a linia ket maikonsidera kas mailaksid, kas pagarigan, dagiti panid a pakasarakan ti papeles a kas nakalinia.",
+       "hours-ago": "$1 nga {{PLURAL:$1|oras|or-oras}} ti nagtapos",
+       "minutes-ago": "$1 a {{PLURAL:$1|minuto|minminuto}} ti nagtapos",
+       "seconds-ago": "$1 a {{PLURAL:$1|segundo|segsegundo}} ti nagtapos",
+       "monday-at": "Lunes iti $1",
+       "tuesday-at": "Martes iti $1",
+       "wednesday-at": "Mierkoles iti $1",
+       "thursday-at": "Huebes iti $1",
+       "friday-at": "Biernes iti $1",
+       "saturday-at": "Sabado iti $1",
+       "sunday-at": "Domingo iti $1",
+       "yesterday-at": "Idi kalman iti $1",
+       "bad_image_list": "Ti pormat ket kas iti sumaganad:\n\nDagiti laeng banag iti listaan (linlinia a mangrugi iti *) ti mabalin.\nTi umuna a silpo iti maysa a linia ket nasken a nakasilpo iti maysa a saan a nasayaat a papeles.\nAnia man a sumarsaruno a silsilpo iti isu met laeng a linia ket maikonsidera kas mailaksid, kas pagarigan, dagiti panid a pakasarakan ti papeles a kas nakalinia.",
        "metadata": "Metadata",
        "metadata-help": "Daytoy a papeles ket naglaon ti naipatinayon a pakaammo, a mabalin a nainayon manipud ti dihital a kamera wenno skanner a naaramat a pangpartuat wenno pang-digitize itoy.\nNo ti papeles ket saan a nabalbaliwan manipud iti kasisigud a kasasaad, adda dagiti sumagmamano a salaysay a mabalin a saan a napno a maipakita ti nabaliwan a papeles.",
        "metadata-expand": "Ipakita dagiti napaatiddog a salaysay",
        "exif-orientation": "Pagturongan",
        "exif-samplesperpixel": "Bilang dagiti komponente",
        "exif-planarconfiguration": "Pannaka-urnos ti datos",
-       "exif-ycbcrsubsampling": "Subsampling ratio ti Y iti C",
+       "exif-ycbcrsubsampling": "Subwadan pannakaibagi ti Y iti C",
        "exif-ycbcrpositioning": "Y ken C a panakaipatakderan",
        "exif-xresolution": "Horisontal a resolusion",
-       "exif-yresolution": "nakatakder a resolusion",
-       "exif-stripoffsets": "Lokasion ti datos ti imahen",
-       "exif-rowsperstrip": "Bilang ti ar-aray tunggal maysa a strip",
-       "exif-stripbytecounts": "Bytes per compressed strip",
-       "exif-jpeginterchangeformat": "Offset to JPEG SOI",
-       "exif-jpeginterchangeformatlength": "Bytes ti JPEG a datos",
-       "exif-whitepoint": "White point chromaticity",
-       "exif-primarychromaticities": "Chromaticities dagiti primarities",
-       "exif-referenceblackwhite": "Reperensia a kuwenta iti agparis a nangisit ken puraw",
+       "exif-yresolution": "Bertikal a resolusion",
+       "exif-stripoffsets": "Lokasion ti datos ti ladawan",
+       "exif-rowsperstrip": "Bilang ti ar-aray tunggal maysa a pirgis",
+       "exif-stripbytecounts": "Dagiti byte tunggal maysa a natalmegan  a pirgis",
+       "exif-jpeginterchangeformat": "Timbengan iti JPEG SOI",
+       "exif-jpeginterchangeformatlength": "Dagiti byte ti datos ti JPEG",
+       "exif-whitepoint": "Kromatisidad ti puntos ti puraw",
+       "exif-primarychromaticities": "Dagiti kromasidad dagiti primaridad",
+       "exif-referenceblackwhite": "Reperensia a patpateg iti agparis a nangisit ken puraw",
        "exif-datetime": "Panagsukat ti papeles ti petsa ken oras",
-       "exif-imagedescription": "Titulo ti imahen",
+       "exif-imagedescription": "Titulo ti ladawan",
        "exif-make": "Nangpartuat iti kamera",
        "exif-model": "Modelo ti kamera",
-       "exif-software": "Naaramat a software",
+       "exif-software": "Naaramat a sopwer",
        "exif-artist": "Mannurat",
-       "exif-copyright": "Nakatengngel iti kaberngan ti kopia",
-       "exif-exifversion": "Exif a bersion",
-       "exif-flashpixversion": "Nasuportaran a Flashpix a bersion",
-       "exif-colorspace": "Kolor ti lugar",
-       "exif-componentsconfiguration": "Ti kayat a saoen ti tunggal maysa a nagyan",
-       "exif-compressedbitsperpixel": "Moda ti kompresion ti imahen",
-       "exif-pixelydimension": "Kaaba ti imahen",
-       "exif-pixelxdimension": "Katayag ti imahen",
+       "exif-copyright": "Nakatengngel iti karbengan ti kopia",
+       "exif-exifversion": "Bersion ti Exif",
+       "exif-flashpixversion": "Nasuportaran a bersion ti Flashpix",
+       "exif-colorspace": "Espasio ti maris",
+       "exif-componentsconfiguration": "Kaibuksilan iti tunggal maysa a komponente",
+       "exif-compressedbitsperpixel": "Moda ti kompresion ti ladawan",
+       "exif-pixelydimension": "Kaakaba ti ladawan",
+       "exif-pixelxdimension": "Katayag ti ladawan",
        "exif-usercomment": "Dagiti komentario ti agar-aramat",
-       "exif-relatedsoundfile": "Mainaig nga nangnangeg a papeles",
-       "exif-datetimeoriginal": "Petsa ken oras ti panakaaramid ti datos",
-       "exif-datetimedigitized": "Petsa ken oras ti panang-digitizing",
+       "exif-relatedsoundfile": "Mainaig a papeles ti audio",
+       "exif-datetimeoriginal": "Petsa ken oras ti pannakaaramid ti datos",
+       "exif-datetimedigitized": "Petsa ken oras ti panang-dihitado",
        "exif-subsectime": "DateTime subseconds",
        "exif-subsectimeoriginal": "DateTimeOriginal subseconds",
        "exif-subsectimedigitized": "DateTimeDigitized subseconds",
        "exif-gpstrackref": "Reperensia iti direksion ti panaggunay",
        "exif-gpstrack": "Direksion ti kuti",
        "exif-gpsimgdirectionref": "Reperensia iti direksion ti imahen",
-       "exif-gpsimgdirection": "Direksion ti imahen",
-       "exif-gpsmapdatum": "Naaramat a geodetic survey data",
-       "exif-gpsdestlatituderef": "Reperensia iti latitude a papanan",
-       "exif-gpsdestlatitude": "Latitude ti papanan",
-       "exif-gpsdestlongituderef": "Reperensia iti longitude a papanan",
-       "exif-gpsdestlongitude": "Longitude ti papanan",
+       "exif-gpsimgdirection": "Direksion ti ladawan",
+       "exif-gpsmapdatum": "Datos nga inaramat ti geodetiko a panagsukimat",
+       "exif-gpsdestlatituderef": "Reperensia iti papanan a latitud",
+       "exif-gpsdestlatitude": "Papanan a latitud",
+       "exif-gpsdestlongituderef": "Reperensia iti papanan a longitud",
+       "exif-gpsdestlongitude": "Papanan a longitud",
        "exif-gpsdestbearingref": "Reperensia iti dalan a papanan",
        "exif-gpsdestbearing": "Dalan ti papanan",
        "exif-gpsdestdistanceref": "Reperensia ti kaadayo  ti papanan",
-       "exif-gpsdestdistance": "Kaadayo iti papanan na",
-       "exif-gpsprocessingmethod": "Nagan ti kastoy a pinagaramid ti GPS",
-       "exif-gpsareainformation": "Nagan ti GPS area",
+       "exif-gpsdestdistance": "Kaadayo iti papanan",
+       "exif-gpsprocessingmethod": "Nagan ti panagproseo a pamay-an ti GPS",
+       "exif-gpsareainformation": "Nagan ti lugar ti GPS",
        "exif-gpsdatestamp": "Petsa ti GPS",
-       "exif-gpsdifferential": "Nasimpa apaggiddiatan ti GPS",
-       "exif-jpegfilecomment": "Komento ti JPEG a papeles",
-       "exif-keywords": "Nangnangruna a bal-balikas",
-       "exif-worldregioncreated": "Ti parte ti lubong nga nakaalaan ti litrato",
-       "exif-countrycreated": "Ti pagilian nga nakaalaan ti litrato",
-       "exif-countrycodecreated": "Kodigo ti pagilian nga nakaalaan ti litrato",
-       "exif-provinceorstatecreated": "Probinsia wenno estado nga nakaalaan ti litrato",
-       "exif-citycreated": "Ti siudad nga nakaalaan ti litrato",
+       "exif-gpsdifferential": "Nasimpa a paggiddiatan ti GPS",
+       "exif-jpegfilecomment": "Komentario ti papeles ti JPEG",
+       "exif-keywords": "Nangruna a balbalikas",
+       "exif-worldregioncreated": "Rehion ti lubong a nakaalaan ti retrato",
+       "exif-countrycreated": "Pagilian a nakaalaan ti retrato",
+       "exif-countrycodecreated": "Kodigo ti pagilian a nakaalaan ti retrato",
+       "exif-provinceorstatecreated": "Probinsia wenno estado a nakaalaan ti retrato",
+       "exif-citycreated": "Siudad a nakaalaan ti retrato",
        "exif-sublocationcreated": "Sabali pay a lokasion ti siudad a nakaalaan ti retrato",
-       "exif-worldregiondest": "Paset ti lubong a naipakita",
+       "exif-worldregiondest": "Rehion ti lubong a naipakita",
        "exif-countrydest": "Naipakita a pagilian",
-       "exif-countrycodedest": "Kodigo ti pagilian a naipakita",
+       "exif-countrycodedest": "Kodigo para ti pagilian a naipakita",
        "exif-provinceorstatedest": "Probinsia wenno estado a naipakita",
        "exif-citydest": "Naipakita a siudad",
-       "exif-sublocationdest": "Sabali pay a lokasion ti siudad a naipakita",
-       "exif-objectname": "Pandek a titulo",
+       "exif-sublocationdest": "Sublokasion ti siudad a naipakita",
+       "exif-objectname": "Ababa a titulo",
        "exif-specialinstructions": "Kangrunaan a panagipalpalawag",
        "exif-headline": "Paulo",
        "exif-credit": "Pammadayaw/Nangted",
        "exif-source": "Taudan",
-       "exif-editstatus": "Panagurnos a kasasaad ti imahen",
+       "exif-editstatus": "Panagurnos a kasasaad ti ladawan",
        "exif-urgency": "Ganat",
        "exif-fixtureidentifier": "Nagan ti naikabit a banag",
        "exif-locationdest": "Lugar a naibaga",
        "exif-iimversion": "Bersion ti IIM",
        "exif-iimcategory": "Kategoria",
        "exif-iimsupplementalcategory": "Dagiti sabali pay a kategoria",
-       "exif-datetimeexpires": "Saan nga usaren ti kallabes nga",
+       "exif-datetimeexpires": "Saan nga usaren kalpasanna",
        "exif-datetimereleased": "Nakairuar idi",
-       "exif-originaltransmissionref": "Kinasigud a pinagipatulod iti kodigo ti papanan",
-       "exif-identifier": "Panagilasin",
+       "exif-originaltransmissionref": "Kasisigud a transmision ti kodigo ti lokasion",
+       "exif-identifier": "Panangilasin",
        "exif-lens": "Lente nga inusar",
        "exif-serialnumber": "Agsasaruno a numero ti kamera",
        "exif-cameraownername": "Akinkukua ti kamera",
        "exif-label": "Etiketa",
        "exif-datetimemetadata": "Petsa ti kinaudi a panagbaliw ti metadata",
-       "exif-nickname": "Di pormal a nagan ti imahen",
-       "exif-rating": "Pategan (ti maysa kadagiti  5)",
-       "exif-rightscertificate": "Paneknek ti panagtaripatu dagiti karbengan",
-       "exif-copyrighted": "Kasasaad ti karbengan-panagipablaak",
-       "exif-copyrightowner": "Akinkukua ti kaberngan-pinagipablaak",
-       "exif-usageterms": "Panag-uasar a ban-banag",
-       "exif-webstatement": "Sarita ti insao ti karbengan ti kopia nga addan ti online",
-       "exif-originaldocumentid": "Naisangsangyan nga ID iti kinasigud a dokumento",
-       "exif-licenseurl": "URL iti ti karbengan ti kopia a lisensia",
+       "exif-nickname": "Di pormal a nagan ti ladwan",
+       "exif-rating": "Pategan (ti maysa kadagiti 5)",
+       "exif-rightscertificate": "Sertipikado ti panagtaripato kadagiti karbengan",
+       "exif-copyrighted": "Kasasaad ti karbengan ti kopia",
+       "exif-copyrightowner": "Akinkukua ti karbengan ti kopia",
+       "exif-usageterms": "Dagiti termino ti panag-usar",
+       "exif-webstatement": "Insasao ti karbengan ti kopia nga addaan iti online",
+       "exif-originaldocumentid": "Naisangayan nga ID iti kinasigud a dokumento",
+       "exif-licenseurl": "URL para iti lisensia ti karbengan ti kopia",
        "exif-morepermissionsurl": "Sabali a pakaammo ti lisensia",
-       "exif-attributionurl": "No usaren manen daytoy nga obra, pangngaasi nga agisilpo idiay",
-       "exif-preferredattributionname": "No usaren manen daytoy nga obra, pangngaasi a padayawen ni",
-       "exif-pngfilecomment": "Komentario ti PNG a papeles",
+       "exif-attributionurl": "No usaren manen daytoy nga obra, pangngaasi nga isilpo iti",
+       "exif-preferredattributionname": "No usaren manen daytoy nga obra, pangngaasi a padayawan ni",
+       "exif-pngfilecomment": "Komentario ti papeles ti PNG",
        "exif-disclaimer": "Renunsia",
-       "exif-contentwarning": "Ballaag ti nagyan",
-       "exif-giffilecomment": "Komentario ti GIF a papeles",
+       "exif-contentwarning": "Ballaag ti linaon",
+       "exif-giffilecomment": "Komentario ti papeles ti GIF",
        "exif-intellectualgenre": "Kita ti banag",
        "exif-subjectnewscode": "Kodigo ti suheto",
-       "exif-scenecode": "Buya ti kodigo nga IPTC",
-       "exif-event": "Paspasamak a naibaga",
-       "exif-organisationinimage": "Kaurnusan a naibaga",
-       "exif-personinimage": "Ti tao a naibaga",
-       "exif-originalimageheight": "Kangato ti imahen sakbay nga naputed",
-       "exif-originalimagewidth": "Kalawa ti imahen sakbay nga naputed",
+       "exif-scenecode": "Buya ti kodigo ti IPTC",
+       "exif-event": "Pasamak a naibaga",
+       "exif-organisationinimage": "Gunglo a naibaga",
+       "exif-personinimage": "Tao a naibaga",
+       "exif-originalimageheight": "Katayag ti ladawan sakbay a naputed",
+       "exif-originalimagewidth": "Kaakaba ti ladawan sakbay a naputed",
        "exif-compression-1": "Saan a napespes",
-       "exif-copyrighted-true": "Nakarbengan a kopia",
-       "exif-copyrighted-false": "Saan a naiyasentar ti kasasaad ti karbengan ti kopia",
+       "exif-copyrighted-true": "Nakarbengan ti kopia",
+       "exif-copyrighted-false": "Saan a naisaad ti kasasaad ti karbengan ti kopia",
        "exif-unknowndate": "Di ammo a petsa",
        "exif-orientation-1": "Kadawyan",
-       "exif-orientation-2": "Binaliktad a nagilad",
+       "exif-orientation-2": "Horisontal a binaliktad",
        "exif-orientation-3": "Naipusipus iti 180°",
-       "exif-orientation-4": "Binaliktad nga agpangato",
-       "exif-orientation-5": "Naipisipus iti 90° CCW ken nabaliktad nga agtindek",
+       "exif-orientation-4": "Bertikal a binaliktad",
+       "exif-orientation-5": "Naipisipus iti 90° CCW ken bertikal a binaliktad",
        "exif-orientation-6": "Naipusipus iti 90° CCW",
-       "exif-orientation-7": "Naipisipus iti 90° CW ken nabaliktad nga agtindek",
+       "exif-orientation-7": "Naipisipus iti 90° CW ken bertikal a nabaliktad",
        "exif-orientation-8": "Naipusipus iti 90° CW",
        "exif-planarconfiguration-1": "chunky format",
        "exif-planarconfiguration-2": "planar format",
        "exif-exposureprogram-0": "Saan a naipalpalawag",
        "exif-exposureprogram-1": "Manual",
        "exif-exposureprogram-2": "Kadawyan a programa",
-       "exif-exposureprogram-3": "Aperture priority",
+       "exif-exposureprogram-3": "Prioridad ti apertura",
        "exif-exposureprogram-4": "Shutter priority",
        "exif-exposureprogram-5": "Kreatibo a programa (di nalinteg iti  kauneg ti pagikabilan)",
        "exif-exposureprogram-6": "Aktion a programa (di nalinteg iti kapartak ti napardas a shutter)",
-       "exif-exposureprogram-7": "Retrato a kita (para iti naasideg nga imahen nga addaan ti lugar ti likud a saan a nai-focus)",
-       "exif-exposureprogram-8": "Ladawan ti daga a kita (para iti ladawan ti daga nga imahen nga addaan ti lugar ti likud a pinag- focus)",
-       "exif-subjectdistance-value": "$1 a metro",
-       "exif-meteringmode-0": "Di am-ammo",
-       "exif-meteringmode-1": "Napipia",
+       "exif-exposureprogram-7": "Retrato a kita (para iti asideg a ladladawan nga addaan ti lugar ti likud a saan a naipatengnga)",
+       "exif-exposureprogram-8": "Moda ti ladawan ti daga (para iti ladawan ti daga a retato nga addaan ti lugar ti likud a panaptengna)",
+       "exif-subjectdistance-value": "$1 a metmetro",
+       "exif-meteringmode-0": "Di ammo",
+       "exif-meteringmode-1": "Natimbeng",
        "exif-meteringmode-2": "Napipia nga agtennga a pinadagsenan",
        "exif-meteringmode-3": "Disso",
        "exif-meteringmode-4": "Sabsabali a disso",
-       "exif-meteringmode-5": "Alagad",
+       "exif-meteringmode-5": "Tabas",
        "exif-meteringmode-6": "Sangkapaset laeng",
        "exif-meteringmode-255": "Sabali",
        "exif-lightsource-0": "Di ammo",
        "scarytranscludefailed": "[Napaay ti panagala ti plantilia para iti $1]",
        "scarytranscludefailed-httpstatus": "[Napaay ti panagala ti plantilia para iti $1: HTTP $2]",
        "scarytranscludetoolong": "[Atiddog unay ti URL]",
-       "deletedwhileediting": "'''Ballaag''': Naikkaten daytoy a panid kalpasan a rinugiam nga agurnos!",
+       "deletedwhileediting": "<strong>Ballaag:</strong> Naikkaten daytoy a panid kalpasan idi rinugiam ti agurnos!",
        "confirmrecreate": "Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkatna daytoy a panid kalpasan ti panagrugim nga agurnos nga adda rason:\n: ''$2''\nPangngaasi a pasingkedam nga agpayso a kayatmo a partuten manen daytoy a panid.",
        "confirmrecreate-noreason": "Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkat na daytoy a panid idi kalkalpas mo a magirugi ti agurnos. Pangngaasi ta pasingkedam a kayatmo nga aramiden manen daytoy a panid.",
        "recreate": "Partuaten manen",
-       "confirm_purge_button": "OK",
+       "confirm_purge_button": "Sige",
        "confirm-purge-top": "Dalusan ti cache daytoy a panid?",
-       "confirm-purge-bottom": "Ti panagpurga ti panid ket dalusanna ti cache ken pursaranna nga agparang dagiti kinaudi a panagbaliw.",
-       "confirm-watch-button": "OK",
-       "confirm-watch-top": "Inayon daytoy a panid kadagiti bambantayam",
-       "confirm-unwatch-button": "OK",
-       "confirm-unwatch-top": "Ikkatem daytoy a panid ti bambantayam",
+       "confirm-purge-bottom": "Ti panagpurga ti panid ket dalusanna ti cache ken pursaranna nga iparang dagiti agdama rebision.",
+       "confirm-watch-button": "Sige",
+       "confirm-watch-top": "Inayon daytoy a panid iti listaan ti bambantayam?",
+       "confirm-unwatch-button": "Sige",
+       "confirm-unwatch-top": "Ikkatem daytoy a panid manipud ti listaan ti bambantayam?",
        "imgmultipageprev": "← napalabas a panid",
        "imgmultipagenext": "sumaruno a panid →",
        "imgmultigo": "Inkan!",
        "table_pager_prev": "Napalabas a panid",
        "table_pager_first": "Umuna a panid",
        "table_pager_last": "Maudi a panid",
-       "table_pager_limit": "Mangipakita iti $1 a banag tunggal maysa  a panid",
+       "table_pager_limit": "Mangipakita iti $1 a banag tunggal maysa a panid",
        "table_pager_limit_label": "Banag tunggal maysa a panid:",
        "table_pager_limit_submit": "Inkan",
        "table_pager_empty": "Awan dagiti nagbanagan",
        "autosumm-blank": "Naikkat amin ti linaon ti panid",
-       "autosumm-replace": "Sinukatan ti linaon iti '$1'",
+       "autosumm-replace": "Sinukatan ti linaon iti \"$1\"",
        "autoredircomment": "Naibaw-ing ti panid iti [[$1]]",
        "autosumm-new": "Pinartuat ti panid iti \"$1\"",
-       "lag-warn-normal": "Dagiti panangbalbaliw a nabarbaro ngem $1 {{PLURAL:$1|a segundo|kadagiti segundo}} ket mabalin a saan a maiparang itoy a listaan.",
-       "lag-warn-high": "Gapu ti kinabuntog ti database server, dagiti nasukatan a barbaro ngem $1 {{PLURAL:$1|a segundo|kadagiti segundo}} ket mabalin a saan nga agparang ditoy a listaan.",
-       "watchlistedit-normal-title": "Urnosem ti listaan ti bambantayan",
+       "lag-warn-normal": "Dagiti panangbalbaliw a nabarbaro ngem $1 {{PLURAL:$1|a segundo|a segsegundo}} ket mabalin a saan a maiparang iti daytoy a listaan.",
+       "lag-warn-high": "Gapu ti kinabuntog ti database server, dagiti nasukatan a barbaro ngem $1 {{PLURAL:$1|a segundo|a segegundo}} ket mabalin a saan nga agparang iti daytoy a listaan.",
+       "watchlistedit-normal-title": "Urnosen ti listaan ti bambantayan",
        "watchlistedit-normal-legend": "Ikkaten dagiti titulo manipud ti listaan ti bambantayam",
-       "watchlistedit-normal-explain": "Dagiti titulo ti listaan ti bambantayam ket naipakita dita baba.\nTi mangikkat ti titulo, ikur-it ti kaaripingna a kahon, ken agtakla ti \"{{int:Watchlistedit-normal-submit}}\".\nMabalinmo pay nga [[Special:EditWatchlist/raw|urnosen ti kilaw a listaan]].",
+       "watchlistedit-normal-explain": "Dagiti titulo ti listaan ti bambantayam ket naipakita dita baba.\nTi mangikkat ti titulo, ikur-it ti kaaripingna a kahon, ken pinduten ti \"{{int:Watchlistedit-normal-submit}}\".\nMabalinmo pay nga [[Special:EditWatchlist/raw|urnosen ti naata a listaan]].",
        "watchlistedit-normal-submit": "Ikkaten dagiti titulo",
-       "watchlistedit-normal-done": "{{PLURAL:$1|1 ti titulo a|$1 dagiti titulo a}} naikkat iti listaan ti bambantayam:",
-       "watchlistedit-raw-title": "Urnosen ti kilaw a listaan ti bambantayan",
-       "watchlistedit-raw-legend": "Urnosen ti kilaw a listaan ti bambantayan",
-       "watchlistedit-raw-explain": "Dagiti titulo ti listaan ti bambantayam ket naipakita dita baba, ken mabaliwam nga urnosen babaen ti panagnayon ken panagkissay manipud ti listaan;\nmaysa a titulo tunggal maysa a linia.\nNo malpaska, itakla ti \"{{int:Watchlistedit-raw-submit}}\".\nMabalinmo pay nga [[Special:EditWatchlist|usaren ti dati a panagurnos]].",
+       "watchlistedit-normal-done": "{{PLURAL:$1|1 ti titulo|$1 dagiti titulo}} a naikkat manipud ti listaan ti bambantayam:",
+       "watchlistedit-raw-title": "Urnosen ti naata a listaan ti bambantayan",
+       "watchlistedit-raw-legend": "Urnosen ti naata a listaan ti bambantayan",
+       "watchlistedit-raw-explain": "Dagiti titulo ti listaan ti bambantayam ket naipakita dita baba, ken mabaliwam nga urnosen babaen ti panagnayon ken panagkissay manipud ti listaan;\nmaysa a titulo tunggal maysa a linia.\nNo malpaska, pinduten ti \"{{int:Watchlistedit-raw-submit}}\".\nMabalinmo pay nga [[Special:EditWatchlist|usaren ti pagalagadan nga editor]].",
        "watchlistedit-raw-titles": "Dagiti titulo:",
        "watchlistedit-raw-submit": "Pabaruen ti listaan ti bambantayan",
-       "watchlistedit-raw-done": "Napabaro ti listaan ti bambantayam.",
-       "watchlistedit-raw-added": "{{PLURAL:$1|1 a titulo ti|dagiti $1 a titulo ti}} nainayon:",
-       "watchlistedit-raw-removed": "{{PLURAL:$1|1 a titulo ti|dagiti $1 dagiti titulo ti}} naikkat:",
+       "watchlistedit-raw-done": "Napabaron ti listaan ti bambantayam.",
+       "watchlistedit-raw-added": "{{PLURAL:$1|1 a titulo|$1 kadagiti titulo}} ti nainayon:",
+       "watchlistedit-raw-removed": "{{PLURAL:$1|1 a titulo|$1 kadagiti titulo}} ti naikkat:",
        "watchlistedit-clear-title": "Nadalusanen ti listaan ti bambantayan",
        "watchlistedit-clear-legend": "Dalusan ti listaan ti bambantayan",
-       "watchlistedit-clear-explain": "Amin dagiti titulo ket maikkatto manipud ti listaan ti bambantayam.",
+       "watchlistedit-clear-explain": "Amin dagiti titulo ket maikkatto manipud ti listaan ti bambantayam",
        "watchlistedit-clear-titles": "Dagiti titulo:",
        "watchlistedit-clear-submit": "Dalusan ti listaan ti bambantayan (Daytoy ket permanente!)",
        "watchlistedit-clear-done": "Nadalusanen ti bambantayam.",
        "watchlisttools-clear": "Dalusan ti listaan ti bambantayan",
        "watchlisttools-view": "Kitaen dagiti maitunos a sinukatan",
        "watchlisttools-edit": "Kitaen ken urnosen ti listaan ti bambantayan",
-       "watchlisttools-raw": "Urnosen ti kilaw a listaan ti bambantayan",
+       "watchlisttools-raw": "Urnosen ti naata a listaan ti bambantayan",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|tungtungan]])",
-       "unknown_extension_tag": "Di ammo a pagpaatiddog nga etiketa \"$1\"",
-       "duplicate-defaultsort": "'''Ballaag:''' Kinasigud a panagilasin ti \"$2\" ket sukatanna ti immuna a kinasigud a panagilasin \"$1\".",
+       "unknown_extension_tag": "Di ammo a pagpaatiddog nga etiketa ti \"$1\"",
+       "duplicate-defaultsort": "<strong>Ballag:</strong> Kasisigud a panagilasin ti \"$2\" ket tuonana ti immuna a kasisigud a panagilasin ti \"$1\".",
        "duplicate-displaytitle": "<strong>Ballaag:</strong> Ti maiparang a titulo ti \"$2\" ket tuonanna ti immmuna a maiparang a titulo ti \"$1\".",
        "version": "Bersion",
        "version-extensions": "Dagiti naisaad a pagpaatiddog",
        "version-specialpages": "Espesial a pampanid",
        "version-parserhooks": "Dagiti parser a kawit",
        "version-variables": "Nadumaduma a kita",
-       "version-antispam": "Pawilan ti spam",
+       "version-antispam": "Panagpawil iti spam",
        "version-other": "Sabali",
-       "version-mediahandlers": "Agtengtengngel kadagiti midia",
+       "version-mediahandlers": "Panagtengngel kadagiti midia",
        "version-hooks": "Dagiti kawit",
-       "version-parser-extensiontags": "Dagiti parser a pagpaatiddog nga etiketa",
-       "version-parser-function-hooks": "Parser a pamay-an dagiti kawit",
+       "version-parser-extensiontags": "Dagiti etiketa ti pagpaatiddog ti parser",
+       "version-parser-function-hooks": "Dagiti kawit nga annong ti parser",
        "version-hook-name": "Nagan ti kawit",
        "version-hook-subscribedby": "Umanamong babaen ti",
        "version-version": "($1)",
        "version-license-not-found": "Awan ti nabirukan a naisalaysay a pakaammo ti lisensia para iti daytoy a pagpaatiddog.",
        "version-credits-title": "Dagiti pammadayaw para iti $1",
        "version-credits-not-found": "Awan dagiti nabirukan a naisalaysay a pammadayaw para iti daytoy a pagpaatiddog.",
-       "version-poweredby-credits": "Daytoy a wiki ket pinaandar ti '''[https://www.mediawiki.org/ MediaWiki]''', karbengan a kopia © 2001-$1 $2.",
+       "version-poweredby-credits": "Daytoy a wiki ket pinaandar babaen ti '''[https://www.mediawiki.org/ MediaWiki]''', karbengan ti kopia © 2001-$1 $2.",
        "version-poweredby-others": "dadduma pay",
-       "version-poweredby-translators": "agipatpatarus ti translatewiki.net",
-       "version-credits-summary": "Kayatmi koma a pammadayawan dagiti sumaganad a tao para kadagiti inparawadda iti [[Special:Version|MediaWiki]].",
-       "version-license-info": "Ti MediaWiki ket nawaya a sopwer; maiwarasmo ken/wenno mabaliwam babaen ti banag iti GNU General Public License a naipablaak babaen ti Free Software Foundation; nupay iti bersion 2 iti Lisensia, wenno (ti panagpilim) ti  aniaman a bersion.\n\nTi MediaWiki ket naiwarwaras nga adda ti namnama a makatulong, ngem AWAN TI ANIA MAN A GARANTIA; nga awan pay ti naibagbaga a PANAKAILAKO wenno KALAINGAN NA ITI DAYTOY A PANGGEP. Kitaen ti GNU Sapasap a Publiko a Lisensia para kadagiti adu pay a salaysay.\n\nNaka-awatka koman ti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopia iti GNU Sapasap a  Publiko a Lisensia] a nairaman iti daytoy a programa; no saan, agsuratka idiay Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA wenno [//www.gnu.org/licenses/old-licenses/gpl-2.0.html basaem idiay online].",
+       "version-poweredby-translators": "dagiti agipatpatarus ti translatewiki.net",
+       "version-credits-summary": "Kayatmi koma a pammadayawan dagiti sumaganad a tao para kadagiti kontribusonda iti [[Special:Version|MediaWiki]].",
+       "version-license-info": "Ti MediaWiki ket nawaya a sopwer; mabalinmo nga iwaras ken/wenno baliwan babaen kadagiti termino ti GNU General Public License a naipablaak babaen ti Free Software Foundation; wenno bersion 2 iti Lisensia, wenno (ti panagpilim) ti  aniaman a naudi a bersion.\n\nTi MediaWiki ket naiwarwaras iti namnama a makatulongto, ngem AWAN TI ANIA MAN A GARANTIA; nga awan pay ti naibagbaga a PANNAKAILAKO wenno KALAINGANNA ITI DAYTOY A PANGGEP. Kitaen ti GNU General Public License para kadagiti adu pay a salaysay.\n\nNaka-awatka koman ti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopia iti GNU General Public License] a nairaman iti daytoy a programa; no saan, agsuratka idiay Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA wenno [//www.gnu.org/licenses/old-licenses/gpl-2.0.html basaem iti online].",
        "version-software": "Naisaad a sopwer",
        "version-software-product": "Produkto",
        "version-software-version": "Bersion",
        "version-entrypoints": "Pagserrekan a puntos dagiti URL",
        "version-entrypoints-header-entrypoint": "Pagserrekan a puntos",
        "version-entrypoints-header-url": "URL",
-       "redirect": "Ibaw-ing babaen ti papeles, agar-aramat, panid wenno ID ti panagbaliw",
+       "redirect": "Ibaw-ing babaen ti papeles, agar-aramat, panid wenno ID ti rebision",
        "redirect-legend": "Ibaw-ing iti papeles wenno panid",
-       "redirect-summary": "Daytoy nga espesial a panid ket maibaw-ing iti papeles (iti nagan ti papeles), ti panid (iti ID wenno panid ti panagbaliw), wenno ti panid ti agar-aramat (iti numeriko nga ID ti agar-aramat). Panag-usar:\n[[{{#Special:Redirect}}/file/Example.jpg]], \n[[{{#Special:Redirect}}/page/64308]], \n[[{{#Special:Redirect}}/revision/328429]], wenno\n[[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Daytoy nga espesial a panid ket maibaw-ing iti papeles (iti nagan ti papeles), ti panid (iti ID ti rebision wenno ID ti panid), wenno ti panid ti agar-aramat (iti numeriko nga ID ti agar-aramat). Panag-usar:\n[[{{#Special:Redirect}}/file/Example.jpg]], \n[[{{#Special:Redirect}}/page/64308]], \n[[{{#Special:Redirect}}/revision/328429]], wenno\n[[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Inkan",
        "redirect-lookup": "Kitaen:",
        "redirect-value": "Pateg:",
        "redirect-user": "ID ti agar-aramat",
        "redirect-page": "ID ti panid",
-       "redirect-revision": "Panagbaliw ti panid",
+       "redirect-revision": "Rebision ti panid",
        "redirect-file": "Nagan ti papeles",
        "redirect-not-exists": "Saan a nabirukan ti pateg",
        "fileduplicatesearch": "Agbiruk kadagiti duplikado a papeles",
-       "fileduplicatesearch-summary": "Agbiruk kadagiti duplikado a papeles a naibatay kadagiti \"hash\" a pateg.",
-       "fileduplicatesearch-legend": "Agsapul iti duplikado",
+       "fileduplicatesearch-summary": "Agbiruk kadagiti duplikado a papeles a naibatay kadagiti pateg ti hash.",
+       "fileduplicatesearch-legend": "Agbiruk para iti duplikado",
        "fileduplicatesearch-filename": "Nagan ti papeles:",
        "fileduplicatesearch-submit": "Biruken",
-       "fileduplicatesearch-info": "$1 × $2 pixel<br />Rukod ti papeles: $3<br />Kita ti MIME: $4",
-       "fileduplicatesearch-result-1": "Awan ti kapadpadana a duplikado ti papeles a \"$1\".",
-       "fileduplicatesearch-result-n": "Ti papeles a \"$1\" ket addaan {{PLURAL:$2|1 nga agpadpada a duplikado|dagiti $2  nga agpadpada a duplikado}}.",
-       "fileduplicatesearch-noresults": "Awan ti nagan ti papeles a \"$1\" ti nabirukan.",
+       "fileduplicatesearch-info": "$1 × $2 a piksel<br />Rukod ti papeles: $3<br />Kita ti MIME: $4",
+       "fileduplicatesearch-result-1": "Awan ti kapadpadana a duplikado ti papeles ti \"$1\".",
+       "fileduplicatesearch-result-n": "Ti papeles ti \"$1\" ket addaan {{PLURAL:$2|iti 1 nga agpadpada a duplikado|kadagiti $2 nga agpadpada a duplikado}}.",
+       "fileduplicatesearch-noresults": "Awan ti nabirukan a papeles a nanaganan ti \"$1\".",
        "specialpages": "Espesial a pampanid",
        "specialpages-note-top": "Leyenda",
        "specialpages-note": "* Kadawyan nga espesial a pampanid.\n* <span class=\"mw-specialpagerestricted\">Nagawidan nga espesial a pampanid.</span>",
-       "specialpages-group-maintenance": "Dagiti padamag ti panagtaripato",
-       "specialpages-group-other": "Sabsabali pay nga espesial a pampanid",
-       "specialpages-group-login": "Sumrek / agaramid ti pakabilangan",
-       "specialpages-group-changes": "Kaudian a sinukatan ken listaan",
-       "specialpages-group-media": "Dagiti padamag ti midia ken panag-ipan",
+       "specialpages-group-maintenance": "Dagiti reporta ti panagtaripato",
+       "specialpages-group-other": "Sabali nga espesial a pampanid",
+       "specialpages-group-login": "Sumrek / agpartuat ti pakabilangan",
+       "specialpages-group-changes": "Kaudian a balbaliw ken lislistaan",
+       "specialpages-group-media": "Dagiti reporta ti midia ken dagiti panagikarga",
        "specialpages-group-users": "Dagiti agar-aramat ken karkarbengan",
-       "specialpages-group-highuse": "Adu ti pannaka-usar a pampanid",
-       "specialpages-group-pages": "Listaan dagiti panid",
+       "specialpages-group-highuse": "Adu ti pannakausar a pampanid",
+       "specialpages-group-pages": "Lislistaan ti pampanid",
        "specialpages-group-pagetools": "Ramramit ti panid",
        "specialpages-group-wiki": "Datos ken ramramit",
        "specialpages-group-redirects": "Panangibaw-ing kadagiti espesial a pampanid",
        "blankpage": "Blanko a panid",
        "intentionallyblankpage": "Daytoy a panid  ket naigagara a blanko.",
        "external_image_whitelist": " #Baybayan daytoy a linia a kastoy<pre>\n#Ikabil ti \"regular expression fragments\" (idiay laeng paset nga ikabil ti tengnga ti  //) dita baba\n#Dagitoy ipada na ti URLs ti ruar (ti napudot a naikapet) imahen \n#Dagiti agpada ket agparang nga  imahen, ket no saan ti panilpo ti imahen ti agparang laeng\n#Dagiti linia nga umuna iti # ket maipabalin a komentario\n#Daytoy ket \"sensetibo ti kadakkel ti letra\"\n\n#Ikabil dagita \"regex fragment\" ti ngato daytoy a linia. Baybay-an a kastoy daytoy a linia</pre>",
-       "tags": "Umisu a sukatan dagiti etiketa",
-       "tag-filter": "[[Special:Tags|Ti etiketa]] a sagat:",
+       "tags": "Dagiti etiketa ti umiso a panagbaliw",
+       "tag-filter": "Sagat ti [[Special:Tags|etiketa]]:",
        "tag-filter-submit": "Sagat",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Etiketa|Et-etiketa}}]]: $2)",
        "tags-title": "Dagiti etiketa",
-       "tags-intro": "Daytoy a panid ket ilistana dagiti etiketa nga usaren ti sopwer nga agmarka ti panag-urnos, ken dagiti kaibuksilanda.",
+       "tags-intro": "Daytoy a panid ket ilistana dagiti etiketa a mablin nga usaren ti sopwer a mangmarka iti urnos, ken dagiti kaibuksilanda.",
        "tags-tag": "Nagan ti etiketa",
        "tags-display-header": "Tabas dagiti listaan ti panagsukat",
-       "tags-description-header": "Napno a panangipalpalawag iti kayatna a saoen.",
+       "tags-description-header": "Napno a deskripsion ti kaibuksilan.",
        "tags-active-header": "Aktibo?",
-       "tags-hitcount-header": "Dagiti etiketa a sinukatan",
+       "tags-hitcount-header": "Dagiti adda etiketana a sinukatan",
        "tags-active-yes": "Wen",
        "tags-active-no": "Saan",
        "tags-edit": "urnosen",
-       "tags-hitcount": "$1 {{PLURAL:$1|a sinukatan|kadagiti sinukatan}}",
+       "tags-hitcount": "$1 {{PLURAL:$1|a sinukatan|a sinuksukatan}}",
        "comparepages": "Ipada dagiti panid",
        "compare-page1": "Panid 1",
        "compare-page2": "Panid 2",
-       "compare-rev1": "Panagbaliw 1",
-       "compare-rev2": "Panagbaliw 2",
+       "compare-rev1": "Rebision 1",
+       "compare-rev2": "Rebision 2",
        "compare-submit": "Ipada",
-       "compare-invalid-title": "Ti titulo nga intedmo ket imbalido.",
-       "compare-title-not-exists": "Awan met dayta titulo a nainaganam.",
-       "compare-revision-not-exists": "Awan met ti pinagbaliw dayta titulo a nainaganam.",
-       "dberr-problems": "Pasensian a! Daytoy a pagsaadan ket agdadama ti teknikal a pagrigrigatan.",
-       "dberr-again": "Padasem ti agururay to manu a minutos ken agikarga.",
-       "dberr-info": "(Saan a makontak ti database server: $1)",
-       "dberr-info-hidden": "(Saan a makontak ti database server)",
-       "dberr-usegoogle": "Padasem  ti agbiruk idiay Google tatta.",
-       "dberr-outofdate": "Palagip a dagiti listaan da kadagiti kukuami a nagyan ket baka nagpaso.",
+       "compare-invalid-title": "Ti titulo nga innaganam ket imbalido.",
+       "compare-title-not-exists": "Awan ti innaganam a titulo.",
+       "compare-revision-not-exists": "Awan ti innaganam a rebision.",
+       "dberr-problems": "Pasensia! Daytoy a sitio ket agdadama nga agsansanay kadagiti teknikal a pagrigatan.",
+       "dberr-again": "Padasem ti aguray kadagiti mano a minuto ken agikarga manen.",
+       "dberr-info": "(Saan a makontak ti server ti database: $1)",
+       "dberr-info-hidden": "(Saan a makontak ti server ti database)",
+       "dberr-usegoogle": "Iti agdama mabalinmo a padasen ti agbiruk babaen ti Google.",
+       "dberr-outofdate": "Palagip a dagiti listaanda kadagiti kukuami a linaon ket mabalin a nagpaso.",
        "dberr-cachederror": "Daytoy ket naidulin a kopia ti kiniddawmo a panid, ken mabalin a saan a kabarbaro.",
-       "htmlform-invalid-input": "Adda pakirut kadagiti inkabilmo",
-       "htmlform-select-badoption": "Ti kuwenta a nainaganam ket saan a mabalin a pagpilian.",
-       "htmlform-int-invalid": "Ti kuwenta a nainaganam ket saan a sibubukel.",
-       "htmlform-float-invalid": "Ti kuwenta a nainaganam ket saan a numero.",
-       "htmlform-int-toolow": "Ti kuwenta a nainaganam ket baba ti mabalin a kababaan ti $1",
-       "htmlform-int-toohigh": "Ti kuwenta a nainaganam ket ngato ti mabalin a kangatuan ti $1",
-       "htmlform-required": "Masapul daytoy a kuwenta",
+       "htmlform-invalid-input": "Adda pakirut kadagiti dadduma nga inkabilmo.",
+       "htmlform-select-badoption": "Ti pateg a nainaganam ket saan a mabalin a pagpilian.",
+       "htmlform-int-invalid": "Ti pateg a nainaganam ket saan a maysa a sibubukel.",
+       "htmlform-float-invalid": "Ti pateg a nainaganam ket saan a numero.",
+       "htmlform-int-toolow": "Ti pateg a nainaganam ket baba ti mabalin a kababaan ti $1.",
+       "htmlform-int-toohigh": "Ti pateg a nainaganam ket ngato ti mabalin a kangatuan ti $1.",
+       "htmlform-required": "Masapul daytoy a pateg.",
        "htmlform-submit": "Ited",
-       "htmlform-reset": "Ibabawi ti sinukatan",
+       "htmlform-reset": "Ibabawi dagiti sinukatan",
        "htmlform-selectorother-other": "Sabali",
        "htmlform-no": "Saan",
        "htmlform-yes": "Wen",
-       "htmlform-chosen-placeholder": "Agpili ti pagpilian",
+       "htmlform-chosen-placeholder": "Agpili ti maysa a pagpilian",
        "htmlform-cloner-create": "Agnayon pay ti adu",
        "htmlform-cloner-delete": "Ikkaten",
        "htmlform-cloner-required": "Saan a basbassit ngem maysa a pateg ti masapul.",
-       "sqlite-has-fts": "$1 adda ti suporta ti napno a testo ti panagbiruk",
-       "sqlite-no-fts": "$1 awan ti suporta ti napno a testo ti panagbiruk",
+       "sqlite-has-fts": "Ti $1 nga addaan iti suporta ti panagbiruk ti napno a testo",
+       "sqlite-no-fts": "Ti $1 nga awan iti suporta ti panagbiruk ti napno a testo",
        "logentry-delete-delete": "Ni $1 ket {{GENDER:$2|inikkatna}} ti panid ti $3",
        "logentry-delete-restore": "Ni $1 ket {{GENDER:$2|insublina}} ti panid ti $3",
        "logentry-delete-event": "Ni $1 ket {{GENDER:$2|binaliwanna}} ti panagkita {{PLURAL:$5|iti listaan ti pasamak |dagiti $5 a listaan ti pasamak }} iti $3: $4",
        "logentry-delete-revision": "Ni $1 ket {{GENDER:$2|binaliwanna}} ti panagkita  {{PLURAL:$5|iti panagbaliw |dagiti $5 a panagbaliw}} iti panid $3: $4",
-       "logentry-delete-event-legacy": "Ni $1 ket {{GENDER:$2|binaliwanna}} ti panagkita ti listaan dagiti pasamak idiay $3",
-       "logentry-delete-revision-legacy": "Ni $1 ket {{GENDER:$2|binaliwanna}} ti panagkita dagiti panagbaliw idiay panid $3",
+       "logentry-delete-event-legacy": "Ni $1 ket {{GENDER:$2|binaliwanna}} ti panagkita ti listaan dagiti pasamak iti $3",
+       "logentry-delete-revision-legacy": "Ni $1 ket {{GENDER:$2|binaliwanna}} ti panagkita dagiti rebision iti panid ti $3",
        "logentry-suppress-delete": "Ni $1 ket {{GENDER:$2|pinasardengna}} ti panid ti $3",
        "logentry-suppress-event": "Ni $1 ket sekreto a {{GENDER:$2|binaliwanna}} ti panagkita {{PLURAL:$5|iti listaan ti pasamak |dagiti $5 a listaan ti pasamak }} iti $3: $4",
        "logentry-suppress-revision": "Ni $1 ket sekreto a {{GENDER:$2|binaliwanna}} ti panagkita {{PLURAL:$5|iti panagbaliw |dagiti $5 a panagbaliw}} iti panid $3: $4",
-       "logentry-suppress-event-legacy": "Ni $1 ket sekreto a {{GENDER:$2|binaliwanna}} ti panagkita ti listaan dagiti pasamak idiay $3",
-       "logentry-suppress-revision-legacy": "Ni $1 ket sekreto a {{GENDER:$2|binaliwanna}} ti panagkita dagiti panagbaliw idiay panid $3",
-       "revdelete-content-hid": "nailemmeng ti nagyanna",
-       "revdelete-summary-hid": "nailemmeng ti pakabuklan a naurnos",
+       "logentry-suppress-event-legacy": "Ni $1 ket sekreto a {{GENDER:$2|binaliwanna}} ti panagkita ti listaan dagiti pasamak iti $3",
+       "logentry-suppress-revision-legacy": "Ni $1 ket sekreto a {{GENDER:$2|binaliwanna}} ti panagkita dagiti panagbaliw iti panid ti $3",
+       "revdelete-content-hid": "nailemmeng ti linaon",
+       "revdelete-summary-hid": "nailemmeng ti pakabuklan ti inurnos",
        "revdelete-uname-hid": "nailemmeng ti nagan ti agar-aramat",
-       "revdelete-content-unhid": "saan a nailemmeng ti nagyanna",
-       "revdelete-summary-unhid": "saan a nailemmeng ti  pakabuklan a naurnos",
+       "revdelete-content-unhid": "saan a nailemmeng ti linaon",
+       "revdelete-summary-unhid": "saan a nailemmeng ti pakabuklan ti inurnos",
        "revdelete-uname-unhid": "saan a nailemmeng ti nagan ti agar-aramat",
-       "revdelete-restricted": "naipakat dagiti pammarit kadagiti administrador",
-       "revdelete-unrestricted": "naikkat dagiti pammarit para kadagiti administrador",
-       "logentry-move-move": "Ni $1 ket {{GENDER:$2|inyalisna}} ti panid $3 idiay $4",
-       "logentry-move-move-noredirect": "Ni $1 ket {{GENDER:$2|inyalisna}} ti panid ti $3 idiay $4 a saan a nangibati ti baw-ing",
-       "logentry-move-move_redir": "Ni $1 ket {{GENDER:$2|inyalisna}} ti panid ti $3 idiay $4 nga adda iti maysa a baw-ing",
-       "logentry-move-move_redir-noredirect": "Ni $1 ket {{GENDER:$2|inyalisna}} ti panid ti $3 idiay $4 nga adda iti maysa a baw-ing a saan a nangibati ti baw-ing",
-       "logentry-patrol-patrol": "Ni $1 ket {{GENDER:$2|minarkaanna}} ti panagbaliw a $4 ti panid ti $3 a napatruliaan",
-       "logentry-patrol-patrol-auto": "Ni $1 ket automatiko a {{GENDER:$2|minarkaanna}} ti panagbaliw a $4 ti panid ti $3 a napatruliaan",
+       "revdelete-restricted": "naipakat dagiti panangigawid kadagiti administrador",
+       "revdelete-unrestricted": "inikkat dagiti panangigawid para kadagiti administrador",
+       "logentry-move-move": "Ni $1 ket {{GENDER:$2|inyalisna}} ti panid $3 iti $4",
+       "logentry-move-move-noredirect": "Ni $1 ket {{GENDER:$2|inyalisna}} ti panid ti $3 iti $4 a saan a nangibati ti baw-ing",
+       "logentry-move-move_redir": "Ni $1 ket {{GENDER:$2|inyalisna}} ti panid ti $3 iti $4 a nagtuon iti baw-ing",
+       "logentry-move-move_redir-noredirect": "Ni $1 ket {{GENDER:$2|inyalisna}} ti panid ti $3 iti $4 a nagtuon iti baw-ing a saan a nangibati ti baw-ing",
+       "logentry-patrol-patrol": "Ni $1 ket {{GENDER:$2|minarkaanna}} ti rebision ti $4 iti panid ti $3 a napatruliaan",
+       "logentry-patrol-patrol-auto": "Ni $1 ket automatiko a {{GENDER:$2|minarkaanna}} ti rebision ti $4 iti panid ti $3 a napatruliaan",
        "logentry-newusers-newusers": "Ti pakabilangan idi ni $1 ket {{GENDER:$2|napartuat}}",
        "logentry-newusers-create": "Ti pakabilangan idi ni $1 ket {{GENDER:$2|napartuat}}",
        "logentry-newusers-create2": "Ti pakabilangan ti agar-aramat $3 ket {{GENDER:$2|napartuat}} idi babaen ni $1",
        "logentry-rights-rights-legacy": "Ni $1 ket {{GENDER:$2|binaliwanna}} ti grupo a pannakaikameng para kenni $3",
        "logentry-rights-autopromote": "Ni $1 ket automatiko idi a {{GENDER:$2|naipangato}} manipud ti $4 iti $5",
        "rightsnone": "(awan)",
-       "feedback-bugornote": "No agsagana kan nga agibaga ti teknikal a pakirut a naisalaysay pangngaasi nga [$1 ireporta ti kiteb].\nNupay kasta, mau-sarmo ti nakabuklan dita baba. Ti komentario nga itedmo ket mainayon iti panid \"[$3 $2], a mairaman ti naganmo nga agar-aramat ken no ania ti pagbasabasa nga us-sarem.",
+       "feedback-bugornote": "No sisasagakan nga agibaga ti teknikal a pakirut a naisalaysay pangngaasi nga [$1 ireporta ti parikut].\nNupay kasta, mausarmo ti nalaka a porma dita baba. Ti komentario nga itedmo ket mainayon iti panid \"[$3 $2], a mairaman ti naganmo nga agar-aramat ken no ania ti pagbasabasa nga us-sarem.",
        "feedback-subject": "Suheto:",
        "feedback-message": "Mensahe:",
        "feedback-cancel": "Ukasen",
-       "feedback-submit": "Agited ti Pagipagarupan",
-       "feedback-adding": "Agnaynayon ti pagipagarupan iti panid...",
-       "feedback-error1": "Biddut: Saan a malasin dagiti nagbanagan manipud iti API",
+       "feedback-submit": "Agited ti Feedback",
+       "feedback-adding": "Agnaynayon ti feedback iti panid...",
+       "feedback-error1": "Biddut: Saan a malasin dagiti nagbanagan manipud ti API",
        "feedback-error2": "Biddut: Napaay ti panagurnos",
-       "feedback-error3": "Biddut: Awan ti sungbat manipud iti API",
-       "feedback-thanks": "Agyaman! Ti panangparupaam ket naipablaak iti panid \"[$2 $1]\".",
+       "feedback-error3": "Biddut: Awan ti sungbat manipud ti API",
+       "feedback-thanks": "Agyaman! Ti feedbackmo ket naipablaak iti panid \"[$2 $1]\".",
        "feedback-close": "Nalpasen",
-       "feedback-bugcheck": "Nasayaaten! Kitaem tapno saan a dagiti adda idin a [$1 nga amammo a kitkiteb].",
-       "feedback-bugnew": "Kinitak. Ireporta ti baro a kiteb",
+       "feedback-bugcheck": "Nasayaaten! Kitaem tapno saan a dagiti adda idin a [$1 nga ammo a parparikut].",
+       "feedback-bugnew": "Kinitak. Agireporta ti baro a parikut",
        "searchsuggest-search": "Biruken",
        "searchsuggest-containing": "naglaon ti...",
-       "api-error-badaccess-groups": "Saanmo a mabalin ti agipan kadagiti papeles iti daytoy a wiki.",
-       "api-error-badtoken": "Kinauneg a biddut: Dakes a tandaan.",
-       "api-error-copyuploaddisabled": "Ti mangipan babaen ti URL ket nabaldado ditoy a server.",
-       "api-error-duplicate": "Adda {{PLURAL:$1|ket [$2 a sabali a papeles] |dagiti [$2 sabsabali a papeles]}} nga addan ditoy a pagsaadan nga agpada ti nagyanda.",
-       "api-error-duplicate-archive": "Adda {{PLURAL:$1|idi [$2 sabali a papeles]|dagidi [$2 sabali a papeles]}} nga adda ditoy a pagsaadan nga agpada ti nagyan da, ngem {{PLURAL:$1|daytoy|dagitoy}} ket naikkat.",
+       "api-error-badaccess-groups": "Saanka mapalubosan nga agikarga kadagiti papeles iti daytoy a wiki.",
+       "api-error-badtoken": "Akin-uneg a biddut: Dakes a tandaan.",
+       "api-error-copyuploaddisabled": "Ti panagikarga babaen ti URL ket nabaldado iti daytoy server.",
+       "api-error-duplicate": "Adda {{PLURAL:$1|ket [$2 a sabali a papeles] |dagiti [$2 sabsabali a papeles]}} nga addaan ditoy a sitio nga agpada ti linaon.",
+       "api-error-duplicate-archive": "Adda {{PLURAL:$1|idi [$2 sabali a papeles]|dagidi [$2 sabali a papeles]}} nga addaan ditoy a sitio nga agpada ti linaonda, ngem {{PLURAL:$1|daytoy|dagitoy}} ket naikkat.",
        "api-error-duplicate-archive-popup-title": "Duplikado {{PLURAL:$1|ti papeles|dagiti papeles}} a naikkaten.",
        "api-error-duplicate-popup-title": "Duplikado {{PLURAL:$1|ti papeles|dagiti papeles}}.",
-       "api-error-empty-file": "Ti papeles nga intedmo ket awan ti nagyanna.",
-       "api-error-emptypage": "Agar-aramid ti baro, dagiti awan ti linaonna a panid ket saan a maipalubos.",
-       "api-error-fetchfileerror": "Kinauneg a biddut: Addaan ti dakes a napasamak idi agalala ti papeles.",
+       "api-error-empty-file": "Ti papeles nga intedmo ket awan linaon.",
+       "api-error-emptypage": "Agparprtuat ti baro, dagiti awan ti linaon a panid ket saan a maipalubos.",
+       "api-error-fetchfileerror": "Akin-uneg a biddut: Addaan ti dakes a napasamak bayat nga agal-ala ti papeles.",
        "api-error-fileexists-forbidden": "Ti papeles nga agnagan ti \"$1\" ket addan, ken saan a mabalin a masuratan manen.",
        "api-error-fileexists-shared-forbidden": "Ti papeles nga agnagan ti \"$1\" ket adda idiay pagbibingayan a repositorio ti papeles, ken saan a mabalin a masuratan manen.",
        "api-error-file-too-large": "Ti papeles nga intedmo ket dakkel unay.",
        "api-error-filename-tooshort": "Ti nagan daytoy a papeles ket bassit unay.",
        "api-error-filetype-banned": "Ti kita daytoy a papeles ket maiparit.",
-       "api-error-filetype-banned-type": "Ti $1 {{PLURAL:$4|ket saan a mapalubusan a kita ti papeles|ket dagiti saan a mapalubusan a kita ti papeles}}. Ti mapalubusan {{PLURAL:$3|a kita ti papeles ket|kadagiti kita ti papeles ket}} $2.",
-       "api-error-filetype-missing": "Ti papeles ket agkurang ti pagpa-atiddog.",
-       "api-error-hookaborted": "Ti panagbabaro a pinadasmo ket napasardeng iti pangpa-atiddog a kawit.",
-       "api-error-http": "Kinauneg a biddut: Saan a makaikabit idiay server.",
+       "api-error-filetype-banned-type": "Ti $1 {{PLURAL:$4|ket saan a mapalubosan a kita ti papeles|ket dagiti saan a mapalubusan a kita ti papeles}}. Ti mapalubosan {{PLURAL:$3|a kita ti papeles ket|kadagiti kita ti papeles ket}} $2.",
+       "api-error-filetype-missing": "Ti papeles ket awan ti maysa a pagpaatiddog.",
+       "api-error-hookaborted": "Ti panagbabaro a pinadasmo ket pinasardeng babaen ti maysa a pagpaatiddog.",
+       "api-error-http": "Akin-uneg a biddut: Saan a makaikabit iti server.",
        "api-error-illegal-filename": "Ti nagan daytoy a papeles ket saan a maipalubos.",
-       "api-error-internal-error": "Kinauneg a biddut: Addaan ti dakes a napasamak ti panagaramid ti panagipanmo iti daytoy a wiki.",
-       "api-error-invalid-file-key": "Kinauneg a biddut: Saan a nabirukan ti papeles idiay temporario a nagidulinan.",
-       "api-error-missingparam": "Kinauneg a biddut: Kurang dagiti parametro iti kiddaw.",
-       "api-error-missingresult": "Kinauneg a biddut: Saan a na-ammoan no ti kopia ket nagballigi.",
-       "api-error-mustbeloggedin": "Masapul a nakastrek ka tapno makaipan ka kadagiti papeles.",
-       "api-error-mustbeposted": "Kinauneg a biddut: Ti kiddaw ket masapul ti HTTP POST.",
-       "api-error-noimageinfo": "Balligi ti panag-ipan, ngem ti server ket saan a nagited kadakami ti pakaammo a maipanggep iti daytoy a papeles.",
-       "api-error-nomodule": "Kinauneg a biddut: Awan ti panagipan a modulo a disso.",
-       "api-error-ok-but-empty": "Kinauneg a biddut: Awan ti sungbat manipud idiay server.",
-       "api-error-overwrite": "Saan a mabalin a suratan manen iti papeles nga adda ditan.",
-       "api-error-stashfailed": "Kinauneg a biddut: Napaay ti server ti agidulin ti temporario a papeles",
-       "api-error-publishfailed": "Kinauneg a biddut: Napaay ti server a nagipablaak ti temporario a papeles.",
+       "api-error-internal-error": "Akin-uneg a biddut: Addaan ti dakes a napasamak iti panagproseso ti inkargam iti daytoy a wiki.",
+       "api-error-invalid-file-key": "Akin-uneg a biddut: Saan a nabirukan ti papeles idiay temporario a nagidulinan.",
+       "api-error-missingparam": "Akin-uneg a biddut: Awan dagiti parametro iti kiddaw.",
+       "api-error-missingresult": "Akin-uneg a biddut: Saan a naikeddeng no ti kopia ket nagballigi.",
+       "api-error-mustbeloggedin": "Masapul a nakastrekka tapno makaikarga kadagiti papeles.",
+       "api-error-mustbeposted": "Akin-uneg a biddut: Ti kiddaw ket masapul ti HTTP POST.",
+       "api-error-noimageinfo": "Balligi ti panagikarga, ngem ti server ket saan a nagited kadakami ti aniaman a pakaammo a maipanggep iti daytoy a papeles.",
+       "api-error-nomodule": "Akin-uneg a biddut: Awan ti naisad a modulo ti panagikarga.",
+       "api-error-ok-but-empty": "Akin-uneg a biddut: Awan ti sungbat manipud ti server.",
+       "api-error-overwrite": "Saan a maipalubos a suratan manen iti papeles nga addan.",
+       "api-error-stashfailed": "Akin-uneg a biddut: Napaay ti server nga agidulin ti temporario a papeles.",
+       "api-error-publishfailed": "Akin-uneg a biddut: Napaay ti server nga agipablaak ti temporario a papeles.",
        "api-error-stasherror": "Adda maysa a biddut bayat nga agikarkarga ti papeles iti stash.",
        "api-error-timeout": "Saan a simmungbat ti server iti nanamnama nga oras.",
-       "api-error-unclassified": "Adda di amammo a biddut a rumsua.",
-       "api-error-unknown-code": "Di am-ammo a biddut: \"$1\".",
-       "api-error-unknown-error": "Kinauneg a biddut: Addaan ti dakes a napasamak idi nagipadaska ti agipan ti papelesmo.",
-       "api-error-unknown-warning": "Di am-ammo a ballaag: \"$1\".",
-       "api-error-unknownerror": "Di am-ammo a biddut: \"$1\".",
-       "api-error-uploaddisabled": "Nabaldado ti mangipapan iti daytoy a wiki.",
-       "api-error-verification-error": "Dakes ngata daytoy a papeles, wenno addaan ti madi a pagpa-atiddog.",
-       "duration-seconds": "$1 {{PLURAL:$1|segundo|seg-segundo}}",
-       "duration-minutes": "$1 {{PLURAL:$1|minuto|min-minuto}}",
+       "api-error-unclassified": "Adda rimsua a di ammo a biddut.",
+       "api-error-unknown-code": "Di ammo a biddut: \"$1\".",
+       "api-error-unknown-error": "Akin-uneg a biddut: Addaan ti dakes a napasamak bayat idi nagipadaska nga agikarga iti papelesmo.",
+       "api-error-unknown-warning": "Di ammo a ballaag: \"$1\".",
+       "api-error-unknownerror": "Di ammo a biddut: \"$1\".",
+       "api-error-uploaddisabled": "Nabaldado ti panagikarga iti daytoy a wiki.",
+       "api-error-verification-error": "Mabalin a dakes daytoy a papeles, wenno addaan iti madi a pagpaatiddog.",
+       "duration-seconds": "$1 {{PLURAL:$1|segundo|segsegundo}}",
+       "duration-minutes": "$1 {{PLURAL:$1|minuto|minminuto}}",
        "duration-hours": "$1 {{PLURAL:$1|oras|or-oras}}",
        "duration-days": "$1 {{PLURAL:$1|aldaw|al-aldaw}}",
-       "duration-weeks": "$1 {{PLURAL:$1|lawas|law-lawas}}",
-       "duration-years": "$1 {{PLURAL:$1|tawen|taw-tawen}}",
-       "duration-decades": "$1 {{PLURAL:$1|dekada|dek-dekada}}",
-       "duration-centuries": "$1 {{PLURAL:$1|siglo|sig-siglo}}",
-       "duration-millennia": "$1 {{PLURAL:$1|milenio|mil-milenio}}",
-       "rotate-comment": "Ti ladawan ket napusipos babaen ti $1 {{PLURAL:$1|a degrado|a degdegrado}} nga agpakanawan",
+       "duration-weeks": "$1 {{PLURAL:$1|lawas|lawlawas}}",
+       "duration-years": "$1 {{PLURAL:$1|tawen|tawtawen}}",
+       "duration-decades": "$1 {{PLURAL:$1|dekada|dekdekada}}",
+       "duration-centuries": "$1 {{PLURAL:$1|siglo|sigsiglo}}",
+       "duration-millennia": "$1 {{PLURAL:$1|milenio|milmilenio}}",
+       "rotate-comment": "Ti ladawan ket napusipos babaen ti $1 {{PLURAL:$1|a grado|a gradgrado}} nga agpakanawan",
        "limitreport-title": "Panagbariweswes a datos ti parser:",
        "limitreport-cputime": "Panagusar nga oras ti CPU",
-       "limitreport-cputime-value": "$1 {{PLURAL:$1|segundo|seg-segundo}}",
+       "limitreport-cputime-value": "$1 {{PLURAL:$1|segundo|segsegundo}}",
        "limitreport-walltime": "Pudno nga oras a panagusar",
-       "limitreport-walltime-value": "$1 {{PLURAL:$1|segundo|seg-segundo}}",
+       "limitreport-walltime-value": "$1 {{PLURAL:$1|segundo|segsegundo}}",
        "limitreport-ppvisitednodes": "Nabisita a bilang ti nodo ti preproseso",
        "limitreport-ppgeneratednodes": "Napataud a bilang ti nodo ti preproseso",
        "limitreport-postexpandincludesize": "Pannakairaman a kadakkel ti kalpasan a panagpadakkel",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|a byte|kadagiti byte}}",
-       "limitreport-templateargumentsize": "Argumento a kadakkel ti plantilia",
+       "limitreport-templateargumentsize": "Kadakkel ti argumento ti plantilia",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|a byte|kadagiti byte}}",
-       "limitreport-expansiondepth": "Kangatuan a panagpadakkel ti kauneg",
+       "limitreport-expansiondepth": "Kangatuan a kauneg ti panagpadakkel",
        "limitreport-expensivefunctioncount": "Bilang ti nangina nga annong ti parser",
        "expandtemplates": "Palawaen dagiti plantilia",
-       "expand_templates_intro": "Daytoy nga espesial a panid ket agala ti testo ken palawaenna amin dagiti plantilia iti unegna a minaig iti daytoy.\nPalawaenna pay dagiti nasuportaran a parser a pamay-an a kas ti\n<code><nowiki>{{</nowiki>#language:…}}</code> ken dagiti nadumaduma a kita a kas ti\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. \nIti kinapudno, palawaenna amin dagiti adda ti doble a tukol.",
+       "expand_templates_intro": "Daytoy nga espesial a panid ket agala ti testo ken palawaenna amin dagiti plantilia iti unegna a minaig iti daytoy.\nPalawaenna pay dagiti nasuportaran a parser a pamay-an a kas ti\n<code><nowiki>{{</nowiki>#language:…}}</code> ken dagiti nadumaduma a kita a kas ti\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. \nIti kinapudno, palawaenna amin dagiti addaan iti doble a pangrikep.",
        "expand_templates_title": "Titulo ti kontesto, para iti {{FULLPAGENAME}} kdpy.:",
        "expand_templates_input": "Maikabil a testo:",
        "expand_templates_output": "Nagbanagan",
-       "expand_templates_xml_output": "XML a maiparang",
+       "expand_templates_xml_output": "Maiparuar a XML",
        "expand_templates_html_output": "Naata a maiparuar a HTML",
-       "expand_templates_ok": "OK",
+       "expand_templates_ok": "Sige",
        "expand_templates_remove_comments": "Ikkaten dagiti komentario",
-       "expand_templates_remove_nowiki": "Parmeken dagiti <nowiki> nga etiketa kadagiti nagbanagan",
-       "expand_templates_generate_xml": "Iparang ti XML parse a kayo",
+       "expand_templates_remove_nowiki": "Parmeken dagiti etiketa ti <nowiki> iti nagbanagan",
+       "expand_templates_generate_xml": "Iparang ti pangwaswas a kayo ti XML",
        "expand_templates_generate_rawhtml": "Ipakita ti naata a HTML",
-       "expand_templates_preview": "Pamadasan",
+       "expand_templates_preview": "Ipadas",
        "pagelanguage": "Pagpilian ti pagsasao ti panid",
        "pagelang-name": "Panid",
        "pagelang-language": "Pagsasao",
        "pagelang-select-lang": "Agpili iti pagsasao",
        "right-pagelang": "Baliwan ti pagsasao ti panid",
        "action-pagelang": "baliwan ti pagsasao ti panid",
-       "log-name-pagelang": "Baliwan ti pagsasao ti listaan",
-       "log-description-pagelang": "Daytoy ket listaan dagiti binaliwan kadagiti pagsasao ti panid.",
-       "logentry-pagelang-pagelang": "NI $1 ket {{GENDER:$2|binaliwanna}} ti pagsasao ti panid para iti $3 manipud ti $4 iti $5."
+       "log-name-pagelang": "Listaan ti panagbaliw ti pagsasao",
+       "log-description-pagelang": "Daytoy ket listaan dagiti panagbaliw kadagiti pagsasao ti panid.",
+       "logentry-pagelang-pagelang": "Ni $1 ket {{GENDER:$2|binaliwanna}} ti pagsasao ti panid para iti $3 manipud ti $4 iti $5."
 }
index 68d3030..d65c9b7 100644 (file)
        "loginreqlink": "innskrá",
        "loginreqpagetext": "Þú þarft að $1 þig til að geta séð aðrar síður.",
        "accmailtitle": "Lykilorð sent.",
-       "accmailtext": "Lykilorðið fyrir [[User talk:$1|$1]] hefur verið sent á $2.\n\nHægt er að breyta lykilorðinu fyrir aðganginn á ''[[Special:ChangePassword|change password]]'' þegar notandinn hefur skráð sig inn.",
+       "accmailtext": "Lykilorðið fyrir [[User talk:$1|$1]] hefur verið sent á $2. Hægt er að breyta því á síðunni ''[[Special:ChangePassword|breyta lykilorði]]'' þegar notandinn hefur skráð sig inn.",
        "newarticle": "(Ný)",
        "newarticletext": "Þú hefur fylgt tengli á síðu sem ekki er til ennþá.\nÞú getur búið til síðu með þessu nafni með því að skrifa í formið fyrir neðan\n(meiri upplýsingar í [$1 hjálpinni]).\nEf þú hefur óvart villst hingað geturðu notað '''til baka'''-hnappinn í vafranum þínum.",
        "anontalkpagetext": "----''Þetta er spjallsíða fyrir óþekktan notanda sem hefur ekki búið til aðgang ennþá, eða notar hann ekki.\nÞar af leiðandi þurfum við að nota vistfang til að bera kennsli á hann/hana.\nNokkrir notendur geta deilt sama vistfangi.\nEf þú ert óþekktur notandi og finnst að óviðkomandi athugasemdum hafa verið beint að þér, gjörðu svo vel og [[Special:UserLogin/signup|búðu til aðgang]] eða [[Special:UserLogin|skráðu þig inn]] til þess að koma í veg fyrir þennan rugling við aðra óþekkta notendur í framtíðinni.''",
        "search-file-match": "(passar við innihald skráa)",
        "search-suggest": "Varstu að leita að: $1",
        "search-interwiki-caption": "Systurverkefni",
-       "search-interwiki-default": "$1 útkomur:",
+       "search-interwiki-default": "Útkomur frá $1:",
        "search-interwiki-more": "(fleiri)",
        "search-relatedarticle": "Tengt",
        "searchrelated": "tengt",
        "largefileserver": "Þessi skrá er of stór. Vefþjónninn getur ekki tekið við skránni.",
        "emptyfile": "Skráin sem þú hlóðst inn virðist vera tóm.\nÞetta gæti verið vegna ásláttarvillu í skráarnafninu.\nVinsamlegast athugaðu hvort þú viljir hlaða skránni inn.",
        "windows-nonascii-filename": "Þessi wiki styður ekki skráarnöfn með sérstökum stöfum",
-       "fileexists": "Skrá með þessu nafni er þegar til, skoðaðu <strong>[[:$1]]</strong> ef þú ert óviss um hvort þú viljir breyta henni, ekki verður skrifað yfir gömlu skránna hlaðiru inn nýrri með sama nafni heldur verður núverandi útgáfa geymd í útgáfusögu.\n[[$1|thumb]]",
+       "fileexists": "Skrá með þessu nafni er þegar til, skoðaðu <strong>[[:$1]]</strong> ef þú ert óviss um hvort þú viljir breyta henni.\n[[$1|thumb]]",
        "filepageexists": "Myndasíðan fyrir þessa síðu hefur þegar verið búin til <strong>[[:$1]]</strong>, en engin skrá er til með þessu nafni.\nLýsingin sem þú skrifaðir verður ekki birt á myndasíðunni.\nTil þess að lýsingin geti birst á síðunni, þá þarft þú að breyta síðunni sérstaklega.\n[[$1|thumb]]",
        "fileexists-extension": "Skrá með svipuðu nafni er til: [[$2|thumb]]\n*Nafn skráarinnar sem hlaða á inn: <strong>[[:$1]]</strong>\n*Nafn skráarinnar sem er þegar til: <strong>[[:$2]]</strong>\nVilt þú kanski nota annað nafn sem er meira lýsandi fyrir skránna ?",
        "fileexists-thumbnail-yes": "Skráin virðist vera smámynd [[$1|thumb]]\nVinsamlegast athugaðu skránna <strong>[[:$1]]</strong>.\nEf skráin er sama myndin í upprunalegri stærð er ekki þörf á annari smámynd.",
        "filedelete-maintenance": "Á meðan viðhaldi stendur er lokað fyrir eyðingu og endurvakningu skráa.",
        "filedelete-maintenance-title": "Mistókst að eyða skrá",
        "mimesearch": "MIME-leit",
-       "mimesearch-summary": "Þessi síða gerir þér kleift að leita eftir skrám eftir MIME-gerð þeirra.\n\nLeitarstrengurinn á að vera á þessu formi: efnistag/myndasnið, t.d. <code>image/jpeg</code>.",
+       "mimesearch-summary": "Þessi síða gerir þér kleift að leita eftir skrám eftir MIME-gerð þeirra.\n\nLeitarstrengurinn á að vera á þessu formi: efnistag/myndasnið eða efnistag/*, t.d. <code>image/jpeg</code>.",
        "mimetype": "MIME-tegund:",
        "download": "Hlaða niður",
        "unwatchedpages": "Óvaktaðar síður",
        "enotif_lastvisited": "Heimsóttu eftirfarandi tengil til að sjá allar breytingar síðan \nþú heimsóttir síðuna síðast:\n  $1",
        "enotif_lastdiff": "Einnig getur þú heimsótt eftirfarandi tengil til að skoða þessa breytingu:\n  $1",
        "enotif_anon_editor": "ónefndum notanda $1",
-       "enotif_body": "Kæri $WATCHINGUSERNAME,\n\n$PAGEINTRO\n$NEWPAGE\n\nTil þess að hafa samband við $PAGEEDITOR, smelltu á:\n\n   $PAGEEDITOR_WIKI\n\nAthugaðu að frekari breytingar á $PAGETITLE leiða\nekki af sér fleiri tilkynningar fyrr en þú hefur heimsótt síðuna á meðan þú ert skráð/ur inn.\n\nKveðja,\n{{SITENAME}}\n\n--\n\nTil þess að breyta stillingum um hvenær þú færð sendar tilkynningar, smelltu á:\n\n{{canonicalurl:{{#special:Preferences}}}}\n\n\nTil þess að hætta að fylgjast með „$PAGETITLE”, smelltu á:\n\n$UNWATCHURL",
+       "enotif_body": "Kæri $WATCHINGUSERNAME,\n\n$PAGEINTRO\n$NEWPAGE\n\n$PAGEEDITOR skildi eftir eftirfarandi breytingarágrip: $PAGESUMMARY $PAGEMINOREDIT\n\nTil þess að hafa samband við $PAGEEDITOR, smelltu á $PAGEEDITOR_WIKI eða sentu tölvupóst á $PAGEEDITOR_EMAIL\n\nAthugaðu að frekari aðgerðir á $PAGETITLE leiða\nekki af sér fleiri tilkynningar fyrr en þú hefur heimsótt síðuna á meðan þú ert skráð/ur inn. Þú getur einnig endursett tilkynningar fyrir allar þær síður sem þú fylgist með.\n\nKveðja,\n{{SITENAME}}\n\n--\n\nTil þess að breyta stillingum um hvenær þú færð sendar tilkynningar, smelltu á:\n\n{{canonicalurl:{{#special:Preferences}}}}\n\n\nTil þess að hætta að fylgjast með „$PAGETITLE”, smelltu á:\n\n$UNWATCHURL\n\nFrekari hjálp er að finna á $HELPPAGE.",
        "created": "búin til",
        "changed": "breytt",
        "deletepage": "Eyða",
        "protect-locked-blocked": "Þú getur ekki breytt verndunarstigi á meðan þú ert bannaður.\nHérna er núverandi verndunarstig fyrir síðuna '''$1''':",
        "protect-locked-dblock": "Á meðan gangnabankinn er læstur er ekki hægt að breyta verndunarstigi.\nHér eru núverandi verndunarstig fyrir síðuna '''$1''':",
        "protect-locked-access": "Þú hefur ekki heimild til þess að vernda eða afvernda síður.\nNúverandi staða síðunnar er '''$1''':",
-       "protect-cascadeon": "Þessi síða er vernduð vegna þess að hún er innifalin í eftirfarandi {{PLURAL:$1|síðu, sem er keðjuvernduð|síðum, sem eru keðjuverndaðar}}.\nÞú getur breytt verndunarstigi þessarar síðu, en það mun ekki hafa áhrif á keðjuverndunina.",
+       "protect-cascadeon": "Þessi síða er vernduð vegna þess að hún er innifalin í eftirfarandi {{PLURAL:$1|síðu, sem er keðjuvernduð|síðum, sem eru keðjuverndaðar}}.\nBreytingar á verndunarstigi þessarar síðu munu ekki hafa áhrif á keðjuverndunina.",
        "protect-default": "Leyfa öllum notendum",
        "protect-fallback": "Leyfa eingöngu notendur með „$1“ réttindi",
        "protect-level-autoconfirmed": "Leyfa aðeins sjálkrafa staðfesta notendur",
index 1a563c5..9554fe8 100644 (file)
        "logdelete-selected": "{{PLURAL:$1|選択された記録項目}}:",
        "revdelete-text-text": "削除された版は履歴に表示され続けますが、一般の利用者が内容を閲覧できなくなります。",
        "revdelete-text-file": "削除されたファイルの版はファイルの履歴に表示されつづけますが、一般の利用者はその内容の一部を閲覧できなくなります。",
-       "logdelete-text": "削除された記録項目は記録に表示されつづけますが、一般の利用者はその内容の一部を閲覧できなくなります。",
-       "revdelete-text-others": "追加の制限を設定しない限り、{{SITENAME}} の他の管理者は非表示コンテンツにまだアクセスでき、この同じインターフェースを通してそれを復元することができます。",
+       "logdelete-text": "削除された記録項目は記録に表示されけますが、一般の利用者はその内容の一部を閲覧できなくなります。",
+       "revdelete-text-others": "追加の制限を設定しない限り、他の管理者は非表示コンテンツにまだアクセスすることも復元することもできます。",
        "revdelete-confirm": "この操作を行おうとしていること、その結果を理解していること、[[{{MediaWiki:Policy-url}}|方針]]に従っていること、を確認してください。",
        "revdelete-suppress-text": "秘匿は、<strong>以下の場合に限って</strong>使用すべきです:\n* 名誉毀損のおそれがある記述\n* 非公開個人情報\n*: <em>自宅の住所、電話番号、個人を識別できる公的な番号など</em>",
        "revdelete-legend": "閲覧レベル制限を設定",
        "right-deletedtext": "削除された本文と削除された版間の差分を閲覧",
        "right-browsearchive": "削除されたページを検索",
        "right-undelete": "ページを復元",
-       "right-suppressrevision": "管理者から隠された版を確認/復元",
+       "right-suppressrevision": "すべての利用者からの特定の版を見る、隠す、あるいは隠すのをやめる",
+       "right-viewsuppressed": "すべての利用者から隠された版を閲覧",
        "right-suppressionlog": "非公開記録を閲覧",
        "right-block": "他の利用者の編集をブロック",
        "right-blockemail": "利用者のメール送信をブロック",
        "license": "ライセンス:",
        "license-header": "ライセンス",
        "nolicense": "選択なし",
+       "licenses-edit": "ライセンスオプションを編集",
        "license-nopreview": "(プレビューはありません)",
        "upload_source_url": "(有効かつ一般に公開されている URL)",
        "upload_source_file": "(あなたのコンピューター上のファイル)",
index 1bb1d5d..32c88ba 100644 (file)
        "license-nopreview": "(Қарап шығу жетімді емес)",
        "upload_source_url": "(жарамды, баршаға қатынаулы URL)",
        "upload_source_file": "(компьютеріңіздегі файл)",
+       "listfiles-delete": "жою",
        "listfiles-summary": "Бұл арнайы бетте барлық жүктелген файлдар көрсетіледі.",
        "listfiles_search_for": "Медиа атауын іздеу:",
        "imgfile": "файл",
index 996ae86..bc8eef8 100644 (file)
        "revdelete-text-text": "삭제된 판은 여전히 문서 역사에 남게 되지만, 그 내용의 일부는 다른 사람들이 접근할 수 없게 됩니다.",
        "revdelete-text-file": "삭제된 파일 버전은 계속 파일 역사에 남게 되지만, 내용의 일부는 다른 사람들이 접근할 수 없게 됩니다.",
        "logdelete-text": "삭제된 로그 내용은 로그에 보여지겠지만, 내용의 일부는 다른 사람들이 접근할 수 없게 됩니다.",
-       "revdelete-text-others": "{{SITENAME}}에 있는 다른 관리자는 여전히 숨겨진 내용에 접근할 수 있고 추가 제한이 설정되어 있지 않으면, 이 같은 인터페이스를 통해 다시 되살릴 수 있습니다.",
+       "revdelete-text-others": "다른 관리자는 여전히 숨겨진 내용에 접근할 수 있고 추가 제한이 설정되어 있지 않으면, 다시 되살릴 수 있습니다.",
        "revdelete-confirm": "이 작업을 수행하는 것의 결과를 알고 있으며, [[{{MediaWiki:Policy-url}}|정책]]에 맞는 행동인지 확인해주세요.",
        "revdelete-suppress-text": "숨기기는 '''다음 경우에만''' 사용되어야 합니다:\n* 잠재적인 비방 정보\n* 부적절한 개인 정보\n*: 집 주소, 전화번호, 주민등록번호 등",
        "revdelete-legend": "보이기 제한을 설정",
        "license": "라이선스:",
        "license-header": "라이선스",
        "nolicense": "선택하지 않음",
+       "licenses-edit": "라이선스 옵션 편집",
        "license-nopreview": "(미리 보기 불가능)",
        "upload_source_url": "(올바르고, 공개적으로 접근할 수 있는 URL)",
        "upload_source_file": " (당신의 컴퓨터에 있는 파일)",
index f4ecf82..611f1a2 100644 (file)
        "talkpagelinktext": "gotûbêj",
        "specialpage": "Rûpela taybet",
        "personaltools": "Amûrên kesane",
-       "postcomment": "Beşeke nû",
        "articlepage": "Li rûpela naverokê binêre",
        "talk": "Gotûbêj",
        "views": "Dîtin",
        "externaldberror": "Çewtiyeke bingeha daneyan heye, an jî destûra te ya rojanekirina hesabê xweyê navxweyî nîne.",
        "login": "Têkeve",
        "nav-login-createaccount": "Têkeve / hesabekî nû çêke",
-       "loginprompt": "<b>Eger tu xwe nû tomar bikî, nav û şîfreya xwe hilbijêre.</b> Ji bo tomarkirina te ya di {{SITENAME}} de divê ku ''cookies'' gengaz bin.",
        "userlogin": "Têkeve an hesabekî nû çêke",
        "userloginnocreate": "Têkeve",
        "logout": "Derkeve",
        "gotaccountlink": "Têkeve",
        "userlogin-resetlink": "Te agahiyên hesabê xwe ji bîr kirin?",
        "userlogin-resetpassword-link": "Şîfreyê ji nû ve çêke",
+       "userlogin-helplink2": "Alîkariya têketinê",
        "createacct-emailrequired": "E-name",
        "createaccountmail": "Use a temporary random password and send it to the email address specified below",
        "createaccountreason": "Sedem:",
        "recentchanges-legend-newpage": "$1 - rûpela nû",
        "rclistfrom": "Guherandinên ji $3 $2 şûnde nîşan bide",
        "rcshowhideminor": "Guherandinên biçûk $1",
+       "rcshowhideminor-show": "nîşan bide",
+       "rcshowhideminor-hide": "veşêre",
        "rcshowhidebots": "Bot'an $1",
-       "rcshowhideliu": "Bikarhênerên qeydkirî $1",
-       "rcshowhideanons": "Bikarhênerên neqeydkirî (IP) $1",
+       "rcshowhidebots-show": "nîşan bide",
+       "rcshowhidebots-hide": "veşêre",
+       "rcshowhideliu": "Bikarhênerên tomarkirî $1",
+       "rcshowhideliu-show": "nîşan bide",
+       "rcshowhideliu-hide": "veşêre",
+       "rcshowhideanons": "Bikarhênerên netomarkirî (IP) $1",
+       "rcshowhideanons-show": "nîşan bide",
+       "rcshowhideanons-hide": "veşêre",
        "rcshowhidepatr": "Guherandinên kontrolkirî $1",
        "rcshowhidemine": "Guherandinên min $1",
+       "rcshowhidemine-show": "nîşan bide",
+       "rcshowhidemine-hide": "veşêre",
        "rclinks": "$1 guherandinên di $2 rojên dawî de nîşan bide<br />$3",
        "diff": "cudahî",
        "hist": "dîrok",
index c89dcd0..6505da6 100644 (file)
        "revdelete-selected-text": "{{PLURAL:$1|Erausgesicht Versioun|Erausgesicht Versioune}} vu(n) [[:$2]]:",
        "revdelete-selected-file": "{{PLURAL:$1|Erausgesicht Versioun|Erausgesicht Versioune}} vum Fichier vu(n) [[:$2]]:",
        "logdelete-selected": "Ausgewielten {{PLURAL:$1|Evenement|Evenementer}} aus dem Logbuch:",
-       "revdelete-text-others": "Aner Administrateuren op {{SITENAME}} kënnen nach ëmmer de verstoppten Inhalt gesinn an en iwwer deeselwechten Interface nees restauréieren, ausser wann zousätzlech Limitatiounen agestallt sinn.",
+       "revdelete-text-others": "Aner Administrateure kënnen nach ëmmer de verstoppten Inhalt gesinn an en nees restauréieren, ausser wann zousätzlech Limitatiounen agestallt sinn.",
        "revdelete-confirm": "Confirméiert w.e.g. datt Dir dat maache wëllt, datt Dir d'Konsequenze verstitt an datt Dir dëst an Aklang mat de [[{{MediaWiki:Policy-url}}|Richtlinne]] maacht.",
        "revdelete-suppress-text": "Ënnerdréckung sollt '''nëmmen''' an dëse Fäll benotzt ginn:\n* Informatiounen déi beleidege kéinten\n* Net ubruechte perséinlechen Informatiounen\n*: ''Adressen, Telefonsnummeren, Sozialversécherungsnummeren asw.''",
        "revdelete-legend": "Limitatioune fir d'Sichtbarkeet festleeën",
        "powersearch-togglelabel": "Markéieren:",
        "powersearch-toggleall": "All",
        "powersearch-togglenone": "Keen",
+       "powersearch-remember": "Auswiel fir zukünfteg Sichufroe verhalen",
        "search-external": "Extern sichen",
        "searchdisabled": "D'Sichfunktioun op {{SITENAME}} ass ausgeschalt. Dir kënnt iwwerdeems mat Hëllef vu Google sichen. Bedenkt awer, datt deenen hire  Sichindex fir {{SITENAME}} eventuell net dem aktuellste Stand entsprecht.",
        "search-error": "Beim Sichen ass e Feeler geschitt: $1",
        "right-deletedtext": "Geläschten Text an d'Ännerungen tëscht de geläschte Versioune weisen",
        "right-browsearchive": "Geläscht Säite sichen",
        "right-undelete": "Eng Säit restauréieren",
-       "right-suppressrevision": "Virun den Administrateure verstoppte Versiounen nokucken a restauréieren",
+       "right-suppressrevision": "Spezifesch Versioune vun alle Benotzer weisen, verstoppen a restauréieren",
+       "right-viewsuppressed": "Verstoppt Versioune weisen déi fir all Benotzer verstoppt sinn",
        "right-suppressionlog": "Privat Lëschte kucken",
        "right-block": "Aner Benotzer fir Ännerunge spären",
        "right-blockemail": "E Benotzer späre sou datt hie keng Maile verschécke kann",
        "wantedfiles": "Gewënscht Fichieren",
        "wantedfiletext-cat": "Dës Fichiere gi benotzt awer et gëtt se net. Fichiere aus frieme Repositorie kënnen hei gewise ginn och wann et se gëtt. All sou falsch Positiver ginn <del>duerchgestrach</del>. Zousätzlech gi Säiten an deene Fichieren dra sinn déi et net gëtt op [[:$1]] gewisen.",
        "wantedfiletext-nocat": "Dës Fichiere gi benotzt existéieren awer net. Fichieren aus frieme Repertoiren kënnen trotzdeem opgelëscht ginn. All dës positiv Fichiere ginn <del>duergestrach</del>.",
+       "wantedfiletext-nocat-noforeign": "Dës Fichiere gi benotzt awer et gëtt se net.",
        "wantedtemplates": "Gewënscht Schablounen",
        "mostlinked": "Dacks verlinkt Säiten",
        "mostlinkedcategories": "Dacks benotzt Kategorien",
        "pagelang-select-lang": "Sprooch eraussichen",
        "right-pagelang": "Sprooch vun der Säit änneren",
        "action-pagelang": "d'Sprooch vun der Säit änneren",
+       "log-name-pagelang": "Log vum Ännere vun der Sprooch",
        "log-description-pagelang": "Dëst ass a Log mat den Ännerunge vun de Sprooche vun de Säiten."
 }
index 5352d96..bc79ee7 100644 (file)
        "deletethispage": "ای بلگه نه حذف بكيد",
        "undeletethispage": "ای بلگه نه حذف نكيد",
        "undelete_short": "زنه کردن {{جمی:$1|یه گل ویرایشت|$1 ویرایشتیا}}",
-       "viewdeleted_short": "بوینیت {{[جمی:$1|یه گل ویرایشت پاک بیه|$1ویرایشتیا پاک بیه}}",
+       "viewdeleted_short": "بوینیت {{[جمی:$1|یه گل ویرایشت پاکسا بیه|$1ویرایشتیا پاکسا بیه}}",
        "protect": "حمايت بكيد",
        "protect_change": "آلشت بكيد",
        "protectthispage": "ای بلگه نه حفاظت بكيد",
        "talkpagelinktext": "وت و واچ",
        "specialpage": "بلگه ويجه",
        "personaltools": "اوزاريا شصقی",
-       "postcomment": "بشه تازه",
        "articlepage": "ديئن محتوا بلگه",
        "talk": "گپ",
        "views": "ديئنيا",
        "badaccess-group0": "شما اجازه انجوم کاری که حاستیت نارین",
        "badaccess-groups": "ای کاری که شما هاستیته سی کاروریا د  {{جمی:$2|گرو|یکی د گرویا}}: $1 مئدود بیه",
        "versionrequired": "یه نسقه د نیازمنیا ویکی رسانه\n$1",
-       "versionrequiredtext": "نسقه $1 ویکی مدیا سی استفاده د ای بلگه لازم هئی .\nوه نه بوینیت [[ویجه:نسقه|نسقه بلگه]].",
+       "versionrequiredtext": "نسقه $1 ویکی مدیا سی وه کار بستن د ای بلگه لازم هئی .\nوه نه بوینیت [[ویجه:نسقه|نسقه بلگه]].",
        "ok": "خوئه",
        "retrievedfrom": "بازيافته د\"$1\"",
        "youhavenewmessages": "شما داريت $1($2)",
        "editlink": "ويرايشت",
        "viewsourcelink": "سرچشمه نه بوينيت",
        "editsectionhint": "ويرايشت يه بشق:$1",
-       "toc": "محتوايا",
+       "toc": "مینونه یا",
        "showtoc": "نشو دائن",
        "hidetoc": "قام كردن",
        "collapsible-collapse": "جم كردن",
        "thisisdeleted": "دیئن یا ورگنين $1?",
        "viewdeleted": "دیئن$1?",
        "restorelink": "{{جمی:$1|یه گل ویرایشت پاک بیه|$1 ویرایشتیا پاک بیه}}",
-       "feedlinks": "غذا Ø¯Ù\87Ù\86Ù\87:",
+       "feedlinks": "Ø®Ù\88رحÙ\88:",
        "feed-invalid": "نوع مشترک بین خورحو نامعتور",
        "feed-unavailable": "خور حونیا د دسرس نئین",
        "site-rss-feed": "خورخو RSS سی $1",
        "site-atom-feed": "خور حون Atom سی $1",
-       "page-rss-feed": "Ø®Ù\88رخو RSS سی «$1»",
+       "page-rss-feed": "Ø®Ù\88رحو RSS سی «$1»",
        "page-atom-feed": "خور حون Atom سی $1",
        "red-link-title": "$1(بلگه وجود ناره)",
        "sort-descending": "كم بيئن منظم",
        "nstab-project": "بلگه پروجه",
        "nstab-image": "جانیا",
        "nstab-mediawiki": "پيغوم",
-       "nstab-template": "قالو",
+       "nstab-template": "چوئه",
        "nstab-help": "بلگه هومياری",
        "nstab-category": "دسه",
        "nosuchaction": "چنو كاری وجود ناره",
        "badtitletext": "عنوان بلگه حاسته بیه معتور نی،یا  یه گل مئن زونی یا مئن ویکی عنوان غلطه.\nیه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه سی ای موضوعیا استفاده بوئن",
        "viewsource": "سرچشمه نه بوينيت",
        "viewsource-title": "سرچشمه $1 بوينيت",
-       "actionthrottled": "عمل جلوگئری بیه",
+       "actionthrottled": "کنشت جلوگئری بیه",
        "protectedpagetext": "دای بلگه نبوئه ویرایشت یا کاریا هنی بکید",
        "viewsourcetext": "شما تونیت سرچشمه ای بلگه نه بوینیت و دش ورداریت:",
        "viewyourtext": "شما تونیت سرچشمه ویرایشتیا تونه ای د بلگه بوینیت و دشو ورداریت",
        "password-change-forbidden": "شما نتونید پاسوردیانه د ای ویکی آلشت بکید",
        "login": "اومائن",
        "nav-login-createaccount": " اومائن د سيستم/راس كردن حساو",
-       "loginprompt": "شما وا کوکیانه سی اومائن د {{SITENAME}} کوکیانه فعال بکید.",
        "userlogin": " اومائن د سيستم/راس كردن حساو",
        "userloginnocreate": "اومائن",
        "logout": "رئتن",
        "permissionserrors": "خطا اجازه دئین",
        "permissionserrorstext": "شما حق ناریت ونه انجوم بیئت, سی{{جمی:$1|دلیل|دلیلیا}} نهایی:",
        "permissionserrorstext-withaction": "شما سی $2 اجازه ناریت\nسی دمال کردن{{PLURAL:$1|reason|reasons}}:",
-       "recreate-moveddeleted-warn": "'''زنهار شما بلگه ای که وادما پاک بیه هنی راس کردیته'''\nشما باید دونسه بایت که آیا هنی سی نها گرتن ویرایشت ای بلگه خوئه.\nپاک بیئن و جمشت سی ای بلگه سی راحتی تو فراهم بیه:",
+       "recreate-moveddeleted-warn": "'''زنهار شما بلگه ای که وادما پاکسا بیه هنی راس کردیته'''\nشما باید دونسه بایت که آیا هنی سی نها گرتن ویرایشت ای بلگه خوئه.\nپاکسا بیئن و جمشت سی ای بلگه سی راحتی تو فراهم بیه:",
        "moveddeleted-notice": "ای بلگه پاک بیه.\nپاک بین و جمشت ای بلگه سی سرچشمه دئین فراهم بیه",
        "log-fulllog": "دیئن همه پهرستنومه یا",
        "edit-conflict": "مخالفت نه ویرایشت بکید",
        "page_last": "آخر",
        "histlegend": "انتخاو فرخدار:جعویا رادیو نه سی دوواره دیئن و وارسی نشو دار بکید و یا ری رئتن کلیک بکید .<br />\nشرح نوشته: '''({{int:cur}})''' = وا آخری دوواره دیئن فرخ داره '''({{ int:last}})'''= وا دواره دیئن انجوم دئنی فرخ داره  '''{{int:minoreditletter}}''' =ویرایشت کؤچک.",
        "history-fieldset-title": "ویرگار مرور ون",
-       "history-show-deleted": "فقط پاك بيه",
+       "history-show-deleted": "فقط پاكسا بيه",
        "histfirst": "قديمي تري",
        "histlast": "تازه تري",
        "historysize": "({{جمی:$1|1 بایت|$1 بایتیا}})",
        "history-feed-title": "ویرگار دوواره دیئن",
        "history-feed-description": "دوواره دیئن ویرگار سی بلگه د ویکی",
        "history-feed-item-nocomment": "$1 د\n$2",
-       "history-feed-empty": "بلگه حاسته بیه وجود ناره.\nشایت وه د ویکی پاک بیه، یا نومش آلشت بیه.\nسی بلگیا مرتوط تازه [[ویجه:پی جوری|پی جوری د ویکی]] کوششت بکید.",
+       "history-feed-empty": "بلگه حاسته بیه وجود ناره.\nشایت وه د ویکی پاکسا بیه، یا نومش آلشت بیه.\nسی بلگیا مرتوط تازه [[ویجه:پی جوری|پی جوری د ویکی]] کوششت بکید.",
        "rev-deleted-comment": "(ویرایشت چکسته جا وه جا بیه)",
        "rev-deleted-user": "(نوم کاروری جا وه جا بیه)",
        "rev-deleted-event": "(انجوم گر پهرستنومه جا وه جا بیه)",
        "rev-deleted-user-contribs": "[نوم کاروری یا نشونی آی پی جا وه جا بیه - چیا قام بیه د ور هوم یاریانه ویرایشت بکید]",
        "rev-delundel": "آلشت وضئيت ديئن",
        "rev-showdeleted": "نشو دائن",
-       "revisiondelete": "پاک کردن/زنه کردن وانئریا",
+       "revisiondelete": "پاکسا کردن/زنه کردن وانئریا",
        "revdelete-nooldid-title": "وانیری تمارزی بیه نامعتوره",
        "revdelete-no-file": "فایل مشقص بیه وجود ناره.",
        "revdelete-show-file-submit": "هری",
        "revdelete-failure": "'''دیئن وانیری وه خوئی وه هنگوم نبی:'''$1",
        "revdel-restore": "آلشت وضئيت ديئن",
        "pagehist": "ويرگار بلگه",
-       "deletedhist": "ویرگار پاک بیه",
+       "deletedhist": "ویرگار پاکسا بیه",
        "revdelete-otherreason": "دلیل هنی:",
        "revdelete-reasonotherlist": "دلیل هنی",
-       "revdelete-edit-reasonlist": "دلیلیا پاک کردنه نه ویرایشت بکید",
+       "revdelete-edit-reasonlist": "دلیلیا پاکسا کردنه نه ویرایشت بکید",
        "revdelete-offender": "نیسنه وانیری:",
        "mergehistory": "ویرگاریا بلگه نه یکی بکید",
        "mergehistory-header": "ای بلگه وه شما اجازه می ئه که وانیریانه ویرگار سرچشمه بلگه نه د یه گل بلگه تازه سریک سازی بکید.\nمطمئن بویت که ای آلشت د لحاظ ویرگاری د مین بلگه موندگار هئ.",
        "right-upload": "سوار کردن فايلا",
        "right-upload_by_url": "سوار کرد فایلیا د یو آر ال",
        "right-writeapi": "د نیسنن ای پی آی استفاده بکید",
-       "right-delete": "بلگیا نه پاک کو",
+       "right-delete": "بلگیا نه پاکسا کو",
        "right-browsearchive": "بلگه یا پاک بیه نه پی جوری کو",
        "right-undelete": "ای بلگه نه حذف نكيد",
        "right-suppressionlog": "دیئن پهرستنومه یا خصوصی",
        "action-upload": "ای فایل سوار بکید",
        "action-upload_by_url": "ای فایله نه د یو آر ال سوار بکید",
        "action-writeapi": "د نیسنن ای پی آی استفاده بکید",
-       "action-delete": "ای بلگه نه پاک کو",
+       "action-delete": "ای بلگه نه پاکسا کو",
        "action-deleterevision": "ای بازدئین پاک کو",
-       "action-deletedhistory": "ویرگار پاک بیه ای بلگه نه بوینیت",
+       "action-deletedhistory": "ویرگار پاکسا بیه ای بلگه نه بوینیت",
        "action-browsearchive": "بلگه یا پاک بیه نه پی جوری بکید",
        "action-undelete": "ای بلگه نه پاک نکو",
        "action-suppressionlog": "ای پهرستنومه خصوصی نه بوینیت",
        "upload-too-many-redirects": "ای یو آر ال د ورگیرنه واگردونیا فرئی هئ",
        "upload-copy-upload-invalid-domain": "ورداشتن سوارکردیا د ای پوشگئر د دسرس نئ.",
        "backend-fail-notexists": "فایل $1 وجود ناره.",
-       "backend-fail-delete": "نبوئه جانیا $1 پاک بوئه",
+       "backend-fail-delete": "نبوئه جانیا $1 پاکسا بوئه",
        "backend-fail-describe": "نبوئه گپ دونسمنیا سی جانیا\"$1\" آلشت بوئه.",
        "backend-fail-store": "نبوئه جانیا \"$1\" د \"$2\" امبار بوئه.",
        "backend-fail-move": "نبوئه جانیا \"$1\" د \"$2\" جا وه جا بوئه",
        "nolicense": "هیچی انتخاو نبیه",
        "license-nopreview": "(پیش سیل د دسرس نئ)",
        "upload_source_file": "(یه گل فایل د انجومیار تو)",
+       "listfiles-delete": "پاکسا کردن",
        "listfiles-summary": "ای بلگه یا ویجه همه جانیایا سوار بیه نه نشو می ئین.",
        "listfiles_search_for": "پی جوری سی نوم رسانه:",
        "imgfile": "فايل",
        "file-anchor-link": "فايل",
        "filehist": "ويرگار فايل",
        "filehist-help": "ری  ويرگاريا بپورنيت تا نسقه مرتوط بونيت.",
-       "filehist-deleteall": "همه نه پاک کو",
+       "filehist-deleteall": "همه نه پاکسا کو",
        "filehist-deleteone": "پاك كردن",
        "filehist-revert": "ورگنین",
        "filehist-current": "تازه باو",
        "shared-repo-from": "د $1",
        "filerevert-comment": "دليل:",
        "filerevert-submit": "ورگنین",
-       "filedelete": "$1 پاک کو",
+       "filedelete": "$1 پاکسا کو",
        "filedelete-legend": "فایل نه پاک کو",
        "filedelete-comment": "دليل:",
-       "filedelete-submit": "پاك كردن",
-       "filedelete-success": "$1 پاک بیه.",
+       "filedelete-submit": "پاكسا كردن",
+       "filedelete-success": "$1 پاکسا بیه.",
        "filedelete-nofile": "'''$1''' وجود ناره.",
        "filedelete-otherreason": "دلیل هنی:",
        "filedelete-reason-otherlist": "دليل هنی",
        "filedelete-edit-reasonlist": "دلیلیا پاک کردنه نه ویرایشت بکید",
-       "filedelete-maintenance-title": "نبوئه ای فایل پاک بوئه",
+       "filedelete-maintenance-title": "نبوئه ای فایل پاکسا بوئه",
        "mimesearch": "پی جوری ام آی ام ای",
        "download": "گرتن",
        "unwatchedpages": "بلگه یا ندئیه بیه",
        "double-redirect-fixer": "تعمیر کننه واگردونی",
        "brokenredirectstext": "واگردونیا نهاتر د بلگه یایی که وجود نارن هوم پیوند بینه.",
        "brokenredirects-edit": "ویرایشت",
-       "brokenredirects-delete": "پاك كردن",
+       "brokenredirects-delete": "پاكسا كردن",
        "withoutinterwiki": "بلگه یایی که هوم پیوند زون نارن",
        "withoutinterwiki-legend": "پیشون",
        "withoutinterwiki-submit": "نشون دائن",
        "allpages-hide-redirects": "واگردونیا قام بیه",
        "cachedspecial-refresh-now": "دیئن آخری.",
        "categories": "دسه يا",
-       "deletedcontributions": "هومیاریا پاک بیه کارور",
+       "deletedcontributions": "هومیاریا پاکسا بیه کارور",
        "deletedcontributions-title": "هومیاریا پاک بیه کارور",
        "sp-deletedcontributions-contribs": "هومیاریا",
        "linksearch-ns": "نوم جا:",
        "confirm": "مئكم كردن",
        "excontent": "مینونه :\"$1\" بی",
        "exbeforeblank": "مینونه حالی دمایی:\"$1\" بی",
-       "delete-confirm": "پاک کردن\"$1\"",
+       "delete-confirm": "پاکسا کردن\"$1\"",
        "delete-legend": "پاك كردن",
        "actioncomplete": "عملكرد كامل بيه",
        "actionfailed": "عملكرد شكست حرده",
        "deletecomment": "دليل:",
        "deleteotherreason": "دليليا هنی:",
        "deletereasonotherlist": "دلیل هنی",
-       "deletereason-dropdown": "* دلیلیا پاک کردن رسم بیه\n** اسپم\n** خراوکاری\n** رعایت نبین کپی رایت\n** درحاست نیسنه\n** نهاورگشت شکست حرده",
+       "deletereason-dropdown": "* دلیلیا پاکسا کردن رسم بیه\n** اسپم\n** خراوکاری\n** رعایت نبین کپی رایت\n** درحاست نیسنه\n** نهاورگشت شکست حرده",
        "rollbacklink": "ورگشتن",
        "sessionfailure-title": "شکست حردن نشینگه",
        "protectlogpage": "حفاظت کردن",
        "undeleteviewlink": "ديئن",
        "undeletecomment": "دليل:",
        "cannotundelete": "زنه کردن انجوم نبی:$1",
-       "undelete-search-title": "بلگه یا پاک بیه نه پی جوری کو",
+       "undelete-search-title": "بلگه یا پاکسا بیه نه پی جوری کو",
        "undelete-search-submit": "پی جوری",
        "undelete-error-short": "خطا پاک نبیئن جانیا:$1",
        "undelete-show-file-submit": "هری",
        "movelogpage": "جاوه جا کردن",
        "movelogpagetext": "د هار یه گل نوم گه د جا وه جایی یا بلگه هئ",
        "revertmove": "لرستن",
-       "delete_and_move": "پاک و جا وه جا بوئه",
+       "delete_and_move": "پاکسا و جا وه جا بوئه",
        "export": "وه صحرا ديئن بلگيا",
        "export-download": "ذخیره کردن جانیا",
        "allmessagesname": "نوم",
        "tooltip-ca-viewsource": "ای بلگه حفاظت بيه.\nشما تونيت سرچمه ش بئوينيت",
        "tooltip-ca-history": "دوواره ديئن ای بلگه",
        "tooltip-ca-protect": "ای بلگه نه حفاظت بكيد",
-       "tooltip-ca-delete": "ای بلگه نه حذف بكيد",
+       "tooltip-ca-delete": "ای بلگه نه پاکسا کو",
        "tooltip-ca-move": "ای بگله نه جا وه جا كو",
        "tooltip-ca-watch": "اضاف کردن ای بلگه وه نوم نوشت پیگئریاتو",
        "tooltip-ca-unwatch": "ورداشتن ای بلگه وه نوم نوشت پیگئریاتو",
index 70c362e..e48dc39 100644 (file)
        "talkpagelinktext": "Diskusija",
        "specialpage": "Īpašā Lapa",
        "personaltools": "Lietotāja rīki",
-       "postcomment": "Pievienot komentāru",
        "articlepage": "Apskatīt rakstu",
        "talk": "Diskusija",
        "views": "Apskates",
        "externaldberror": "Notikusi vai nu ārējās autentifikācijas datubāzes kļūda, vai arī tev nav atļauts izmainīt savu ārējo kontu.",
        "login": "Pieslēgties",
        "nav-login-createaccount": "Izveidot jaunu lietotāju vai doties iekšā",
-       "loginprompt": "Lai ieietu {{grammar:lokatīvs|{{SITENAME}}}}, tavam datoram ir jāpieņem sīkdatnes (<i>cookies</i>).",
        "userlogin": "Izveidot jaunu lietotāju vai doties iekšā",
        "userloginnocreate": "Pieslēgties",
        "logout": "Iziet",
        "gotaccount": "Tev jau ir lietotājvārds? '''$1'''!",
        "gotaccountlink": "Pieslēgties",
        "userlogin-resetlink": "Esat aizmirsis savu pieslēgšanās informāciju?",
+       "userlogin-helplink2": "Palīdzība ar pieslēgšanos",
        "userlogin-loggedin": "Tu esi pieslēdzies ar lietotājvārdu {{GENDER:$1|$1}}.\nLai pieslēgtos ar citu lietotājvārdu, aizpildi šo formu.",
        "userlogin-createanother": "Izveidot citu kontu",
        "createacct-emailrequired": "E-pasta adrese",
        "search-result-score": "Atbilstība: $1%",
        "search-redirect": "(pāradresēts no $1)",
        "search-section": "(sadaļa $1)",
+       "search-file-match": "(atbilst faila saturam)",
        "search-suggest": "Vai jūs domājāt: $1",
        "search-interwiki-caption": "Citi projekti",
        "search-interwiki-default": "Rezultāti no $1:",
        "statistics-users-active": "Aktīvi lietotāji",
        "statistics-users-active-desc": "Lietotāji, kas ir veikuši jebkādu darbību {{PLURAL:$1|iepriekšējā dienā|iepriekšējās $1 dienās}}",
        "statistics-mostpopular": "Visvairāk skatītās lapas",
+       "pageswithprop-prop": "Īpašības nosaukums:",
        "pageswithprop-submit": "Aiziet",
        "doubleredirects": "Divkāršas pāradresācijas lapas",
        "doubleredirectstext": "Šajā lapā ir uzskaitītas pāradresācijas lapas, kuras pāradresē uz citām pāradresācijas lapām.\nKatrā rindiņā ir saites uz pirmo un otro pāradresācijas lapu, kā arī pirmā rindiņa no otrās pāradresācijas lapas teksta, kas parasti ir faktiskā \"gala\" lapa, uz kuru vajadzētu būt saitei pirmajā lapā.\n<del>Nosvītrotie</del> ieraksti jau ir tikuši salaboti.",
        "protectedpages-indef": "Tikai bezgalīgas aizsardzības",
        "protectedpages-cascade": "Tikai kaskādes aizsardzības",
        "protectedpages-noredirect": "Paslēpt pāradresācijas",
+       "protectedpages-page": "Lapa",
+       "protectedpages-reason": "Iemesls",
+       "protectedpages-unknown-timestamp": "Nav zināms",
+       "protectedpages-unknown-performer": "Nezināms lietotājs",
        "protectedtitles": "Aizsargātie nosaukumi",
        "protectedtitlesempty": "Pagaidām nevienas lapas nosaukums nav aizsargāts ar šiem paraametriem.",
        "listusers": "Lietotāju uzskaitījums",
        "pageinfo-edits": "Kopējais izmaiņu skaits",
        "pageinfo-authors": "Kopējais atsevišķu autoru skaits",
        "pageinfo-toolboxlink": "Lapas informācija",
+       "pageinfo-redirectsto": "Pāradresē uz",
        "pageinfo-redirectsto-info": "info",
+       "pageinfo-contentpage": "Skaitīta kā satura lapa",
        "pageinfo-contentpage-yes": "Jā",
        "pageinfo-protect-cascading-yes": "Jā",
        "pageinfo-category-info": "Kategorijas informācija",
        "exif-specialinstructions": "Īpašas norādes",
        "exif-headline": "Virsraksts",
        "exif-source": "Avots",
+       "exif-locationdest": "Attēlotā vieta",
+       "exif-locationdestcode": "Attēlotās vietas kods",
        "exif-contact": "Kontaktinformācija",
        "exif-languagecode": "Valoda",
        "exif-iimversion": "IIM versija",
        "watchlistedit-raw-done": "Tavs uzraugāmo rakstu saraksts tika atjaunots.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 lapa tika pievienota|$1 lapas tika pievienotas}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 lapa tika noņemta|$1 lapas tika noņemtas}}:",
+       "watchlistedit-clear-titles": "Nosaukumi:",
        "watchlisttools-view": "Skatīt atbilstošās izmaiņas",
        "watchlisttools-edit": "Apskatīt un izmainīt uzraugāmo rakstu sarakstu",
        "watchlisttools-raw": "Izmainīt uzraugāmo rakstu saraksta kodu",
        "duplicate-defaultsort": "'''Brīdinājums:''' Noklusējuma kārtošanas atslēga \"$2\" ignorē kārtošanas atslēga \"$1\".",
        "version": "Versija",
        "version-extensions": "Ieinstalētie paplašinājumi",
-       "version-skins": "Apdares",
+       "version-skins": "Uzstādītās apdares",
        "version-specialpages": "Īpašās lapas",
        "version-variables": "Mainīgie",
        "version-antispam": "Spama aizsardzība",
        "version-hooks": "Aizķeres",
        "version-hook-name": "Aizķeres nosaukums",
        "version-version": "(Versija $1)",
+       "version-no-ext-name": "[bez nosaukuma]",
        "version-license": "MediaWiki licence",
+       "version-ext-license": "Licence",
+       "version-ext-colheader-name": "Paplašinājums",
+       "version-skin-colheader-name": "Apdare",
+       "version-ext-colheader-version": "Versija",
+       "version-ext-colheader-license": "Licence",
+       "version-ext-colheader-description": "Apraksts",
+       "version-ext-colheader-credits": "Autori",
        "version-poweredby-credits": "Šis viki darbojas ar '''[https://www.mediawiki.org/ MediaWiki]''' programmatūru, autortiesības © 2001-$1 $2.",
        "version-poweredby-others": "citi",
        "version-poweredby-translators": "translatewiki.net tulkotāji",
        "htmlform-no": "Nē",
        "htmlform-yes": "Jā",
        "htmlform-chosen-placeholder": "Izvēlieties iespēju",
+       "htmlform-cloner-create": "Pievienot vairāk",
        "sqlite-has-fts": "$1 ar pilnteksta meklēšanas atbalstu",
        "sqlite-no-fts": "$1 bez pilnteksta meklēšanas atbalsta",
        "logentry-delete-delete": "$1 {{GENDER:$2|izdzēsa}} lapu $3",
index 1379130..f6da81d 100644 (file)
@@ -8,11 +8,11 @@
                        "Erdemaslancan",
                        "Ibero-kolxi",
                        "Reedy",
-                       "The Evil IP address"
+                       "The Evil IP address",
+                       "아라"
                ]
        },
        "tog-underline": "Link'iş tude kogu3’uxaçki:",
-       "tog-rememberpassword": "Parola-skani goişini (for a maximum of $1 {{PLURAL:$1|day|days}})",
        "tog-showhiddencats": "Şinaxeri k'at'egorepe ko3'iri",
        "underline-always": "P'anda",
        "underline-never": "P'ot'e",
        "oct": "Gum",
        "nov": "Çxa",
        "dec": "Xri",
+       "january-date": "3ʼanağani $1",
+       "february-date": "Kʼundura $1",
+       "march-date": "Martʼi $1",
+       "april-date": "Apʼrili $1",
+       "may-date": "Maisi $1",
+       "june-date": "Mbuliştuta $1",
+       "july-date": "X3ala $1",
+       "august-date": "Maraşina $1",
+       "september-date": "Stʼaroşina $1",
+       "october-date": "Gumatuta $1",
+       "november-date": "Çxalva $1",
+       "december-date": "Xristʼana $1",
        "pagecategories": "Butʼkʼaşi {{PLURAL:$1|kʼatʼegori|kʼatʼegorepe}}",
        "category_header": "\"$1\" kʼatʼegoris butʼkʼape",
        "subcategories": "Tudekʼategorepe",
@@ -83,7 +95,7 @@
        "newwindow": "(ağne penceres guin3ʼkʼen)",
        "cancel": "İpʼtʼali qʼvi",
        "moredotdotdot": "Çkva…",
-       "mypage": "Çkimi sayfa",
+       "mypage": "Stʼatʼia",
        "mytalk": "Çkimi mesajepe",
        "anontalk": "Am IP'şi mesajepe",
        "navigation": "Goxtima",
        "qbedit": "Doktiri",
        "qbpageoptions": "Am sayfa",
        "qbmyoptions": "Çkimi sayfape",
-       "vector-action-delete": "Jili",
-       "vector-action-move": "Tori",
-       "vector-action-protect": "İçvi",
-       "vector-view-create": "dokʼidi",
-       "vector-view-edit": "Doktiri",
-       "vector-view-view": "İǩitxi",
        "variants": "Variant'epe",
        "errorpagetitle": "Çilata",
        "returnto": "$1 butʼkʼaşa goikti.",
        "youhavenewmessagesmulti": "$1's ağne mesajepe giğun",
        "editsection": "doktiri",
        "editold": "Doktiri",
+       "viewsourceold": "odude koz*iri",
        "editlink": "Doktiri",
        "viewsourcelink": "odude koz*iri",
        "editsectionhint": "$1 burme muşi doktiri",
        "toc": "Temaşi dudi-coxope",
        "showtoc": "ko3ʼiri",
        "hidetoc": "Doşinaxi",
+       "collapsible-collapse": "Nok’açi",
+       "viewdeleted": "Koziri $1?",
+       "feedlinks": "Omgvani:",
        "site-rss-feed": "$1 RSS-iş Feedi",
        "site-atom-feed": "$1 Atʼom-iş feedi",
        "page-rss-feed": "\"$1\" RSS-iş Feedi",
        "nstab-image": "Dosya",
        "nstab-mediawiki": "Mesaji",
        "nstab-template": "Şabloni",
+       "nstab-help": "Meşvelaşi but’k’a",
        "nstab-category": "Kʼatʼegori",
+       "error": "Çilata",
        "missing-article": "Datʼabeizik, na igoren \"$1\" $2 coxoni butʼkʼaşi tekstʼi var az*iru.\n\nMuşeni? Çunki am butʼkʼa, jileri na ren a butʼkʼaşi golaxteri versiyoni ren.\n\nEger sebebi aya na va renna, pʼrogramis ar çilata z*irit.\nMu iqʼven! Aya, a [[Special:ListUsers/sysop|adminis]], URL-ti çʼareli şekʼilite rapʼortʼi doçʼarit.",
        "missingarticle-rev": "(revizyoni#: $1)",
        "badtitle": "Varixmarinen boxoxia",
        "badtitletext": "Na içʼaren butʼkʼaşi coxo ya çilatoni ren ya boşi ren varna inter-nena do inter-vikʼişi kʼontʼaktʼis na uğutʼu şeni mtini varen.\nDudicoxopes oxmaruşi yasaği na ren ar, varna daha dido kʼarakʼtʼeri uğun.",
        "viewsource": "Odudes o3ʼkʼedi",
+       "welcomeuser": "K'aobaten, $1!",
        "yourname": "Skani maxmare-coxo:",
+       "userlogin-yourname": "Skani maxmare-coxo",
        "yourpassword": "Pʼarola-skani:",
+       "userlogin-yourpassword": "Pʼarola-skani",
        "remembermypassword": "Parola-skani goişini (for a maximum of $1 {{PLURAL:$1|day|days}})",
+       "yourdomainname": "Skani domaini:",
        "login": "Sitʼeşa amaxti",
        "nav-login-createaccount": "Sitʼeşa amaxti / hesabi dokʼidi",
        "userlogin": "Sitʼeşa amaxti / hesabi dokʼidi",
+       "userloginnocreate": "Sitʼeşa amaxti",
        "logout": "Siteşen Kogamaxti",
        "userlogout": "Siteşen Kogamaxti",
+       "userlogin-joinproject": "{{SITENAME}}işe ak’ati",
        "nologin": "Hesabi va giğuni? '''$1'''",
        "nologinlink": "Hesabi dokʼidi.",
        "createaccount": "Hesabi dokʼidi",
        "gotaccountlink": "Sitʼeşa amaxti",
+       "createaccountreason": "Muşen:",
+       "createacct-reason": "Muşen",
        "mailmypassword": "Ağne pʼarola-çkimi moncğoni",
        "loginlanguagelabel": "Nena: $1",
        "oldpassword": "Mcveşi p'arola:",
        "newpassword": "Ağani P'arola:",
+       "passwordreset-username": "Skani maxmare-coxo:",
        "bold_sample": "Mçxu nçʼara",
        "bold_tip": "Mçxu nçʼara",
        "italic_sample": "Elakteri nçʼara",
        "nextrevision": "Ağani xali-muşi →",
        "currentrevisionlink": "İrişen ağne xali-muşi ko3ʼiri",
        "cur": "farkʼi",
+       "next": "ok’uleni",
        "last": "çodina",
+       "page_first": "iptineri",
+       "page_last": "çodina",
        "histlegend": "Farkʼiş 3xuna: o3xunu şeni na ginon 2 versiyoniş na go3ʼadgin dairepeşa gebaz*gi, do ukvule entʼerişa gebaz*gi varna butʼkʼaşi tude na dgin tʼuşişa gebaz*gi.<br />\nOxo3ʼonapape: (a3ʼineri) = a3ʼineri versiyoni kʼala na ren farkʼi,\n(iptineri) = iptineri versiyoni kʼala na ren farkʼi, Çʼ = çʼitʼa oktiroba.",
        "history-fieldset-title": "Golaxteris o3ʼkʼedi",
        "history-show-deleted": "Xvala nijilenepe",
        "histfirst": "irişen mcveşi",
        "histlast": "irişen ağani",
        "rev-delundel": "ko3ʼiri/doşinaxi",
-       "revdelete-radio-set": "Ho",
+       "rev-showdeleted": "ko3ʼiri",
+       "revdelete-show-file-submit": "Ho",
+       "revdelete-radio-set": "Şinaxeri",
        "revdelete-radio-unset": "Var",
        "revdel-restore": "Ozʼiramuşi doktiri",
        "revertmerge": "Artikʼartişen okʼo3ʼkʼi",
        "search-section": "(burme $1)",
        "search-suggest": "Aya çʼari-i: $1",
        "search-interwiki-caption": "Cuma projepe",
-       "search-interwiki-default": "$1 sonucepe:",
+       "search-interwiki-default": "$1'işi sonucepe:",
        "search-interwiki-more": "(çkva)",
        "searchall": "mteli",
        "powersearch-legend": "Mordineri ogoru",
        "powersearch-ns": "Svacoxo-s mgori:",
-       "powersearch-redir": "Redirektʼepe ilistʼeli",
+       "powersearch-toggleall": "İri",
+       "powersearch-togglenone": "Çkari",
        "preferences": "Tercihepe",
        "mypreferences": "Çkimi tercihepe",
        "searchresultshead": "Mgori",
        "timezoneregion-antarctica": "Antartik'a",
        "timezoneregion-asia": "Asya",
        "timezoneregion-europe": "Avrop'a",
+       "prefs-searchoptions": "Mgori",
        "youremail": "E-maili:",
        "yourrealname": "Coxo skani:",
        "yourlanguage": "Nena skani:",
-       "gender-male": "Biç'i",
-       "gender-female": "Bozo (K'ulani)",
+       "gender-male": "Biç'ik wikişi but'k'ape nkturams",
+       "gender-female": "Bozok wikişi but'k'ape nkturams",
        "email": "E-maili",
        "group": "Grubi:",
+       "group-user": "K'oçepe",
+       "group-bot": "Botepe",
        "group-sysop": "Adminepe",
+       "group-all": "(iri)",
        "grouppage-sysop": "{{ns:project}}:Adminepe",
+       "right-read": "But’k’ape ik’itxi",
+       "right-edit": "But'k'ape nkturi",
        "right-delete": "Am sayfape jili",
        "newuserlogpage": "Ağani maxmareş kʼayitʼepe",
        "rightslog": "Maxmareş hakʼişi kʼayitʼepe",
        "recentchanges": "Çodinaşi oktirobape",
        "recentchanges-legend": "Çodinaşi oktirobape tercihepe",
        "recentchanges-feed-description": "Am feedis vikiʼs na ixvenu irişen sonni oktirobape gatxozi.",
-       "rclistfrom": "$1 tarixişen doni na ixvenu oktirobape ko3ʼiri",
+       "rclistfrom": "$3 $2 tarixişen doni na ixvenu oktirobape ko3ʼiri",
        "rcshowhideminor": "çʼitʼa oktirobape $1",
+       "rcshowhideminor-show": "Ko3ʼiri",
+       "rcshowhideminor-hide": "Şinaxi",
        "rcshowhidebots": "botʼepe $1",
+       "rcshowhidebots-show": "Ko3ʼiri",
+       "rcshowhidebots-hide": "Şinaxi",
        "rcshowhideliu": "meçʼareri maxmarepe $1",
+       "rcshowhideliu-show": "Ko3ʼiri",
+       "rcshowhideliu-hide": "Şinaxi",
        "rcshowhideanons": "anonimuri maxmarepe $1",
+       "rcshowhideanons-show": "Ko3ʼiri",
+       "rcshowhideanons-hide": "Şinaxi",
+       "rcshowhidepatr-show": "Ko3ʼiri",
+       "rcshowhidepatr-hide": "Şinaxi",
        "rcshowhidemine": "çkimi oktirobape $1",
+       "rcshowhidemine-show": "Ko3ʼiri",
+       "rcshowhidemine-hide": "Şinaxi",
        "rclinks": "Çodinaşi $2 ndğas na ixvenu çodinaşi $1 oktiroba ko3ʼiri;<br /> $3",
        "diff": "farkʼi",
        "hist": "tarixi",
        "booksources-go": "İgzali",
        "log": "Kʼayitʼepe",
        "allpages": "Mteli butʼkʼape",
-       "alphaindexline": "$1 butʼkʼa muşişen $2 butʼkʼa muşişa",
        "prevpage": "İptineri butʼkʼa ($1)",
        "allpagesfrom": "Olistʼeluşa na geiçʼkʼasen harfepe:",
        "allpagesto": "Amu kʼala na içodu butʼkʼape ko3ʼiri:",
index 246cdcb..9728a18 100644 (file)
        "revdelete-text-text": "Избришаните преработки сепак се појавуваат во историјата, но делови од нивната содржина ќе бидат недостапни за јавноста.",
        "revdelete-text-file": "Избришаните верзии на податотеките сепак се појавуваат во нејзината историја, но делови од нивната содржина ќе бидат недостапни за јавноста.",
        "logdelete-text": "Избришаните дневнички ставки сепак се појавуваат во дневниците, но делови од нивната содржина ќе бидат недостапни за јавноста.",
-       "revdelete-text-others": "Другите администратори на {{SITENAME}} сепак ќе имаат пристап до скриените содржини и ќе можат да го повратат избришаното преку овој ист посредник, доколку не ставите дополнителни ограничувања.",
+       "revdelete-text-others": "Другите администратори на сепак ќе имаат пристап до скриените содржини и ќе можат да го повратат избришаното преку овој ист посредник, доколку не ставите дополнителни ограничувања.",
        "revdelete-confirm": "Потврдете дека сакате да го направите ова, дека ги сфаќате последиците, и дека тоа го правите во согласност со [[{{MediaWiki:Policy-url}}|правилата]].",
        "revdelete-suppress-text": "Притајувањето се користи '''само''' во следниве случаи:\n* Потенцијално клеветнички информации\n* Несоодветни лични информации\n*: ''домашни адреси и телефонски броеви, матични броеви и тн.''",
        "revdelete-legend": "Постави ограничувања за видливост",
        "right-deletedtext": "Прегледување на избришан текст и промени помеѓу избришани преработки",
        "right-browsearchive": "Пребарување на избришани страници",
        "right-undelete": "Обновување избришана страница",
-       "right-suppressrevision": "Прегледување и враќање на преработки скриени од администратори",
+       "right-suppressrevision": "Прегледување, скривање и откривање на поединечни преработки на страници од било кој корисник",
+       "right-viewsuppressed": "Преглед на праработки скриени од било кој корисник",
        "right-suppressionlog": "Гледање на лични дневници",
        "right-block": "Оневозможување на останати корисници да уредуваат",
        "right-blockemail": "Оневозможување корисници да праќаат е-пошта",
index 6c146cf..cf77e05 100644 (file)
        "revdelete-text-text": "മായ്ക്കപ്പെട്ട നാൾപ്പതിപ്പുകൾ താളിന്റെ നാൾവഴിയിൽ കാണാവുന്നതായിരിക്കുമെങ്കിലും, അവയുടെ ഉള്ളടക്കത്തിന്റെ ചില ഭാഗങ്ങൾ പൊതുജനങ്ങൾക്ക് ലഭ്യമായിരിക്കണമെന്നില്ല.",
        "revdelete-text-file": "പ്രമാണത്തിന്റെ മായ്ക്കപ്പെട്ട പതിപ്പുകൾ താളിന്റെ നാൾവഴിയിൽ കാണാവുന്നതായിരിക്കുമെങ്കിലും, അവയുടെ ഉള്ളടക്കത്തിന്റെ ചില ഭാഗങ്ങൾ പൊതുജനങ്ങൾക്ക് ലഭ്യമായിരിക്കണമെന്നില്ല.",
        "logdelete-text": "മായ്ക്കപ്പെട്ട പ്രവൃത്തികൾ പ്രവർത്തന രേഖകളിൽ കാണാവുന്നതായിരിക്കുമെങ്കിലും, അവയുടെ ഉള്ളടക്കത്തിന്റെ ചില ഭാഗങ്ങൾ പൊതുജനങ്ങൾക്ക് ലഭ്യമായിരിക്കണമെന്നില്ല.",
-       "revdelete-text-others": "{{SITENAME}} സംരംഭത്തിലെ മറ്റ് കാര്യനിർവ്വാഹകർക്ക് മറയ്ക്കപ്പെട്ട ഉള്ളടക്കം ഇപ്പോഴും എടുക്കാവുന്നതും ആവശ്യമെങ്കിൽ ഇതേ സമ്പർക്കമുഖം ഉപയോഗിച്ച് പുനഃസ്ഥാപിക്കാനോ അല്ലെങ്കിൽ കൂടുതൽ നിബന്ധനകൾ ചേർക്കാനോ കഴിയുന്നതുമാണ്.",
+       "revdelete-text-others": "കൂടുതൽ നിബന്ധനകൾ ചേർക്കാത്ത പക്ഷം, മറ്റ് കാര്യനിർവ്വാഹകർക്ക് മറയ്ക്കപ്പെട്ട ഉള്ളടക്കം എടുക്കാനും പുനഃസ്ഥാപിക്കാനും കഴിയുന്നതാണ്.",
        "revdelete-confirm": "ഇതിന്റെ അനന്തരഫലങ്ങളെക്കുറിച്ചറിയാമെന്നും, [[{{MediaWiki:Policy-url}}|നയങ്ങൾ]] പാലിച്ചാണ് താങ്കളിത് ചെയ്യുന്നതെന്നും ഉറപ്പാക്കുക.",
        "revdelete-suppress-text": "താഴെ പറയുന്ന സാഹചര്യങ്ങളിൽ '''മാത്രമേ''' ഒതുക്കൽ ഉപയോഗിക്കാവൂ:\n* അപകീർത്തികരമായ വിവരങ്ങൾ അടങ്ങിയവ\n* അനുയോജ്യമല്ലാത്ത വ്യക്തി വിവരങ്ങൾ\n*: ''വീട്ടുവിലാസങ്ങൾ, ടെലിഫോൺ നമ്പറുകൾ, സാമൂഹിക സുരക്ഷാ നമ്പരുകൾ, തുടങ്ങിയവ.''",
        "revdelete-legend": "നാൾപ്പതിപ്പിന്റെ ദർശനീയത സജ്ജീകരിക്കുക",
        "right-deletedtext": "മായ്ക്കപ്പെട്ട എഴുത്തും താളിന്റെ മായ്ക്കപ്പെട്ട പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസവും കാണുക",
        "right-browsearchive": "നീക്കം ചെയ്യപ്പെട്ട താളുകളിൽ തിരയുക",
        "right-undelete": "താൾ പുനഃസ്ഥാപിക്കുക",
-       "right-suppressrevision": "കാര്യനിർവാഹകരിൽ നിന്നും മറയ്ക്കപ്പെട്ട നാൾപ്പതിപ്പുകൾ സംശോധനം ചെയ്യുക, പുനഃസ്ഥാപിക്കുക",
+       "right-suppressrevision": "മറ്റുപയോക്താക്കൾക്കായി താളുകളുടെ നാൾപ്പതിപ്പുകൾ കാണാൻ കഴിയുന്നതാക്കുക, മറയ്ക്കുക, മറയ്ക്കൽ മാാറ്റുക",
+       "right-viewsuppressed": "മറ്റുപയോക്താക്കളിൽ നിന്നും മറയ്ക്കപ്പെട്ട നാൾപ്പതിപ്പുകൾ കാണുക",
        "right-suppressionlog": "പരസ്യമല്ലാത്ത രേഖകൾ കാണുക",
        "right-block": "മറ്റുള്ള ഉപയോക്താക്കളെ മാറ്റിയെഴുതുന്നതിൽനിന്നും തടയുക",
        "right-blockemail": "ഇമെയിൽ അയക്കുന്നതിൽ നിന്നും ഉപയോക്താവിനെ തടയുക",
        "license": "പകർപ്പവകാശ വിവരങ്ങൾ:",
        "license-header": "അനുമതി",
        "nolicense": "ഒന്നും തിരഞ്ഞെടുത്തിട്ടില്ല",
+       "licenses-edit": "ഉപയോഗാനുമതി ഐച്ഛികങ്ങൾ തിരുത്തുക",
        "license-nopreview": "(പ്രിവ്യൂ ലഭ്യമല്ല)",
        "upload_source_url": "(സാധുവായ, ആർക്കും ഉപയോഗിക്കാവുന്ന യൂ.ആർ.എൽ.)",
        "upload_source_file": "(താങ്കളുടെ കമ്പ്യൂട്ടറിലുള്ള ഒരു പ്രമാണം)",
        "wantedpages-badtitle": "ഫലങ്ങളുടെ ഗണത്തിൽ അസാധുവായ തലക്കെട്ട്: $1",
        "wantedfiles": "ആവശ്യമുള്ള പ്രമാണങ്ങൾ",
        "wantedfiletext-cat": "താഴെക്കൊടുത്തിരിക്കുന്ന പ്രമാണങ്ങൾ ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിലും നിലവിലില്ല. ബാഹ്യ റെപ്പോസിറ്ററികളിൽ നിന്നുള്ള പ്രമാണങ്ങൾ നിലവിലുണ്ടെങ്കിലും പട്ടികയിൽ ഉൾപ്പെട്ടിട്ടുണ്ടാവാം. അത്തരത്തിൽ തെറ്റായി ഉൾപ്പെടുത്തിയിരിക്കുന്നവ <del>വെട്ടിക്കളയുക</del>. കൂടുതലായി, നിലവിലില്ലാത്ത പ്രമാണങ്ങൾ ഉൾപ്പെടുത്തിയിട്ടുള്ള താളുകൾ കാണാൻ [[:$1]] സന്ദർശിക്കുക.",
+       "wantedfiletext-cat-noforeign": "താഴെക്കൊടുക്കുന്ന പ്രമാണങ്ങൾ നിലവിലില്ലെങ്കിലും ഉപയോഗിച്ചിട്ടുണ്ട്. കൂടുതലായി നിലവിലില്ലാത്ത എന്നാൽ ഉപയോഗിച്ചിട്ടുള്ള പ്രമാണങ്ങൾ [[:$1]] എന്ന താളിൽ കൊടുത്തിട്ടുണ്ട്.",
        "wantedfiletext-nocat": "താഴെക്കൊടുത്തിരിക്കുന്ന പ്രമാണങ്ങൾ ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിലും നിലവിലില്ല. ബാഹ്യ റെപ്പോസിറ്ററികളിൽ നിന്നുള്ള പ്രമാണങ്ങൾ നിലവിലുണ്ടെങ്കിലും പട്ടികയിൽ ഉൾപ്പെട്ടിട്ടുണ്ടാവാം. അത്തരത്തിൽ തെറ്റായി ഉൾപ്പെടുത്തിയിരിക്കുന്നവ <del>വെട്ടിക്കളയുക</del>.",
+       "wantedfiletext-nocat-noforeign": "താഴെക്കൊടുത്തിരിക്കുന്ന പ്രമാണങ്ങൾ ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിലും നിലവിലില്ലാത്തവയാണ്.",
        "wantedtemplates": "അവശ്യ ഫലകങ്ങൾ",
        "mostlinked": "ഏറ്റവുമധികം കണ്ണികളാൽ ചേർത്തിരിക്കുന്ന താളുകൾ",
        "mostlinkedcategories": "ഏറ്റവുമധികം താളുകൾ ചേർത്തിട്ടുള്ള വർഗ്ഗങ്ങൾ",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|സംവാദം]])",
        "unknown_extension_tag": "അജ്ഞാതമായ അനുബന്ധ റ്റാഗ് \"$1\"",
        "duplicate-defaultsort": "'''മുന്നറിയിപ്പ്:''' ക്രമപ്പെടുത്താനുള്ള ചാവിയായ \"$2\" മുമ്പ് ക്രമപ്പെടുത്താനുള്ള ചാവിയായിരുന്ന \"$1\" എന്നതിനെ അതിലംഘിക്കുന്നു.",
+       "duplicate-displaytitle": "<strong>മുന്നറിയിപ്പ്:</strong> പ്രദർശിപ്പിക്കുന്ന തലക്കെട്ട് \"$2\" മുമ്പ് പ്രദർശിപ്പിച്ചിരുന്ന തലക്കെട്ട് \"$1\" എന്നതിനെ അതിലംഘിക്കുന്നു.",
        "version": "പതിപ്പ്",
        "version-extensions": "ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള അനുബന്ധങ്ങൾ",
        "version-skins": "ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള ദൃശ്യരൂപങ്ങൾ",
index 4953184..0369fc7 100644 (file)
        "talkpagelinktext": "Perbincangan",
        "specialpage": "Laman khas",
        "personaltools": "Alatan peribadi",
-       "postcomment": "Bahagian baru",
        "articlepage": "Lihat laman kandungan",
        "talk": "Perbincangan",
        "views": "Rupa",
        "externaldberror": "Berlaku ralat pangkalan data bagi pengesahan luar atau anda tidak dibenarkan mengemaskinikan akaun luar anda.",
        "login": "Log masuk",
        "nav-login-createaccount": "Log masuk / buka akaun",
-       "loginprompt": "Anda mesti membenarkan kuki untuk log masuk ke dalam {{SITENAME}}.",
        "userlogin": "Log masuk / buka akaun",
        "userloginnocreate": "Log masuk",
        "logout": "Log keluar",
        "powersearch-togglelabel": "Pilih:",
        "powersearch-toggleall": "Semua",
        "powersearch-togglenone": "Tiada",
+       "powersearch-remember": "Ingatkan pilihan untuk carian pada masa depan",
        "search-external": "Carian luar",
        "searchdisabled": "Ciri pencarian dalam {{SITENAME}} dimatikan. Anda boleh mencari melalui Google. Sila ambil perhatian bahawa indeks dalam Google mungkin bukan yang terkini.",
        "search-error": "Berlakunya ralat ketika mencari: $1",
        "license-nopreview": "(Tiada pralihat)",
        "upload_source_url": " (URL yang boleh diakses oleh orang awam)",
        "upload_source_file": " (fail dalam komputer anda)",
+       "listfiles-delete": "hapus",
        "listfiles-summary": "Laman khas ini memaparkan semua fail yang telah dimuat naik.",
        "listfiles_search_for": "Cari nama imej:",
        "imgfile": "fail",
        "movenotallowedfile": "Anda tidak mempunyai keizinan untuk memindahkan fail.",
        "cant-move-user-page": "Anda tidak mempunyai keizinan untuk memindahkan laman pengguna (tidak termasuk sublaman-sublamannya).",
        "cant-move-to-user-page": "Anda tidak mempunyai keizinan untuk memindahkan sesebuah laman ke mana-mana laman pengguna (kecuali sebagai sublamannya sahaja).",
+       "cant-move-category-page": "Anda tidak mempunyai kebenaran untuk memindah laman-laman kategori.",
+       "cant-move-to-category-page": "Anda tidak mempunyai kebenaran untuk memindah sebuah laman ke sebuah laman kategori.",
        "newtitle": "Ke tajuk baru:",
        "move-watch": "Pantau laman ini",
        "movepagebtn": "Pindahkan laman",
        "duplicate-defaultsort": "'''Amaran''': Kunci susunan asali \"$2\" membatalkan kunci susunan asali \"$1\" yang sebelumnya.",
        "version": "Versi",
        "version-extensions": "Penyambung yang dipasang",
+       "version-skins": "Rupa",
        "version-specialpages": "Laman khas",
        "version-parserhooks": "Penyangkuk penghurai",
        "version-variables": "Pemboleh ubah",
        "version-antispam": "Pencegahan spam",
-       "version-skins": "Rupa",
        "version-other": "Lain-lain",
        "version-mediahandlers": "Pengelola media",
        "version-hooks": "Penyangkuk",
index 48493dc..edff6ba 100644 (file)
        "jumptonavigation": "navigazzjoni",
        "jumptosearch": "fittex",
        "view-pool-error": "Jiddispjaċina, imma fil-mument is-servers jinsabu mgħobbija ż-żejjed.\nĦafna utenti qegħdin jippruvaw jaraw din il-paġna.\nJekk jogħġbok stenna ftit qabel ma terġa' tipprova tuża' din il-paġna.\n\n$1",
+       "generic-pool-error": "Jiddispjaċina, imma bħalissa is-servers jinsabu mgħobbija ż-żejjed.\nĦafna utenti qegħdin jippruvaw jaraw din ir-riżorsa.\nJekk jogħġbok stenna ftit qabel ma terġa' tipprova ttella' din ir-riżorsa.",
+       "pool-timeout": "Il-ħin tal-iskadenza qiegħed jistenna l-iżblokk.",
        "pool-queuefull": "Il-kju tal-''pool'' hi mimlija",
        "pool-errorunknown": "Problema mhux magħrufa",
+       "pool-servererror": "Is-servizz kontra l-pool mhux disponibbli ($1).",
        "aboutsite": "Dwar {{SITENAME}}",
        "aboutpage": "Project:Dwar",
-       "copyright": "Kontenut aċċessibli taħt $1.",
+       "copyright": "Il-kontenut huwa disponibbli taħt il-liċenzja $1 sakemm mhux indikat mod ieħor.",
        "copyrightpage": "{{ns:project}}:Copyright",
        "currentevents": "Ġrajjiet kurrenti",
        "currentevents-url": "Project:Ġrajjiet kurrenti",
        "ok": "OK",
        "retrievedfrom": "Miġjub minn \"$1\"",
        "youhavenewmessages": "Għandek $1 ($2).",
+       "youhavenewmessagesfromusers": "Għandek $1 minn {{PLURAL:$3|utent ieħor|$3utenti oħra}} ($2).",
        "youhavenewmessagesmanyusers": "Għandek $1 mingħand ħafna utenti ($2).",
-       "newmessageslinkplural": "{{PLURAL:$1|messaġġ ġdid|messaġġi ġodda}}",
-       "newmessagesdifflinkplural": "l-aħħar {{PLURAL:$1|bidla|bidliet}}",
+       "newmessageslinkplural": "{{PLURAL:$1|messaġġ ġdid|999=messaġġi ġodda}}",
+       "newmessagesdifflinkplural": "l-aħħar {{PLURAL:$1|bidla|999=bidliet}}",
        "youhavenewmessagesmulti": "Għandek messaġġi ġodda fuq $1",
        "editsection": "editja",
        "editold": "editja",
        "nospecialpagetext": "<strong>Inti għamilt rikjesta għal paġna speċjali invalida.</strong>\n\nLista ta' paġni speċjali validi tinsab hawn [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Problema",
        "databaseerror": "Problema fid-database",
+       "databaseerror-text": "Sar żball f'kunsltazzjoni tal-bażi tad-dejta. Dan jista' jindika difett fis-softwer.",
+       "databaseerror-textcl": "Sar żball f'kunsultazzjoni tal-bażi tad-dejta.",
+       "databaseerror-query": "Kunsultazzjoni $1",
+       "databaseerror-function": "Funzjoni:$1",
+       "databaseerror-error": "Żball:$1",
        "laggedslavemode": "Twissija: Il-Paġna jista' ma jkollhiex l-affarijiet aġġornati.",
        "readonly": "Database magħluq",
        "enterlockreason": "Daħħal raġuni għala qiegħed tagħlqu, inkludi l-istima ta' meta l-għeluq se tieħu effett",
        "badarticleerror": "Din l-azzjoni ma setgħetx isseħħ fuq din il-paġna.",
        "cannotdelete": "Il-paġna jew il-fajl \"$1\" ma jistax jiġi mħassar.\nJista' jkun li diġà ġie mħassar minn xi ħaddieħor.",
        "cannotdelete-title": "Il-paġna \"$1\" ma setgħetx titħassar",
+       "delete-hook-aborted": "Il-modifika ġiet abbandunata mill-''hook''.\nMa ngħatat l-ebda spjegazzjoni.",
+       "no-null-revision": "Ma setghitx tinħoloq reviżjoni nulla ġdida għall-paġna \"$1\"",
        "badtitle": "Titlu ħażin",
        "badtitletext": "It-titlu tal-paġna rikjesta huwa invalidu, vojt, jew ġej minn żball fil-ħolqa bejn siti wiki differenti jew verżjonijiet ta' lingwi differenti tal-istess sit. Jista' wkoll ikollu wieħed jew aktar karattri li ma jistgħux jintużaw għat-titli.",
        "perfcached": "L-informazzjoni li jmiss huwa kopja ''cache'' u jista' ma jkunx aġġornat. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
        "login-abort-generic": "Il-login ma kienx suċċess - Imħassar",
        "loginlanguagelabel": "Lingwa: $1",
        "suspicious-userlogout": "Ir-rikjesta tiegħek li toħroġ barra mill-kont tiegħek ġiet miċħuda minħabba li jidher li din intbagħtet minn browser li ma jaħdimx jew minn proxy ta' caching.",
+       "pt-login": "Idħol",
+       "pt-login-button": "Idħol",
+       "pt-createaccount": "Oħloq kont",
+       "pt-userlogout": "Oħroġ",
        "php-mail-error-unknown": "Żball mhux magħruf fil-funzjoni mail() tal-PHP.",
        "user-mail-no-addy": "Pruvajt tibgħat posta elettronika mingħajr indirizz.",
+       "user-mail-no-body": "Ippruvajt tibgħat ittra elettronika b'kontenut vojt jew qasir wisq.",
        "changepassword": "Ibdel il-password",
-       "resetpass_announce": "L-aċċess ġe effetwat permezz ta' kodiċi temporanju, li ntbagħat permezz tal-posta elettronika.\nBiex tkompli l-aċċess tal-kont tiegħek huwa neċessarju li toħloq password ġdida hawnhekk:",
+       "resetpass_announce": "Biex ittemm id-dħul fil-kont tiegħek, jeħtieġ li tissettja password ġdida.",
        "resetpass_text": "<!-- Żied il-kliem hawnhekk -->",
        "resetpass_header": "Biddel il-password tal-kont",
        "oldpassword": "Password antika:",
        "newpassword": "Password ġdida:",
        "retypenew": "Erġa' ikteb il-password il-ġdida:",
        "resetpass_submit": "Issettja l-password u idħol fis-sit",
-       "changepassword-success": "Il-password ġie modifikat. Aċċess fil-proċess...",
+       "changepassword-success": "Il-password inbidlet korrettament!",
+       "changepassword-throttled": "Ippruvajt tidħol wisq drabi.\nJekk jogħġbok stenna $1 qabel ma terġa' tipprova.",
        "resetpass_forbidden": "Mhuwiex possibbli li timmodifika l-passwords",
        "resetpass-no-info": "Trid tkun effetwajt il-login qabel ma taċċessa direttament din il-paġna.",
        "resetpass-submit-loggedin": "Biddel il-password",
        "resetpass-submit-cancel": "Annulla",
        "resetpass-wrong-oldpass": "Password temporanja jew kurrenti invalida.\nJista' jkun li int diġà biddilt il-password, jew għamilt rikjesta għal password temporanja ġdida.",
+       "resetpass-recycled": "Jekk jogħġbok erġa' ssettja l-password għal xi ħaġa oħra li mhijiex il-password li għandek bħalissa.",
+       "resetpass-temp-emailed": "Dħalt b'kodiċi temporanju mibgħut elettronikament.\nBiex ittem id-dħul, jeħtieġ li tissettja password ġdida hawn:",
        "resetpass-temp-password": "Password temporanja:",
+       "resetpass-abort-generic": "Estensjoni ħassret il-bidla tal-password",
+       "resetpass-expired": "Il-password skadiet. Jekk jogħġbok issettja password ġdida biex tidħol.",
+       "resetpass-expired-soft": "Il-password skadiet u jeħtieġ li terġa' tissettjaha. Agħżel password ġdida issa, jew ikklikkja \"{{int:resetpass-tissottometti-tikkanċella}}\" biex tissettjaha aktar tard.",
+       "resetpass-validity-soft": "Il-password tiegħek mhijiex valida $1 \n\nAgħżel password ġdida issa, jew ikklikkja \"{{int:resetpass-submit-cancel}}\" biex tibdilha dan aktar.",
        "passwordreset": "Irrisettja l-password",
        "passwordreset-text-one": "Imla din il-formola sabiex tirrisettja l-password.",
+       "passwordreset-text-many": "{{PLURAL:$1|Imla wieħed mill-oqsma biex tirċievi password temporanja permezz ta' ittra elettronika.}}",
        "passwordreset-legend": "Irrisettja l-password",
        "passwordreset-disabled": "L-irrisettjar tal-password fuq din il-wiki ġie diżattivat.",
+       "passwordreset-emaildisabled": "Karatteristiċi tal-posta elettronika ġew diżattivati fuq din il-wiki.",
        "passwordreset-username": "Isem l-utent:",
        "passwordreset-domain": "Dominju:",
        "passwordreset-capture": "Ara l-kontenut tal-messaġġ?",
        "passwordreset-email": "Indirizz elettroniku:",
        "passwordreset-emailtitle": "Dettalji tal-kont fuq {{SITENAME}}",
        "passwordreset-emailtext-ip": "Xi ħadd (probabbilment int, mill-indirizz IP $1) għamel rikjesta sabiex jingħata password ġdida sabiex jaċċessa l-{{SITENAME}} ($4). L-{{PLURAL:$3|utent assoċjat|utenti assoċjati}} ma' dan l-indirizz elettroniku {{PLURAL:$3|huwa|huma}}:\n\n$2\n\n{{PLURAL:$3|Din il-password temporanja se tiskadi|Dawn il-passwords temporanji se jiskadu}} fi żmien {{PLURAL:$5|ġurnata|$5 jum}}. Inti għadek tidħol fil-kont tiegħek u tagħżel password ġdida issa. Jekk xi ħadd ieħor għamel din ir-rikjesta, jew jekk ftakart il-password oriġinali, u m'għadekx trid tbiddilha, inti tista' tinjora dan il-messaġġ u tibqa' tuża' l-password il-qadima.",
-       "passwordreset-emailtext-user": "L-utent $1 fuq {{SITENAME}} għamel rikjesta sabiex jingħata password ġdida sabiex jaċċessa l-{{SITENAME}} ($4). {{PLURAL:$3|L-utent assoċjat|L-utenti assoċjati}} ma' dan l-indirizz elettroniku huma:\n\n$2\n\n{{PLURAL:$3|Din il-password temporanja se tiskadi|Dawn il-passwords temporanji se jiskadu}} fi żmien {{PLURAL:$5|ġurnata|$5 jum}}. Inti għadek tidħol fil-kont tiegħek u tagħżel password ġdida issa. Jekk xi ħadd ieħor għamel din ir-rikjesta, jew jekk ftakart il-password oriġinali, u m'għadikx trid tbiddilha, inti tista' tinjora dan il-messaġġ u tibqa' tuża' l-password il-qadima.",
+       "passwordreset-emailtext-user": "{{PLURAL:$3|Din il-password temporanja se tiskadi|Dawn il-passwords temporanji se jiskadu}} fi żmien {{PLURAL:$5|ġurnata|$5 jum}}. Inti għadek tidħol fil-kont tiegħek u tagħżel password ġdida issa. Jekk xi ħadd ieħor għamel din ir-rikjesta, jew jekk ftakart il-password oriġinali, u m'għadikx trid tbiddilha, inti tista' tinjora dan il-messaġġ u tibqa' tuża' l-password il-qadima.",
        "passwordreset-emailelement": "Isem tal-utent: $1\nPassword temporanja: $2",
-       "passwordreset-emailsent": "Intbagħtet ittra-e bħala tfakkira.",
-       "passwordreset-emailsent-capture": "Intbagħtet ittra-e bħala tfakkira, bil-kontenut jidher hawn taħt.",
+       "passwordreset-emailsent": "Intbagħtet ittra-e għall-issettjar mill-ġdid tal-password.",
+       "passwordreset-emailsent-capture": "Intbagħtet ittra-e għall-ssettjar mill-ġdid tal-password u l-kontenut jidher hawn taħt.",
        "passwordreset-emailerror-capture": "Ġiet ġenerata ittra-e ta' tfakkira, li l-kontenut tagħha jidher hawn taħt. Madanakollu, il-posta ma ntbagħtitx lill-utent: $1",
        "changeemail": "Biddel l-indirizz elettroniku",
        "changeemail-header": "Biddel l-indirizz elettroniku tal-kont",
        "changeemail-oldemail": "Indirizz elettroniku attwali:",
        "changeemail-newemail": "Indirizz elettroniku ġdid:",
        "changeemail-none": "(xejn)",
+       "changeemail-password": "Il-password tiegħek fuq {{SITENAME}}:",
        "changeemail-submit": "Biddel l-indirizz elettroniku",
        "changeemail-cancel": "Annulla",
+       "changeemail-throttled": "Ippruvajt tidħol wisq drabi.\nJekk jogħġbok stenna $1 qabel ma terġa' tipprova.",
+       "resettokens": "Irrisettja t-tokens",
        "bold_sample": "Tipa ħoxna",
        "bold_tip": "Tipa ħoxna",
        "italic_sample": "Tipa korsiva",
        "action-writeapi": "tuża' l-API fil-ktiba",
        "action-delete": "ħassar din il-paġna",
        "action-deleterevision": "ħassar din ir-reviżjoni",
-       "action-deletedhistory": "ara l-kronoloġija mħassar ta' din il-paġna",
+       "action-deletedhistory": "ara l-kronoloġija mħassra ta' din il-paġna",
        "action-browsearchive": "fittex paġni mħassra",
        "action-undelete": "irkupra din il-paġna",
        "action-suppressrevision": "tirrevedi u treġġa' din ir-reviżjoni moħbija",
        "filehist-comment": "Kumment",
        "imagelinks": "Użu tal-fajl",
        "linkstoimage": "{{PLURAL:$1|Il-Paġna segwenti għandha|Il-$1 paġni segwenti għandhom}} links għal-fajl:",
-       "linkstoimage-more": "Iktar minn {{PLURAL:$1|paġna torbot|$1paġni jorbtu}} lejn dan il-fajl.\nIl-lista segwenti turi {{PLURAL:$1|l-ewwel paġna li tipponta|l-ewwel $1 paġni li jippuntaw}} lejn dan il-fajl.\n[[Special:WhatLinksHere/$2|Lista sħiħa]] hija disponibbli.",
+       "linkstoimage-more": "Aktar minn {{PLURAL:$1|paġna torbot|$1paġni jorbtu}} lejn dan il-fajl.\nIl-lista segwenti turi {{PLURAL:$1|l-ewwel paġna li tipponta|l-ewwel $1 paġni li jippuntaw}} lejn dan il-fajl.\n[[Special:WhatLinksHere/$2|Lista sħiħa]] hija disponibbli.",
        "nolinkstoimage": "M'hemmx paġni li huma relatati ma' dan il-fajl.",
        "morelinkstoimage": "Uri [[Special:WhatLinksHere/$1|aktar links]] għal dan il-fajl.",
        "linkstoimage-redirect": "$1 (rindirizz tal-fajl) $2",
index ed2cb7a..e2999cb 100644 (file)
        "talkpagelinktext": "گپ",
        "specialpage": "شا صفحه",
        "personaltools": "مه‌شه ابزار",
-       "postcomment": "نو تیکه",
        "articlepage": "نمایش صفحه",
        "talk": "گپ",
        "views": "هارشی‌ئون",
        "editlink": "دچی‌ین",
        "viewsourcelink": "منبع بدی‌ین",
        "editsectionhint": "تیکه: $1 ره دچی‌ین",
-       "toc": "دله",
+       "toc": "فهرست",
        "showtoc": "سِراق هاده",
        "hidetoc": "فرو بور",
        "collapsible-collapse": "دوستن",
        "yourdomainname": "شمه کاروری نوم",
        "login": "دله بوردن",
        "nav-login-createaccount": "دله بوردن / عضو بیّن",
-       "loginprompt": "{{SITENAME}} ره ده‌لـه بیـه‌موئـه‌ن وه‌سه، وه‌نـه cookieئون  کـارسأر بـوئـه‌ن.",
        "userlogin": "دله بموئن / عضو بیّن",
        "userloginnocreate": "دله بموئن",
        "logout": "دربوردن",
index 76f2580..e6ad0f0 100644 (file)
        "mailnologin": "Ingen avsenderadresse",
        "mailnologintext": "Du må være [[Special:UserLogin|logget inn]] og ha en gyldig e-postadresse satt i [[Special:Preferences|brukerinnstillingene]] for å sende e-post til andre brukere.",
        "emailuser": "E-post til denne brukeren",
-       "emailuser-title-target": "Send epost til denne {{GENDER:$1|brukeren}}",
+       "emailuser-title-target": "Send e-post til denne {{GENDER:$1|brukeren}}",
        "emailuser-title-notarget": "E-post til bruker",
        "emailpage": "E-post til bruker",
        "emailpagetext": "Du kan bruke skjemaet under for å sende en e-post til denne {{GENDER:$1|brukeren}}.\nE-postadressen du har satt i [[Special:Preferences|innstillingene dine]] vil vises i «Fra»-feltet i e-posten, slik at mottakeren kan svare deg direkte.",
index 780e8dc..2b794c1 100644 (file)
        "revdelete-text-text": "Verwijderde versies zijn nog zichtbaar in de geschiedenis, maar delen van de inhoud zijn niet openbaar.",
        "revdelete-text-file": "Verwijderde versies zijn nog zichtbaar in de bestandsgeschiedenis, maar delen van de inhoud zijn niet openbaar.",
        "logdelete-text": "Verwijderde logboekregels zijn nog zichtbaar in de logboeken, maar delen van de inhoud zijn niet openbaar.",
-       "revdelete-text-others": "Andere beheerders van {{SITENAME}} kunnen de verborgen inhoud nog steeds inzien en weer zichtbaar maken via deze interface, tenzij er aanvullende beperkingen zijn ingesteld.",
+       "revdelete-text-others": "Andere beheerders kunnen de verborgen inhoud nog steeds inzien en weer zichtbaar maken, tenzij er aanvullende beperkingen zijn ingesteld.",
        "revdelete-confirm": "Bevestig dat u dit wilde doen, dat u de consequenties begrijpt en dat u dit doet in overeenstemming met het geldende [[{{MediaWiki:Policy-url}}|beleid]].",
        "revdelete-suppress-text": "Gebruik versies verbergen '''alleen''' in de volgende gevallen:\n* Mogelijk smadelijke informatie;\n* Ongepaste persoonlijke gegevens, zoals:\n*: ''adres, telefoonnummers, identificatienummer, enzovoort.''",
        "revdelete-legend": "Zichtbaarheidsbeperkingen instellen",
        "right-deletedtext": "Verwijderde tekst en wijzigingen tussen verwijderde versies bekijken",
        "right-browsearchive": "Verwijderde pagina's zoeken",
        "right-undelete": "Verwijderde pagina's terugplaatsen",
-       "right-suppressrevision": "Verborgen versies bekijken en terugplaatsen",
+       "right-suppressrevision": "Specifieke versies bekijken, verbergen en weer zichtbaar maken op pagina's van elke gebruiker",
+       "right-viewsuppressed": "Bekijk versies verborgen door elke gebruiker",
        "right-suppressionlog": "Niet-openbare logboeken bekijken",
        "right-block": "Andere gebruikers de mogelijkheid ontnemen te bewerken",
        "right-blockemail": "Een gebruiker het recht ontnemen om e-mail te versturen",
        "license": "Licentie:",
        "license-header": "Licentie",
        "nolicense": "Maak een keuze",
+       "licenses-edit": "Licentieopties bewerken",
        "license-nopreview": "(Voorvertoning niet beschikbaar)",
        "upload_source_url": " (een geldige, publiek toegankelijke URL)",
        "upload_source_file": " (een bestand op uw computer)",
        "wantedfiles": "Niet-bestaande bestanden met koppelingen",
        "wantedfiletext-cat": "De volgende bestanden worden gebruikt maar bestaan niet. Bestanden van externe repositories kunnen zijn opgenomen in de lijst, ondanks dat ze bestaan. Dergelijke vals positieven worden <del>doorgehaald weergegeven</del>. Pagina's die niet-bestaande bestanden insluiten staan op de pagina [[:$1]].",
        "wantedfiletext-nocat": "De volgende bestanden worden gebruikt maar bestaan niet. Bestanden van externe repositories kunnen zijn opgenomen in de lijst, ondanks dat ze bestaan. Dergelijke vals positieven worden <del>doorgehaald weergegeven</del>.",
+       "wantedfiletext-nocat-noforeign": "De volgende bestanden zijn in gebruik maar bestaan niet.",
        "wantedtemplates": "Niet-bestaande sjablonen met koppelingen",
        "mostlinked": "Pagina's waar het meest naar verwezen wordt",
        "mostlinkedcategories": "Categorieën waar het meest naar verwezen wordt",
        "version-hook-name": "Hooknaam",
        "version-hook-subscribedby": "Geabonneerd door",
        "version-version": "($1)",
+       "version-no-ext-name": "[geen naam]",
        "version-license": "Licentie voor MediaWiki",
        "version-ext-license": "Licentie",
        "version-ext-colheader-name": "Uitbreiding",
index a75d85e..3803f4a 100644 (file)
        "go": "Przejdź",
        "searcharticle": "Przejdź",
        "history": "Historia strony",
-       "history_short": "Historia",
+       "history_short": "historia",
        "updatedmarker": "zmienione od ostatniej wizyty",
        "printableversion": "Wersja do druku",
        "permalink": "Link do tej wersji",
        "revdelete-text-text": "Usunięte wersje będą nadal widoczne w historii strony, ale niektóre fragmenty ich treści nie będą dostępne dla wszystkich.",
        "revdelete-text-file": "Usunięte wersje pliku będą nadal widoczne w historii pliku, ale niektóre fragmenty ich treści nie będą dostępne dla wszystkich.",
        "logdelete-text": "Usunięte wpisy rejestru nadal będą widoczne w rejestrze, ale niektóre fragmenty ich treści nie będą dostępne dla wszystkich.",
-       "revdelete-text-others": "Pozostali administratorzy {{grammar:genitive|{{SITENAME}}}} nadal będą posiadali dostęp do ukrytej treści i będą w stanie odtworzyć ją ponownie za pomocą tego samego interfejsu, jeśli nie zostaną ustawione dodatkowe ograniczenia.",
+       "revdelete-text-others": "Pozostali administratorzy nadal będą posiadali dostęp do ukrytej treści i będą w stanie odtworzyć ją ponownie za pomocą tego samego interfejsu, jeśli nie zostaną ustawione dodatkowe ograniczenia.",
        "revdelete-confirm": "Potwierdź, że chcesz to zrobić zgodnie z [[{{MediaWiki:Policy-url}}|zasadami]] i że rozumiesz konsekwencje.",
        "revdelete-suppress-text": "Ukrywanie powinno być używane '''wyłącznie''' w sytuacji:\n* Informacji, która może być zniesławieniem\n* Ujawnienie danych osobowych\n*: ''adres domowy, numer telefonu, numer PESEL itp''",
        "revdelete-legend": "Ustaw ograniczenia widoczności",
        "license": "Licencja",
        "license-header": "Licencja",
        "nolicense": "Nie wybrano",
+       "licenses-edit": "Edytuj opcje licencji",
        "license-nopreview": "(Podgląd niedostępny)",
        "upload_source_url": " (poprawny, publicznie dostępny adres URL)",
        "upload_source_file": " (plik na twoim komputerze)",
        "pageinfo-not-current": "Niestety, te informacje nie są dostępne dla starych wersji stron.",
        "pageinfo-header-basic": "Podstawowe informacje",
        "pageinfo-header-edits": "Historia edycji",
-       "pageinfo-header-restrictions": "Zabezpieczenie strony",
+       "pageinfo-header-restrictions": "Zabezpieczenie",
        "pageinfo-header-properties": "Właściwości strony",
        "pageinfo-display-title": "Wyświetlany tytuł",
        "pageinfo-default-sort": "Domyślny klucz sortowania",
index 38a7b14..c20deed 100644 (file)
        "talkpagelinktext": "discussion",
        "specialpage": "Pàgina special",
        "personaltools": "Utiss përsonaj",
-       "postcomment": "Session neuva",
        "articlepage": "Vëdde la pàgina ëd contnù",
        "talk": "Discussion",
        "views": "Vìsite",
        "jumptonavigation": "navigassion",
        "jumptosearch": "arserché",
        "view-pool-error": "An dëspias, ij servent a son motobin carià al moment.\nTròpi utent a son an camin ch'a preuvo a lese sta pàgina-sì.\nPër piasì, ch'a speta un pòch prima ëd prové torna a lese costa pàgina.\n\n$1",
+       "generic-pool-error": "An dëspias, ij servent a son motobin carià al moment.\nTròpi utent a son an camin ch'a preuvo a lese costa arsorsa.\nPër piasì, ch'a speta un pò prima ëd prové torna a acede a costa arsorsa.",
        "pool-timeout": "Ël temp a l'é finì antramentre ch'a së spetava la saradura",
        "pool-queuefull": "La coa ëd travaj a l'é pien-a",
        "pool-errorunknown": "Eror pa conossù",
        "externaldberror": "Ò che a l'é rivaje n'eror con la base ëd dàit d'autenticassion esterna, ò pura a l'é chiel che a l'é nen autorisà a agiornesse sò cont estern.",
        "login": "Conession",
        "nav-login-createaccount": "Creé un cont o rintré ant ël sistema",
-       "loginprompt": "Che a varda mach che a venta avèj ij bëscotin abilità për podèj rintré an {{SITENAME}}.",
        "userlogin": "Creé un cont o rintré ant ël sistema",
        "userloginnocreate": "Conession",
        "logout": "Seurte da 'nt ël sistema",
        "edit-gone-missing": "As peul nen agiornesse la pàgina.\nA smija che a sia stàita scancelà.",
        "edit-conflict": "Conflit ëd modìfiche.",
        "edit-no-change": "Soa modìfica a l'é stàita ignorà, përchè gnun cambiament a l'é stàit fàit al test.",
+       "postedit-confirmation-created": "La pàgina a l'é stàita creà.",
+       "postedit-confirmation-restored": "La pàgina a l'é stàita ripristinà.",
        "postedit-confirmation-saved": "Soa modìfica a l'é stàita salvà.",
        "edit-already-exists": "La neuva pàgina a l'ha nen podù creesse.\nA esist già.",
        "defaultmessagetext": "Test che a-i sarìa se a-i fusso pa 'd modìfiche",
        "parser-template-recursion-depth-warning": "Passà ël lìmit ëd ricorsion dlë stamp ($1)",
        "language-converter-depth-warning": "Lìmit ëd profondità dël convertidor ëd lenga sorpassà ($1)",
        "node-count-exceeded-category": "Pàgine anté che ël nùmer ëd neu a l'é sorpassà",
+       "node-count-exceeded-category-desc": "Na categorìa për le pàgine andoa ël nùmer dij neud a l'é tròp grand.",
        "node-count-exceeded-warning": "La pàgina a l'ha sorpassà ël nùmer ëd neu",
        "expansion-depth-exceeded-category": "Pàgine anté che la profondeur d'espansion a l'é sorpassà",
+       "expansion-depth-exceeded-category-desc": "Costa-sì a l'é na categorìa për le pàgine andoa la profondità d'espansion a l'é tròpa.",
        "expansion-depth-exceeded-warning": "La pàgina a l'ha sorpassà la profondità d'espansion",
        "parser-unstrip-loop-warning": "Trovà un sicl nen dësmontàbil",
        "parser-unstrip-recursion-limit": "Sorpassà ël lìmit d'arcorensa nen dësmontàbil: $1",
        "currentrev": "Version dël dì d'ancheuj",
        "currentrev-asof": "Version corenta dij $1",
        "revisionasof": "Revision $1",
-       "revision-info": "Revision al $1; $2",
+       "revision-info": "Revision al $1 ëd {{GENDER:$6|$2}}$7",
        "previousrevision": "←Version pì veja",
        "nextrevision": "Revision pì neuva →",
        "currentrevisionlink": "Vardé la version corenta",
        "revdelete-text-text": "Le revision ëscancelà a compariran ancora ant la stòria dla pàgina, ma na part ëd sò contnù a sarà inacessìbil al pùblich.",
        "revdelete-text-file": "Le version d'archivi scancelà a compariran ancora ant la stòria dj'archivi, ma na part ëd sò contnù a sarà inacessìbil al pùblich.",
        "logdelete-text": "J'eveniment dl'argistr ëscancelà a compariran ancora ant j'argistr, ma na part ëd sò contnù a sarà inacessìbil al pùblich.",
-       "revdelete-text-others": "J'àutri aministrator ëd {{SITENAME}} a podran sempe acede al contù stërmà e a peulo ripristinelo torna con costa antërfassa, gavà ch'a sio definìe ëd restrission adissionaj.",
+       "revdelete-text-others": "J'àutri aministrator ëd a podran sempe acede al contù stërmà e a peulo ripristinelo torna, gavà ch'a sio definìe ëd restrission adissionaj.",
        "revdelete-confirm": "Për piasì, ch'a confema ch'a veul fé sòn, ch'as rend cont dle conseguense, e ch'a lo fa an acòrd con [[{{MediaWiki:Policy-url}}|le régole]].",
        "revdelete-suppress-text": "La scancelassion a dovrìa '''mach''' esse dovrà an costi cas:\n* Anformassion ch'a podrìo esse difamatòrie\n* Anformassion përsonaj inapropià\n*: ''adrësse ëd ca e nùmer ëd teléfon, còdes fiscaj, e via fòrt''",
        "revdelete-legend": "But-je coste limitassion-sì a le version scancelà:",
        "mergehistory-empty": "Pa gnun-a revision ch'as peula butesse ansema.",
        "mergehistory-success": "$3 {{PLURAL:$3|revision|revision}} ëd [[:$1]] a son ëstàite butà ansema a [[:$2]] sensa problema.",
        "mergehistory-fail": "A l'é nen riessusse a buté ansema le revision, për piasì, ch'as contròla la pàgina e ij temp.",
+       "mergehistory-fail-toobig": "Impossìbil fé la fusion ëd la stòria përchè un nùmer ëd {{PLURAL:$1|revision}} pi grand che $1 a sarìa spostà.",
        "mergehistory-no-source": "La pàgina sorgiss $1 a-i é pa.",
        "mergehistory-no-destination": "La pàgina ëd destinassion $1 a-i é pa.",
        "mergehistory-invalid-source": "La pàgina sorgiss a l'ha d'avèj un tìtol bon.",
index 1b41713..3d0f725 100644 (file)
        "listgrouprights-namespaceprotection-header": "Restrições de namespace",
        "listgrouprights-namespaceprotection-namespace": "Namespace",
        "listgrouprights-namespaceprotection-restrictedto": "Direito(s) permitindo edições do usuário",
-       "trackingcategories": "Monitorando categorias",
+       "trackingcategories": "Categorias de rastreamento",
        "trackingcategories-summary": "Esta página lista categorias de monitoramento que são preenchidas automaticamente pelo software MediaWiki. Seus nomes podem ser alterados através da alteração das mensagens de sistema relevantes no namespace {{ns: 8}}.",
        "trackingcategories-msg": "Categoria de monitoramento",
        "trackingcategories-desc": "Critérios de inclusão de categoria",
index d045576..21846c9 100644 (file)
        "revdelete-text-text": "Revisões eliminadas ainda aparecerão no histórico da página, mas parte do seu conteúdo estará inacessível para o público.",
        "revdelete-text-file": "Versões eliminadas do ficheiro ainda aparecerão no histórico da página, mas parte do seu conteúdo estará inacessível para o público.",
        "logdelete-text": "Os eventos eliminados ainda aparecerão no histórico da página, mas pare de seu conteúdo será inacessível ao público.",
-       "revdelete-text-others": "Outros administradores em {{SITENAME}} podem aceder ao conteúdo oculto e torná-lo visível novamente através desta mesma interface, a menos que sejam definidas restrições adicionais.",
+       "revdelete-text-others": "Outros administradores serão ainda capazes de aceder ao conteúdo oculto e torná-lo visível novamente, a menos que sejam definidas restrições adicionais.",
        "revdelete-confirm": "Por favor, confirme que pretende executar esta operação, que compreende as suas consequências e que o faz em concordância com as [[{{MediaWiki:Policy-url}}|políticas e recomendações]].",
        "revdelete-suppress-text": "A supressão '''só''' deverá ser usada nos seguintes casos:\n* Informação potencialmente caluniosa, difamatória ou injuriosa\n* Informação pessoal imprópria\n*: ''endereços de domicílio e números de telefone, números de identificação nacional, etc''",
        "revdelete-legend": "Definir restrições de visibilidade",
        "right-deletedtext": "Ver texto eliminado e mudanças entre revisões eliminadas",
        "right-browsearchive": "Pesquisar páginas eliminadas",
        "right-undelete": "Restaurar uma página",
-       "right-suppressrevision": "Rever e restaurar revisões ocultas dos administradores",
+       "right-suppressrevision": "Ver, ocultar e restaurar revisões de páginas específicas para qualquer utilizador",
+       "right-viewsuppressed": "Ver revisões ocultas para qualquer utilizador",
        "right-suppressionlog": "Ver registos privados",
        "right-block": "Impedir outros utilizadores de editarem",
        "right-blockemail": "Impedir um utilizador de enviar correio eletrónico",
        "delete-edit-reasonlist": "Editar motivos de eliminação",
        "delete-toobig": "Esta página tem um histórico longo, com mais de $1 {{PLURAL:$1|edição|edições}}.\nA eliminação de páginas como esta foi restringida na {{SITENAME}}, para evitar problemas acidentais.",
        "delete-warning-toobig": "Esta página tem um histórico de edições longo, com mais de $1 {{PLURAL:$1|edição|edições}}.\nEliminá-la poderá causar problemas na base de dados da {{SITENAME}};\nprossiga com precaução.",
-       "deleting-backlinks-warning": "'''Aviso:'''  [[Special:WhatLinksHere/{{FULLPAGENAME}}|páginas]] que contêm ligações para a página que está prestes a eliminar ou que a transcluem.",
+       "deleting-backlinks-warning": "'''Aviso:''' Existem [[Special:WhatLinksHere/{{FULLPAGENAME}}|páginas]] que contêm ligações para a página que está prestes a eliminar ou que a transcluem.",
        "rollback": "Reverter edições",
        "rollback_short": "Reverter",
        "rollbacklink": "reverter",
index 62837d2..ad5b288 100644 (file)
        "right-deletedtext": "{{doc-right|deletedtext}}",
        "right-browsearchive": "{{doc-right|browsearchive}}",
        "right-undelete": "{{doc-right|undelete}}",
-       "right-suppressrevision": "{{doc-right|suppressrevision}}\nThis user right is part of the [[mw:RevisionDelete|RevisionDelete]] feature.\nIt can be given to the group {{msg-mw|group-suppress}}, although that group is disabled by default.\n\nSee also:\n* {{msg-mw|right-suppressionlog}}\n* {{msg-mw|right-hideuser}}\n* {{msg-mw|right-deletelogentry}}\n* {{msg-mw|right-deleterevision}}",
+       "right-suppressrevision": "{{doc-right|suppressrevision}}\nThis user right is part of the [[mw:RevisionDelete|RevisionDelete]] feature.\nIt can be given to the group {{msg-mw|group-suppress}}, although that group is disabled by default.\n\nSee also:\n* {{msg-mw|right-suppressionlog}}\n* {{msg-mw|right-viewsuppressed}}\n* {{msg-mw|right-hideuser}}\n* {{msg-mw|right-deletelogentry}}\n* {{msg-mw|right-deleterevision}}",
+       "right-viewsuppressed": "{{doc-right|viewsuppressed}}\nThis user right is part of the [[mw:RevisionDelete|RevisionDelete]] feature.\nIt can be given to any group for observation of suppression activities.\n\nSee also:\n* {{msg-mw|right-suppressrevision}}",
        "right-suppressionlog": "{{doc-right|suppressionlog}}\nThis user right is part of the [[mw:RevisionDelete|RevisionDelete]] feature.\nIt can be given to the group {{msg-mw|group-suppress}}, although that group is disabled by default.\n\nSee also\n* {{msg-mw|right-suppressrevision}}\n* {{msg-mw|right-hideuser}}\n* {{msg-mw|right-deletelogentry}}\n* {{msg-mw|right-deleterevision}}",
        "right-block": "{{doc-right|block}}",
        "right-blockemail": "{{doc-right|blockemail}}",
index b82a39d..e219034 100644 (file)
        "talkpagelinktext": "rimanakuy",
        "specialpage": "Sapaq p'anqa",
        "personaltools": "Kikin ruraqpa llamk'anankuna",
-       "postcomment": "Musuq raki",
        "articlepage": "Qillqata qhaway",
        "talk": "Rimachina",
        "views": "Rikunakuna",
        "externaldberror": "Hawa yaykuna pantasqam karqan, ichataq manam saqillasunkichu hawa rakiqunaykita musuqchayta.",
        "login": "Yaykuy",
        "nav-login-createaccount": "Yaykuy / rakiqunata kamariy",
-       "loginprompt": "{{SITENAME}}man yaykunaykipaqqa wamp'unaykipi <i>cookies</i> nisqakunaman ari ninaykim tiyan.",
        "userlogin": "Yaykuy / rakiqunata kamariy",
        "userloginnocreate": "Yaykuy",
        "logout": "Lluqsiy",
        "largefileserver": "Kay willañiqiqa sirwiqpi allinkachisqakama saqillasqa chhikanmanta aswan hatunmi.",
        "emptyfile": "Churkusqayki willañiqiqa ch'usaqmi rikch'akun. Pantasqa sutinchá. Ama hina kaspa, llanchiy, churkuyman munasqayki willañiqichu.",
        "windows-nonascii-filename": "Kay wikiqa sapaq sananchayuq willañiqi sutikunata manam q'iminchu.",
-       "fileexists": "Kachkanñam kay sutiyuq willañiqi.\nAma hina kaspa, <strong>[[:$1]]</strong> nisqata llanchiy, huknachanaykimanta mana allin yachaspaykiqa.\n[[$1|thumb]]",
+       "fileexists": "Kachkanñam kay sutiyuq willañiqi.\nAma hina kaspa, <strong>[[:$1]]</strong> nisqata llanchiy, {{GENDER:|}}huknachanaykimanta mana allin yachaspaykiqa.\n[[$1|thumb]]",
        "filepageexists": "Kay willañiqipaq sut'ichana p'anqaqa kamarisqañam <strong>[[:$1]]</strong> nisqapi, ichataq kay sutiyuq willañiqi manaraqmi kanchu. Willanayki pisichayqa manam rikch'akunqachu sut'ichana p'anqapi. Rikch'akunanpaqqa, kikiykip makiykiwanmi llamk'apunayki tiyan.\n[[$1|thumb]]",
        "fileexists-extension": "Kay willañiqip sutinman yaqa kaqlla sutiyuq willañiqim kachkanña: [[$2|thumb]]\n* Churkunayasqayki willañiqip sutin: <strong>[[:$1]]</strong>\n* Kachkaqña willañiqip sutin: <strong>[[:$2]]</strong>\nAma hina kaspa, huk sutita akllay.",
        "fileexists-thumbnail-yes": "Willañiqiqa ancha uchuylla rikchamanmi rikch'akun ''(thumbnail)''. [[$1|thumb]]\nAma hina kaspa, <strong>[[:$1]]</strong> nisqa willañiqita llanchiy.\nLlanchisqa willañiqi qallariy chhikan kikin rikchaman kaqlla kaptinqa, huk rikchachata churkunaykiqa manam tiyanchu.",
        "duplicate-defaultsort": "Paqtataq: Kikinmanta allinchana llawi «$2» ñawpaq kikinmanta allinchana llawitam «$1» huknachan.",
        "version": "Musuqchasqa",
        "version-extensions": "Tiyachisqa mast'arinakuna",
+       "version-skins": "Churasqa qarakuna",
        "version-specialpages": "Sapaq p'anqakuna",
        "version-parserhooks": "T'ikrana ch'iwinakuna",
        "version-variables": "Hukchakuqkuna",
        "version-antispam": "Spam hark'ay",
-       "version-skins": "Qarakuna",
        "version-other": "Wakin",
        "version-mediahandlers": "Midya llamk'apuq",
        "version-hooks": "Ch'iwinakuna",
index 8dbbff0..07288f6 100644 (file)
        "revdelete-text-text": "Versiunile șterse vor continua să fie vizibile în istoricul paginii, însă anumite părți ale conținutului acestora vor fi inaccesibile publicului.",
        "revdelete-text-file": "Versiunile șterse ale fișierului vor continua să fie vizibile în istoricul fișierului, însă anumite părți ale conținutului acestora vor fi inaccesibile publicului.",
        "logdelete-text": "Evenimentele șterse ale jurnalului vor continua să fie vizibile în jurnale, însă anumite părți ale conținutului acestora vor fi inaccesibile publicului.",
-       "revdelete-text-others": "Alți administratori de la {{SITENAME}} vor avea acces în continuare la conținutul ascuns și îl vor putea restaura prin intermediul acestei interfețe, cu excepția cazurilor în care nu sunt activate și restricții suplimentare.",
+       "revdelete-text-others": "Alți administratori vor avea acces în continuare la conținutul ascuns și îl vor restaurarea acestuia, cu excepția cazurilor în care nu sunt activate și restricții suplimentare.",
        "revdelete-confirm": "Vă rugăm să confirmați că intenționați să faceți acest lucru, că înțelegeți consecințele și că faceți asta în conformitate cu [[{{MediaWiki:Policy-url}}|politica]].",
        "revdelete-suppress-text": "Suprimarea trebuie folosită '''doar''' în următoarele cazuri:\n* Informații potențial calomnioase\n* Informații personale inadecvate\n*: ''adrese și numere de telefon personale, CNP, numere de securitate socială etc.''",
        "revdelete-legend": "Restricții de afișare",
        "right-deletedtext": "Vizualizează textul șters și modificările dintre versiunile șterse",
        "right-browsearchive": "Caută pagini șterse",
        "right-undelete": "Recuperează pagini",
-       "right-suppressrevision": "Examinează și restaurează reviziile ascunse față de administratori",
+       "right-suppressrevision": "Vizualizează, ascunde și restaurează versiuni specifice ale paginilor față de orice utilizator",
+       "right-viewsuppressed": "Vizualizează versiuni ascunse față de orice utilizator",
        "right-suppressionlog": "Vizualizează jurnale private",
        "right-block": "Blochează alți utilizatori la modificare",
        "right-blockemail": "Blochează alți utilizatori la trimiterea e-mailurilor",
        "license": "Licențiere:",
        "license-header": "Licențiere",
        "nolicense": "Nici una selectată",
+       "licenses-edit": "Modifică opțiunile pentru licență",
        "license-nopreview": "(Previzualizare indisponibilă)",
        "upload_source_url": " (un URL valid, accesibil public)",
        "upload_source_file": " (un fișier de pe computerul dv.)",
index 2051860..402be56 100644 (file)
@@ -67,7 +67,8 @@
                        "아라",
                        "Eroha",
                        "Niklem",
-                       "Agilight"
+                       "Agilight",
+                       "Oleg3280"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "revdelete-text-text": "Удалённые версии будут по-прежнему видны в истории страницы, но части их содержимого будут недоступны для участников.",
        "revdelete-text-file": "Удалённые версии файла будут по-прежнему видны в истории страницы, но части их содержимого будут недоступны для участников.",
        "logdelete-text": "Удалённые события в журнале будут по-прежнему видны в журналах, но части их содержимого будут недоступны для участников.",
-       "revdelete-text-others": "Ð\94Ñ\80Ñ\83гие Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80Ñ\8b Ð½Ð° {{grammar:genitive|{{SITENAME}}}} Ð¿Ð¾-пÑ\80ежнемÑ\83 Ð±Ñ\83деÑ\82 Ð¸Ð¼ÐµÑ\82Ñ\8c Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñ\81Ñ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ðº Ñ\81кÑ\80Ñ\8bÑ\82омÑ\83 Ñ\81одеÑ\80жимомÑ\83 Ð¸ Ñ\81могÑ\83Ñ\82 Ð²Ð¾Ñ\81Ñ\81Ñ\82ановиÑ\82Ñ\8c ÐµÐ³Ð¾ Ñ\81нова Ñ\87еÑ\80ез Ñ\8dÑ\82оÑ\82 Ð¶Ðµ Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81, если не установлены дополнительные ограничения.",
+       "revdelete-text-others": "Ð\94Ñ\80Ñ\83гие Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80Ñ\8b Ð¿Ð¾-пÑ\80ежнемÑ\83 Ð±Ñ\83дÑ\83Ñ\82 Ð¸Ð¼ÐµÑ\82Ñ\8c Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñ\81Ñ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ðº Ñ\81кÑ\80Ñ\8bÑ\82омÑ\83 Ñ\81одеÑ\80жимомÑ\83 Ð¸ Ñ\81могÑ\83Ñ\82 Ð²Ð¾Ñ\81Ñ\81Ñ\82ановиÑ\82Ñ\8c ÐµÐ³Ð¾, если не установлены дополнительные ограничения.",
        "revdelete-confirm": "Пожалуйста, подтвердите, что вы действительно желаете совершить это действие, осознаёте последствия, делаете это в соответствии с [[{{MediaWiki:Policy-url}}|правилами]].",
        "revdelete-suppress-text": "Сокрытие может производиться '''только''' в следующих случаях:\n* Потенциально клеветническая информация\n* Неуместная личная информация\n*: ''домашний адрес, номера телефонов, номер паспорта и т. д.''",
        "revdelete-legend": "Установить ограничения:",
        "right-deletedtext": "просмотр удалённого текста и изменений между удалёнными версиями страниц",
        "right-browsearchive": "поиск удалённых страниц",
        "right-undelete": "восстановление страниц",
-       "right-suppressrevision": "просмотр и восстановление скрытых от администраторов версий страниц",
+       "right-suppressrevision": "Просмотр, скрытие и восстановление скрытых версий страниц",
+       "right-viewsuppressed": "Просмотр версий, скрытых от всех участников",
        "right-suppressionlog": "просмотр частных журналов",
        "right-block": "установка ограничений на редактирование для других участников",
        "right-blockemail": "установка запрета на отправку электронной почты",
        "upload-preferred": "Предпочтительные типы файлов: $1.",
        "upload-prohibited": "Запрещённые типы файлов: $1.",
        "uploadlogpage": "Журнал загрузок",
-       "uploadlogpagetext": "Ниже представлен список последних загрузок файлов.\nСм. также [[Special:NewFiles|галерею новых файлов]], где сведения о новых загрузках представлены в более наглядном виде.",
+       "uploadlogpagetext": "Ниже представлен список последних загрузок файлов.\nСм. также [[Special:NewFiles|галерею новых файлов]], где сведения о новых загрузках представлены в более наглядном виде, и [[Special:ListFiles|все загруженные файлы]].",
        "filename": "Имя файла",
        "filedesc": "Краткое описание",
        "fileuploadsummary": "Краткое описание:",
index 2d6a3a4..83a0252 100644 (file)
        "revdelete-text-text": "Izbrisane redakcije bodo še vedno prikazane v zgodovini strani, vendar bodo deli njihovih vsebin nedostopni javnosti.",
        "revdelete-text-file": "Izbrisane različice datoteke bodo še vedno prikazane v zgodovini datoteke, vendar bodo deli njihovih vsebin nedostopni javnosti.",
        "logdelete-text": "Izbrisani dnevniški vnosi bodo še vedno prikazani v dnevnikih, vendar bodo deli njihovih vsebin nedostopni javnosti.",
-       "revdelete-text-others": "Drugi administratorji na strani {{SITENAME}} bodo še vedno lahko dostopali do skrite vsebine in jo obnovili z enakim vmesnikom, razen če so nastavljene dodatne omejitve.",
+       "revdelete-text-others": "Drugi administratorji bodo še vedno lahko dostopali do skrite vsebine in jo obnovili, razen če so nastavljene dodatne omejitve.",
        "revdelete-confirm": "Prosim potrdite da nameravate to storiti, da se zavedate posledic in da to počnete v skladu s [[{{MediaWiki:Policy-url}}|politiko]].",
        "revdelete-suppress-text": "Zadrževanje naj bi bilo uporabljeno '''le''' v sledečih primerih:\n* Morebitni klevetniški podatki\n* Neprimerni osebni podatki\n*: ''domači naslovi in telefonske številke, narodne številke istovetnosti itn.''",
        "revdelete-legend": "Nastavi omejitve vidnosti",
        "right-deletedtext": "Ogled izbrisanega besedila in primerjava med izbrisanimi redakcijami",
        "right-browsearchive": "Iskanje izbrisanih strani",
        "right-undelete": "Obnavljanje strani",
-       "right-suppressrevision": "Pregled in obnova pred administratorjem skritih redakcij",
+       "right-suppressrevision": "Ogled, skrivanje in obnavljanje določenih redakcij strani katerega koli uporabnika",
+       "right-viewsuppressed": "Ogled redakcij skritih pred vsemi uporabniki",
        "right-suppressionlog": "Ogled zasebnih dnevniških zapisov",
        "right-block": "Preprečitev (blokada) urejanja drugih uporabnikov",
        "right-blockemail": "Drugemu uporabniku lahko prepreči pošiljanje e-pošte",
        "license": "Licenca:",
        "license-header": "Licenca",
        "nolicense": "Nobeno",
+       "licenses-edit": "Urejanje možnosti dovoljenja",
        "license-nopreview": "(Predogled ni na voljo)",
        "upload_source_url": " (veljaven, javnosti dostopen URL)",
        "upload_source_file": " (datoteka na vašem računalniku)",
index 4da7191..8fbe42e 100644 (file)
        "category-empty": "<div style=\"margin:2em 1em 0 1em; padding:0.5em; border:1px solid #AAA; text-align:center;\">''Ова категорија тренутно не садржи странице или датотеке.''</div>",
        "hidden-categories": "{{PLURAL:$1|Сакривена категорија|Сакривене категорије}}",
        "hidden-category-category": "Сакривене категорије",
-       "category-subcat-count": "{{PLURAL:$2|Ова категорија садржи само следећу поткатегорију.|Ова категорија има {{PLURAL:$1|следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}, од укупно $2.}}",
+       "category-subcat-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу поткатегорију.|Ова категорија има {{PLURAL:$1|следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}, од укупно $2.}}",
        "category-subcat-count-limited": "Ова категорија садржи {{PLURAL:$1|следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}.",
-       "category-article-count": "{{PLURAL:$2|Ова категорија садржи само следећу страницу.|{{PLURAL:$1|Следећа страница је|Следеће $1 странице су|Следећих $1 страница је}} у овој категорији, од укупно $2.}}",
-       "category-article-count-limited": "{{PLURAL:$1|Следећа страница је|Следеће $1 странице су|Следећих $1 страница је}} у овој категорији.",
-       "category-file-count": "{{PLURAL:$2|Ова категорија садржи само следећу датотеку.|{{PLURAL:$1|Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији, од укупно $2.}}",
-       "category-file-count-limited": "{{PLURAL:$1|Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији.",
+       "category-article-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу страницу.|{{PLURAL:$1|Следећа страница је|Следеће $1 странице су|Следећих $1 страница је}} у овој категорији, од укупно $2.}}",
+       "category-article-count-limited": "{{PLURAL:$1|1=Следећа страница је|Следеће $1 странице су|Следећих $1 страница је}} у овој категорији.",
+       "category-file-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу датотеку.|{{PLURAL:$1|Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији, од укупно $2.}}",
+       "category-file-count-limited": "{{PLURAL:$1|1=Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији.",
        "listingcontinuesabbrev": "наст.",
        "index-category": "Пописане странице",
        "noindex-category": "Непописане странице",
        "loginerror": "Грешка при пријављивању",
        "createacct-error": "Дошло је до грешке при креирању налога",
        "createaccounterror": "Не могу да отворим налог: $1",
-       "nocookiesnew": "Кориснички налог је отворен, али нисте пријављени.\nОвај вики користи колачиће за пријаву. Вама су колачићи онемогућени.\nОмогућите их, па се онда пријавите са својим корисничким именом и лозинком.",
-       "nocookieslogin": "Овај вики користи колачиће за пријављивање корисника.\nВама су колачићи онемогућени. Омогућите их и покушајте поново.",
+       "nocookiesnew": "Кориснички налог је отворен, али нисте пријављени.\n{{SITENAME}} користи колачиће за пријаву. Вама су колачићи онемогућени.\nОмогућите их, па се онда пријавите са својим корисничким именом и лозинком.",
+       "nocookieslogin": "{{SITENAME}} користи колачиће за пријављивање корисника.\nВама су колачићи онемогућени. Омогућите их и покушајте поново.",
        "nocookiesfornew": "Кориснички налог није отворен јер његов извор није потврђен.\nОмогућите колачиће на прегледачу и поново учитајте страницу.",
        "nocookiesforlogin": "{{int:nocookieslogin}}",
        "noname": "Унели сте неисправно корисничко име.",
        "password-name-match": "Лозинка се мора разликовати од корисничког имена.",
        "password-login-forbidden": "Коришћење овог корисничког имена и лозинке је забрањено.",
        "mailmypassword": "Ресетуј лозинку",
-       "passwordremindertitle": "{{SITENAME}} â\80\93 Ð¿Ð¾Ð´Ñ\81еÑ\82ник Ð·Ð° Ð»Ð¾Ð·Ð¸Ð½ÐºÑ\83",
+       "passwordremindertitle": "{{SITENAME}} â\80\94 Ð¿Ñ\80ивÑ\80емена Ð»Ð¾Ð·Ð¸Ð½ÐºÐ°",
        "passwordremindertext": "Неко, вероватно ви, са ИП адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).\nСтворена је привремена лозинка за {{GENDER:$2|корисника|корисницу|корисника}} $2 која гласи $3.\nУколико је ово ваш захтев, сада се пријавите и поставите нову лозинку.\nПривремена лозинка истиче за {{PLURAL:$5|један дан|$5 дана|$5 дана}}.\n\nАко је неко други затражио промену лозинке, или сте се сетили ваше лозинке и не желите да је мењате, занемарите ову поруку.",
-       "noemail": "Не постоји е-адреса за {{GENDER:$1|корисника|корисницу|корисника}} $1.",
+       "noemail": "Не постоји е-адреса за {{GENDER:$1|корисника|корисницу}} $1.",
        "noemailcreate": "Морате навести исправну е-адресу",
        "passwordsent": "Нова лозинка је послата на е-адресу {{GENDER:$1|корисника|кориснице|корисника}} $1.\nПријавите се пошто је примите.",
        "blocked-mailpassword": "Вашој ИП адреси је онемогућено уређивање страница, као и могућност захтевања нове лозинке.",
        "ninterwikis": "$1 {{PLURAL:$1|међувики|међувикија|међувикија}}",
        "nlinks": "$1 {{PLURAL:$1|веза|везе|веза}}",
        "nmembers": "$1 {{PLURAL:$1|члан|члана|чланова}}",
+       "nmemberschanged": "$1 → $2 {{PLURAL:$2|члан|члана|чланова}}",
        "nrevisions": "$1 {{PLURAL:$1|измена|измене|измена}}",
        "nviews": "$1 {{PLURAL:$1|преглед|прегледа|прегледа}}",
        "nimagelinks": "Користи се на $1 {{PLURAL:$1|страници|странице|страница}}",
        "ipb_expiry_invalid": "Време истека је неисправно.",
        "ipb_expiry_temp": "Сакривене блокаде корисника морају бити трајне.",
        "ipb_hide_invalid": "Не могу да потиснем овај налог; има више од {{PLURAL:$1|једне измене|$1 измена}}.",
-       "ipb_already_blocked": "„$1“ је већ блокиран",
+       "ipb_already_blocked": "„$1“ је већ блокиран.",
        "ipb-needreblock": "$1 је већ блокиран. Желите ли да промените подешавања?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Друга блокада|Друге блокаде}}",
        "unblock-hideuser": "Не можете деблокирати овог корисника јер је његово корисничко име сакривено.",
        "movenotallowedfile": "Немате дозволу да премештате датотеке.",
        "cant-move-user-page": "Немате дозволу за премештање основних корисничких страница (осим подстраница).",
        "cant-move-to-user-page": "Немате дозволу за премештање странице на вашу корисничку страницу (осим на корисничку подстраницу).",
+       "cant-move-category-page": "Немате дозволу да премештате странице категорија.",
        "newtitle": "Нови наслов:",
        "move-watch": "Надгледај ову страницу",
        "movepagebtn": "Премести страницу",
        "delete_and_move_reason": "Обрисано да се ослободи место за премештање из „[[$1]]“",
        "selfmove": "Изворни и одредишни наслови су истоветни;\nне могу да преместим страницу преко саме себе.",
        "immobile-source-namespace": "Не могу да преместим странице у именском простору „$1“",
-       "immobile-target-namespace": "Ð\9dе Ð¼Ð¾Ð³Ñ\83 Ð´Ð° Ð¿Ñ\80емеÑ\81Ñ\82им Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\83 Ð¸Ð¼ÐµÐ½Ñ\81ком Ð¿Ñ\80оÑ\81Ñ\82оÑ\80Ñ\83 â\80\9e$1â\80\9d",
+       "immobile-target-namespace": "Ð\9dе Ð¼Ð¾Ð³Ñ\83 Ð´Ð° Ð¿Ñ\80емеÑ\81Ñ\82им Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\83 Ð¸Ð¼ÐµÐ½Ñ\81ком Ð¿Ñ\80оÑ\81Ñ\82оÑ\80Ñ\83 â\80\9e$1â\80\9c",
        "immobile-target-namespace-iw": "Међувики веза није исправно одредиште за премештање странице.",
        "immobile-source-page": "Ова страница се не може преместити.",
        "immobile-target-page": "Не могу да преместим на жељени наслов.",
        "importinterwiki": "Међувики увоз",
        "import-interwiki-text": "Изаберите вики и наслов странице за увоз.\nДатуми и имена уредника ће бити сачувани.\nСве радње при увозу с других викија су забележене у [[Special:Log/import|дневнику увоза]].",
        "import-interwiki-source": "Извор викија/странице:",
-       "import-interwiki-history": "Копирај све старије измене ове странице",
+       "import-interwiki-history": "Копирај све верзије историје за ову страницу",
        "import-interwiki-templates": "Укључи све шаблоне",
        "import-interwiki-submit": "Увези",
        "import-interwiki-namespace": "Одредишни именски простор:",
        "import-rootpage-nosubpage": "Именски простор „$1“ основне странице не дозвољава подстранице.",
        "importlogpage": "Дневник увоза",
        "importlogpagetext": "Административни увози страница с историјама измена с других викија.",
-       "import-logentry-upload": "{{GENDER:|је увезао|је увезла|уведе}} „[[$1]]“ отпремањем датотеке",
+       "import-logentry-upload": "увезено [[$1]] отпремањем датотеке",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|измена|измене|измена}}",
        "import-logentry-interwiki": "премештено с другог викија: $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|измена|измене|измена}} од $2",
        "rcpatroldisabled": "Патролирање скорашњих измена је онемогућено",
        "rcpatroldisabledtext": "Патролирање скорашњих измена је онемогућено.",
        "markedaspatrollederror": "Не могу да означим као патролирано",
-       "markedaspatrollederrortext": "Морате изабрати измену да бисте је означили као прегледану.",
+       "markedaspatrollederrortext": "Морате изабрати измену да бисте је означили као патролирану.",
        "markedaspatrollederror-noautopatrol": "Не можете да означите своје измене као патролиране.",
        "markedaspatrollednotify": "Ова измена на страници „$1“ је означена као патролирана.",
        "markedaspatrollederrornotify": "Означавање ове странице патролираном није успело.",
        "logentry-move-move_redir": "$1 је {{GENDER:$2|преместио|преместила}} страницу $3 на $4 преко преусмерења",
        "logentry-move-move_redir-noredirect": "$1 је {{GENDER:$2|преместио|преместила}} страницу $3 на $4 преко преусмерења без остављања преусмерења",
        "logentry-patrol-patrol": "$1 је {{GENDER:$2|означио|означила}} измену $4 странице $3 као патролирану",
-       "logentry-patrol-patrol-auto": "$1 је аутоматски {{GENDER:$2|означио|означила}} измену $4 странице $3 као прегледану",
+       "logentry-patrol-patrol-auto": "$1 је аутоматски {{GENDER:$2|означио|означила}} измену $4 странице $3 као патролирану",
        "logentry-newusers-newusers": "$1 је {{GENDER:$2|отворио|отворила}} кориснички налог",
        "logentry-newusers-create": "$1 је {{GENDER:$2|отворио|отворила}} кориснички налог",
        "logentry-newusers-create2": "$1 је {{GENDER:$2|отворио|отворила}} кориснички налог $3",
index 552272d..c52d5ba 100644 (file)
@@ -40,7 +40,7 @@
        "tog-enotifwatchlistpages": "Pošalji mi e-poruku kada se promeni stranica ili datoteka koju nadgledam",
        "tog-enotifusertalkpages": "Pošalji mi e-poruku kada se promeni moja stranica za razgovor",
        "tog-enotifminoredits": "Pošalji mi e-poruku i za manje izmene u stranicama i datotekama",
-       "tog-enotifrevealaddr": "Otkrij moju e-adresu u porukama obaveštenja",
+       "tog-enotifrevealaddr": "Prikaži moju e-adresu u porukama obaveštenja",
        "tog-shownumberswatching": "Prikaži broj korisnika koji nadgledaju",
        "tog-oldsig": "Tekući potpis:",
        "tog-fancysig": "Smatraj potpis kao vikitekst (bez samopovezivanja)",
        "category-empty": "<div style=\"margin:2em 1em 0 1em; padding:0.5em; border:1px solid #AAA; text-align:center;\">''Ova kategorija trenutno ne sadrži stranice ili datoteke.''</div>",
        "hidden-categories": "{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}",
        "hidden-category-category": "Sakrivene kategorije",
-       "category-subcat-count": "{{PLURAL:$2|Ova kategorija sadrži samo sledeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}, od ukupno $2.}}",
+       "category-subcat-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}, od ukupno $2.}}",
        "category-subcat-count-limited": "Ova kategorija sadrži {{PLURAL:$1|sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}.",
-       "category-article-count": "{{PLURAL:$2|Ova kategorija sadrži samo sledeću stranicu.|{{PLURAL:$1|Sledeća stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji, od ukupno $2.}}",
-       "category-article-count-limited": "{{PLURAL:$1|Sledeća stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji.",
-       "category-file-count": "{{PLURAL:$2|Ova kategorija sadrži samo sledeću datoteku.|{{PLURAL:$1|Sledeća datoteka je|Sledeće $1 datoteke su|Sledećih $1 datoteka je}} u ovoj kategoriji, od ukupno $2.}}",
-       "category-file-count-limited": "{{PLURAL:$1|Sledeća datoteka je|Sledeće $1 datoteke su|Sledećih $1 datoteka je}} u ovoj kategoriji.",
+       "category-article-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću stranicu.|{{PLURAL:$1|Sledeća stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji, od ukupno $2.}}",
+       "category-article-count-limited": "{{PLURAL:$1|1=Sledeća stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji.",
+       "category-file-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću datoteku.|{{PLURAL:$1|Sledeća datoteka je|Sledeće $1 datoteke su|Sledećih $1 datoteka je}} u ovoj kategoriji, od ukupno $2.}}",
+       "category-file-count-limited": "{{PLURAL:$1|1=Sledeća datoteka je|Sledeće $1 datoteke su|Sledećih $1 datoteka je}} u ovoj kategoriji.",
        "listingcontinuesabbrev": "nast.",
        "index-category": "Popisane stranice",
        "noindex-category": "Nepopisane stranice",
        "loginerror": "Greška pri prijavljivanju",
        "createacct-error": "Došlo je do greške pri kreiranju naloga",
        "createaccounterror": "Ne mogu da otvorim nalog: $1",
-       "nocookiesnew": "Korisnički nalog je otvoren, ali niste prijavljeni.\nOvaj viki koristi kolačiće za prijavu. Vama su kolačići onemogućeni.\nOmogućite ih, pa se onda prijavite sa svojim korisničkim imenom i lozinkom.",
-       "nocookieslogin": "Ovaj viki koristi kolačiće za prijavljivanje korisnika.\nVama su kolačići onemogućeni. Omogućite ih i pokušajte ponovo.",
+       "nocookiesnew": "Korisnički nalog je otvoren, ali niste prijavljeni.\n{{SITENAME}} koristi kolačiće za prijavu. Vama su kolačići onemogućeni.\nOmogućite ih, pa se onda prijavite sa svojim korisničkim imenom i lozinkom.",
+       "nocookieslogin": "{{SITENAME}} koristi kolačiće za prijavljivanje korisnika.\nVama su kolačići onemogućeni. Omogućite ih i pokušajte ponovo.",
        "nocookiesfornew": "Korisnički nalog nije otvoren jer njegov izvor nije potvrđen.\nOmogućite kolačiće na pregledaču i ponovo učitajte stranicu.",
        "nocookiesforlogin": "{{int:nocookieslogin}}",
        "noname": "Uneli ste neispravno korisničko ime.",
        "password-name-match": "Lozinka se mora razlikovati od korisničkog imena.",
        "password-login-forbidden": "Korišćenje ovog korisničkog imena i lozinke je zabranjeno.",
        "mailmypassword": "Resetuj lozinku",
-       "passwordremindertitle": "{{SITENAME}} â\80\93 podsetnik za lozinku",
+       "passwordremindertitle": "{{SITENAME}} â\80\94 privremena lozinka",
        "passwordremindertext": "Neko, verovatno vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).\nStvorena je privremena lozinka za {{GENDER:$2|korisnika|korisnicu|korisnika}} $2 koja glasi $3.\nUkoliko je ovo vaš zahtev, sada se prijavite i postavite novu lozinku.\nPrivremena lozinka ističe za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.\n\nAko je neko drugi zatražio promenu lozinke, ili ste se setili vaše lozinke i ne želite da je menjate, zanemarite ovu poruku.",
-       "noemail": "Ne postoji e-adresa za {{GENDER:$1|korisnika|korisnicu|korisnika}} $1.",
+       "noemail": "Ne postoji e-adresa za {{GENDER:$1|korisnika|korisnicu}} $1.",
        "noemailcreate": "Morate navesti ispravnu e-adresu",
        "passwordsent": "Nova lozinka je poslata na e-adresu {{GENDER:$1|korisnika|korisnice|korisnika}} $1.\nPrijavite se pošto je primite.",
        "blocked-mailpassword": "Vašoj IP adresi je onemogućeno uređivanje stranica, kao i mogućnost zahtevanja nove lozinke.",
        "ninterwikis": "$1 {{PLURAL:$1|međuviki|međuvikija|međuvikija}}",
        "nlinks": "$1 {{PLURAL:$1|veza|veze|veza}}",
        "nmembers": "$1 {{PLURAL:$1|član|člana|članova}}",
+       "nmemberschanged": "$1 → $2 {{PLURAL:$2|član|člana|članova}}",
        "nrevisions": "$1 {{PLURAL:$1|izmena|izmene|izmena}}",
        "nviews": "$1 {{PLURAL:$1|pregled|pregleda|pregleda}}",
        "nimagelinks": "Koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
        "ipb_expiry_invalid": "Vreme isteka je neispravno.",
        "ipb_expiry_temp": "Sakrivene blokade korisnika moraju biti trajne.",
        "ipb_hide_invalid": "Ne mogu da potisnem ovaj nalog; ima više od {{PLURAL:$1|jedne izmene|$1 izmena}}.",
-       "ipb_already_blocked": "„$1“ je već blokiran",
+       "ipb_already_blocked": "„$1“ je već blokiran.",
        "ipb-needreblock": "$1 je već blokiran. Želite li da promenite podešavanja?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Druga blokada|Druge blokade}}",
        "unblock-hideuser": "Ne možete deblokirati ovog korisnika jer je njegovo korisničko ime sakriveno.",
        "movenotallowedfile": "Nemate dozvolu da premeštate datoteke.",
        "cant-move-user-page": "Nemate dozvolu za premeštanje osnovnih korisničkih stranica (osim podstranica).",
        "cant-move-to-user-page": "Nemate dozvolu za premeštanje stranice na vašu korisničku stranicu (osim na korisničku podstranicu).",
+       "cant-move-category-page": "Nemate dozvolu da premeštate stranice kategorija.",
        "newtitle": "Novi naslov:",
        "move-watch": "Nadgledaj ovu stranicu",
        "movepagebtn": "Premesti stranicu",
        "delete_and_move_reason": "Obrisano da se oslobodi mesto za premeštanje iz „[[$1]]“",
        "selfmove": "Izvorni i odredišni naslovi su istovetni;\nne mogu da premestim stranicu preko same sebe.",
        "immobile-source-namespace": "Ne mogu da premestim stranice u imenskom prostoru „$1“",
-       "immobile-target-namespace": "Ne mogu da premestim stranice u imenskom prostoru â\80\9e$1â\80\9d",
+       "immobile-target-namespace": "Ne mogu da premestim stranice u imenskom prostoru â\80\9e$1â\80\9c",
        "immobile-target-namespace-iw": "Međuviki veza nije ispravno odredište za premeštanje stranice.",
        "immobile-source-page": "Ova stranica se ne može premestiti.",
        "immobile-target-page": "Ne mogu da premestim na željeni naslov.",
        "importinterwiki": "Međuviki uvoz",
        "import-interwiki-text": "Izaberite viki i naslov stranice za uvoz.\nDatumi i imena urednika će biti sačuvani.\nSve radnje pri uvozu s drugih vikija su zabeležene u [[Special:Log/import|dnevniku uvoza]].",
        "import-interwiki-source": "Izvor vikija/stranice:",
-       "import-interwiki-history": "Umnoži sve izmene ove stranice",
+       "import-interwiki-history": "Kopiraj sve verzije istorije za ovu stranicu",
        "import-interwiki-templates": "Uključi sve šablone",
        "import-interwiki-submit": "Uvezi",
        "import-interwiki-namespace": "Odredišni imenski prostor:",
        "import-rootpage-nosubpage": "Imenski prostor „$1“ osnovne stranice ne dozvoljava podstranice.",
        "importlogpage": "Dnevnik uvoza",
        "importlogpagetext": "Administrativni uvozi stranica s istorijama izmena s drugih vikija.",
-       "import-logentry-upload": "{{GENDER:|je uvezao|je uvezla|uvede}} „[[$1]]“ otpremanjem datoteke",
+       "import-logentry-upload": "uvezeno [[$1]] otpremanjem datoteke",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|izmena|izmene|izmena}}",
        "import-logentry-interwiki": "premešteno s drugog vikija: $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|izmena|izmene|izmena}} od $2",
        "rcpatroldisabled": "Patroliranje skorašnjih izmena je onemogućeno",
        "rcpatroldisabledtext": "Patroliranje skorašnjih izmena je onemogućeno.",
        "markedaspatrollederror": "Ne mogu da označim kao patrolirano",
-       "markedaspatrollederrortext": "Morate izabrati izmenu da biste je označili kao pregledanu.",
+       "markedaspatrollederrortext": "Morate izabrati izmenu da biste je označili kao patroliranu.",
        "markedaspatrollederror-noautopatrol": "Ne možete da označite svoje izmene kao patrolirane.",
        "markedaspatrollednotify": "Ova izmena na stranici „$1“ je označena kao patrolirana.",
        "markedaspatrollederrornotify": "Označavanje ove stranice patroliranom nije uspelo.",
        "logentry-move-move_redir": "$1 je {{GENDER:$2|premestio|premestila}} stranicu $3 na $4 preko preusmerenja",
        "logentry-move-move_redir-noredirect": "$1 je {{GENDER:|premestio|premestila}} stranicu $3 na $4 preko preusmerenja bez ostavljanja preusmerenja",
        "logentry-patrol-patrol": "$1 je {{GENDER:$2|označio|označila}} izmenu $4 stranice $3 kao patroliranu",
-       "logentry-patrol-patrol-auto": "$1 je automatski {{GENDER:$2|označio|označila}} izmenu $4 stranice $3 kao pregledanu",
+       "logentry-patrol-patrol-auto": "$1 je automatski {{GENDER:$2|označio|označila}} izmenu $4 stranice $3 kao patroliranu",
        "logentry-newusers-newusers": "$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog",
        "logentry-newusers-create": "$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog",
        "logentry-newusers-create2": "$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog $3",
index be3b67e..50ad2f7 100644 (file)
        "revdelete-text-text": "Raderade sidversioner kommer fortfarande synas i sidans historik, men delar av innehållet kommer inte att bli tillgängligt offentligt.",
        "revdelete-text-file": "Raderade filversioner kommer fortfarande synas i filens historik, men delar av innehållet kommer inte att bli tillgängligt offentligt.",
        "logdelete-text": "Raderade logghändelser kommer fortfarande synas i loggarna, men delar av innehållet kommer inte att bli tillgängligt offentligt.",
-       "revdelete-text-others": "Andra administratörer på {{SITENAME}} kommer fortfarande att kunna komma åt det dolda innehållet och återställa det igen genom samma gränssnitt om inte tilläggande begränsningar används.",
+       "revdelete-text-others": "Andra administratörer kommer fortfarande att kunna komma åt det dolda innehållet och återställa det igen om inte ytterligare begränsningar används.",
        "revdelete-confirm": "Var god bekräfta att du vill göra detta, och att du förstår konsekvenserna, och att du gör så i enlighet med [[{{MediaWiki:Policy-url}}|policyn]].",
        "revdelete-suppress-text": "Undanhållande ska '''bara''' användas i följande fall:\n* Eventuell förolämpande information\n* Opassande personlig information\n*: ''hemadresser och telefonnummer, personnummer, etc.''",
        "revdelete-legend": "Ändra synlighet",
        "right-deletedtext": "Visa raderad text och ändringar mellan raderade versioner",
        "right-browsearchive": "Sök efter raderade sidor",
        "right-undelete": "Återställ raderade sidor",
-       "right-suppressrevision": "Se och återställa sidversioner som dolts för administratörer",
+       "right-suppressrevision": "Se, dölj och ta fram specifika sidversioner som dolts för alla användare",
+       "right-viewsuppressed": "Se sidversioner som dolts från alla användare",
        "right-suppressionlog": "Se privata loggar",
        "right-block": "Blockera andra användare från att redigera",
        "right-blockemail": "Blockera användare från att skicka e-post",
        "wantedpages-badtitle": "Ogiltig titel bland resultaten: $1",
        "wantedfiles": "Önskade filer",
        "wantedfiletext-cat": "Följande filer används men finns inte. Filer från utländska databaser kan vara listade trots att de inte finns. Sådana falska realiteter kommer att <del>tas bort</del>. Sidor som bäddar in filer som inte finns listas upp på [[:$1]].",
-       "wantedfiletext-cat-noforeign": "Följande filer används men finns inte. Sidor som bäddar in filer som inte finns listas upp i [[:$1]].",
+       "wantedfiletext-cat-noforeign": "Följande filer används men finns inte. Sidor som bäddar in filer som inte finns listas i [[:$1]].",
        "wantedfiletext-nocat": "Följande filer används men finns inte. Filer från utländska databaser kan vara listade trots att de inte finns. Sådana falska realiteter kommer att <del>tas bort</del>.",
        "wantedfiletext-nocat-noforeign": "Följande filer används men finns inte.",
        "wantedtemplates": "Önskade mallar",
index 083efdd..b265193 100644 (file)
        "talkpagelinktext": "พูดคุย",
        "specialpage": "หน้าพิเศษ",
        "personaltools": "เครื่องมือส่วนตัว",
-       "postcomment": "ส่วนใหม่",
        "articlepage": "ดูหน้าเนื้อหา",
        "talk": "อภิปราย",
        "views": "ดู",
        "externaldberror": "มีข้อผิดพลาดของฐานข้อมูลในการพิสูจน์ตัวจริง หรือคุณไม่ได้รับอนุญาตให้ปรับบัญชีภายนอกของคุณ",
        "login": "ล็อกอิน",
        "nav-login-createaccount": "ล็อกอิน / สร้างบัญชี",
-       "loginprompt": "ต้องเปิดใช้คุกกี้ก่อนจะล็อกอินเข้าสู่ {{SITENAME}}",
        "userlogin": "ล็อกอิน / สร้างบัญชี",
        "userloginnocreate": "ล็อกอิน",
        "logout": "ล็อกเอาต์",
        "watchlistedit-raw-done": "รายการเฝ้าดูของคุณได้ปรับแล้ว",
        "watchlistedit-raw-added": "$1 ชื่อเรื่องได้ถูกเพิ่มเข้าไป:",
        "watchlistedit-raw-removed": "$1 ชื่อเรื่องได้ถูกนำออกไป:",
+       "watchlistedit-clear-title": "ล้างรายการเฝ้าดู",
        "watchlistedit-clear-legend": "ล้างรายการเฝ้าดู",
+       "watchlistedit-clear-explain": "ชื่อเรื่องทั้งหมดจะถูกนำออกจากรายการเฝ้าดูของคุณ",
+       "watchlistedit-clear-titles": "ชื่อเรื่อง:",
+       "watchlistedit-clear-submit": "ล้างรายการเฝ้าดู (เป็นการถาวร!)",
+       "watchlistedit-clear-done": "ล้างรายการเฝ้าดูของคุณแล้ว",
+       "watchlistedit-clear-removed": "$1 ชื่อเรื่องถูกนำออก:",
+       "watchlistedit-too-many": "มีหน้ามากเกินไปที่จะแสดงผลที่นี่",
        "watchlisttools-clear": "ล้างรายการเฝ้าดู",
        "watchlisttools-view": "ดูการเปลี่ยนแปลงที่เกี่ยวข้อง",
        "watchlisttools-edit": "ดูและแก้ไขรายการเฝ้าดู",
index b1a48d9..5940869 100644 (file)
        "revdelete-text-text": "Видалені версії будуть як і раніше видно в історії сторінки, але їх частини вмісту будуть доступні для учасників.",
        "revdelete-text-file": "Видалені версії файлу будуть як і раніше видно в історії сторінки, але їх частини вмісту будуть доступні для учасників.",
        "logdelete-text": "Видалені події в журналі будуть як і раніше видно в журналах, але частини їх вмісту будуть доступні для учасників.",
-       "revdelete-text-others": "Інші адміністратори на {{grammar:genitive|{{SITENAME}}}} як і раніше буде мати можливість доступу до прихованого вмісту і зможуть відновити його знову через цей же інтерфейс, якщо не встановлено додаткові обмеження.",
+       "revdelete-text-others": "Інші адміністратори на як і раніше будуть мати можливість доступу до прихованого вмісту і зможуть відновити його, якщо не встановлено додаткові обмеження.",
        "revdelete-confirm": "Будь ласка, підтвердить, що ви справді бажаєте це здійснити, усвідомлюєте наслідки та робите це згідно з [[{{MediaWiki:Policy-url}}|правилами]].",
        "revdelete-suppress-text": "Приховування може відбуватися '''лише''' в таких випадках:\n* Потенційно наклепницькі відомості\n* Недоречна особиста інформація\n*: ''домашні адреси, номери телефонів, номер паспорта тощо.''",
        "revdelete-legend": "Встановити обмеження видимості",
        "right-deletedtext": "перегляд вилученого тексту та змін між вилученими версіями",
        "right-browsearchive": "Пошук вилучених сторінок",
        "right-undelete": "Відновлення сторінок",
-       "right-suppressrevision": "Перегляд і відновлення версій, прихованих від адміністраторів",
+       "right-suppressrevision": "Перегляд, приховання та відновлення конкретних змін сторінок від будь-якого користувача",
+       "right-viewsuppressed": "Перегляд змін, приховаих від усіх користувачів",
        "right-suppressionlog": "Перегляд приватних журналів",
        "right-block": "Заборона редагувань для інших дописувачів",
        "right-blockemail": "Блокування користувачам надсилання електронної пошти",
        "license": "Ліцензування:",
        "license-header": "Ліцензування",
        "nolicense": "Відсутнє",
+       "licenses-edit": "Редагувати параметри ліцензії",
        "license-nopreview": "(Попередній перегляд недоступний)",
        "upload_source_url": " (вірна, публічно доступна інтернет-адреса)",
        "upload_source_file": " (файл на вашому комп'ютері)",
+       "listfiles-delete": "видалити",
        "listfiles-summary": "Ця спеціальна сторінка показує всі завантажені файли.",
        "listfiles_search_for": "Пошук по назві зображення:",
        "imgfile": "файл",
        "wantedpages-badtitle": "Неправильний заголовок у результатах запиту: $1",
        "wantedfiles": "Необхідні файли",
        "wantedfiletext-cat": "Наступні файли використовують, але вони не існують. У цей список можуть помилково потрапити файли, що знаходяться на зовнішніх сховищах. Такі хибні моменти помічаються <del>перекреслюванням</del>. Крім того, сторінки, що використовують неіснуючі файли, перелічені в [[:$1]].",
+       "wantedfiletext-cat-noforeign": "Наступні файли використовуються, але не існують. Крім того, сторінки, що посилаються на фійли, які не існують, перераховані у [[:$1]].",
        "wantedfiletext-nocat": "Наступні файли використовують, але вони не існують. У цей список можуть помилково потрапити файли, що знаходяться на зовнішніх сховищах. Такі хибні моменти помічаються <del>перекреслюванням</del>.",
+       "wantedfiletext-nocat-noforeign": "Наступні файли використовуються, але не існують.",
        "wantedtemplates": "Необхідні шаблони",
        "mostlinked": "Сторінки, на які найбільше посилань",
        "mostlinkedcategories": "Найбільші категорії",
        "timezone-utc": "UTC",
        "unknown_extension_tag": "Невідомий тег доповнення «$1»",
        "duplicate-defaultsort": "Увага. Ключ сортування «$2» перекриває попередній ключ сортування «$1».",
+       "duplicate-displaytitle": "<strong>Увага:</strong> Відображений заголовок \"$2\" заміщує раніше відображений заголовок \"$1\".",
        "version": "Версія MediaWiki",
        "version-extensions": "Установлені розширення",
        "version-skins": "Встановлені теми оформлення",
index 63be321..6bba637 100644 (file)
        "revdelete-text-text": "Các phiên bản đã xóa sẽ tiếp tục xuất hiện trong lịch sử trang, nhưng một số phần của nội dung sẽ bị ẩn khỏi công chúng.",
        "revdelete-text-file": "Các phiên bản tập tin đã xóa sẽ tiếp tục xuất hiện trong lịch sử tập tin, nhưng một số phần của nội dung sẽ bị ẩn khỏi công chúng.",
        "logdelete-text": "Các sự kiện đã xóa sẽ tiếp tục xuất hiện trong nhật trình, nhưng một số phần của nội dung sẽ bị ẩn khỏi công chúng.",
-       "revdelete-text-others": "Các bảo quản viên khác trên {{SITENAME}} sẽ vẫn có quyền truy cập nội dung ẩn và có thể phục hồi nó qua cùng giao diện này, trừ khi có hạn chế bổ sung.",
+       "revdelete-text-others": "Các bảo quản viên khác sẽ vẫn có quyền truy cập nội dung ẩn và phục hồi nó qua cùng giao diện này, trừ khi có hạn chế bổ sung.",
        "revdelete-confirm": "Xin hãy xác nhận rằng bạn có ý định xóa, nhận biết tầm quan trọng của việc này, và việc xóa tuân theo [[{{MediaWiki:Policy-url}}|quy định]].",
        "revdelete-suppress-text": "Việc ẩn giấu '''chỉ''' nên dùng trong các trường hợp sau:\n* Thông tin có thể phỉ báng\n* Thông tin cá nhân không thích hợp\n*: ''địa chỉ nhà và số điện thoại, số chứng minh nhân dân, số an sinh xã hội, v.v.''",
        "revdelete-legend": "Thiết lập hạn chế khả kiến",
        "right-deletedtext": "Xem văn bản đã xóa và các thay đổi giữa phiên bản đã xóa",
        "right-browsearchive": "Tìm kiếm trang đã bị xóa",
        "right-undelete": "Phục hồi trang",
-       "right-suppressrevision": "Xem và phục hồi phiên bản mà bảo quản viên không thấy",
+       "right-suppressrevision": "Xem và hiện/ẩn các phiên bản trang cụ thể đối với mọi người dùng khác",
+       "right-viewsuppressed": "Xem các phiên bản được ẩn mà mọi người khác không thấy được",
        "right-suppressionlog": "Xem nhật trình riêng tư",
        "right-block": "Cấm thành viên khác sửa đổi",
        "right-blockemail": "Cấm người dùng gửi thư điện tử",
        "license": "Giấy phép:",
        "license-header": "Giấy phép",
        "nolicense": "chưa chọn",
+       "licenses-edit": "Sửa các giấy phép",
        "license-nopreview": "(Không xem trước được)",
        "upload_source_url": " (địa chỉ URL đúng, có thể truy cập)",
        "upload_source_file": " (tập tin trên máy của bạn)",
index 4376f87..33d03f5 100644 (file)
        "externaldberror": "עס איז אדער פארגעקומען אן אויטענטיקאציע דאטנבאזע פעלער אדער איר זענט נישט ערמעגליכט צו דערהיינטיגן אייער דרויסנדיגע קאנטע.",
        "login": "אַרײַנלאָגירן",
        "nav-login-createaccount": "ארײַנלאָגירן / זיך אײַנשרײַבן",
-       "loginprompt": "איר מוסט ערלויבן קיכלעך (\"cookies\") אויף צו אַרײַנלאָגירן אינעם {{SITENAME}}.",
        "userlogin": "ארײַנלאָגירן / זיך אײַנשרײַבן",
        "userloginnocreate": "אַרײַנלאגירן",
        "logout": "אַרױסלאָגירן",
        "revdelete-text-text": "אויסגעמעקטע ווערסיעס וועלן נאך דערשיינען אין דער בלאט־היסטאריע, אבער טייל פון זייער אינהאלט וועט נישט זײַן צוגאנגבאר צום עולם.",
        "revdelete-text-file": "אויסגעמעקטע טעקע ווערסיעס וועלן נאך דערשיינען אין דער בלאט־היסטאריע, אבער טייל פון זייער אינהאלט וועט נישט זײַן צוגאנגבאר צום עולם.",
        "logdelete-text": "אויסגעמעקטע לאגביכער־געשעענישן וועלן נאך דערשיינען אינעם לאגבוך, אבער טייל פון זייער אינהאלט וועט נישט זײַן צוגאנגבאר צום עולם.",
-       "revdelete-text-others": "×\90× ×\93ערע ×¡×\99ס×\90פ×\9f ×\91×\99×\99 {{SITENAME}} ×\95×\95×¢×\9c×\9f × ×\90×\9a ×§×¢× ×¢×\9f ×¦×\95ק×\95×\9e×¢×\9f ×¦×\95×\9d ×\91×\90×\94×\90×\9c×\98×¢× ×¢×\9d ×\90×\99× ×\94×\90×\9c×\98 ×\90×\95×\9f ×§×¢× ×¢×\9f ×\90×\99×\9d ×¦×\95ר×\99קש×\98×¢×\9c×\9f ×\93×\95ר×\9b×\9f ×\96×¢×\9c×\91×\9f ×\90×\99×\99×\91ערפ×\9c×\90×\9a, סײַדן ווען מען שטעלט נאך באשרענקונגען.",
+       "revdelete-text-others": "×\90× ×\93ערע ×¡×\99ס×\90פ×\9f ×\95×\95×¢×\9c×\9f × ×\90×\9a ×§×¢× ×¢×\9f ×¦×\95ק×\95×\9e×¢×\9f ×¦×\95×\9d ×\91×\90×\94×\90×\9c×\98×¢× ×¢×\9d ×\90×\99× ×\94×\90×\9c×\98 ×\90×\95×\9f ×§×¢× ×¢×\9f ×\90×\99×\9d ×¦×\95ר×\99קש×\98×¢×\9c×\9f, סײַדן ווען מען שטעלט נאך באשרענקונגען.",
        "revdelete-confirm": "זייט אזוי גוט און באשטעטיקט אז דאס איז טאקע אייער כוונה, אז איר פארשטייט די קאנסעקווענצן, און אז איר טוט דאס לויט  [[{{MediaWiki:Policy-url}}|דער פאליסי]].",
        "revdelete-suppress-text": "אונטערדרוקן זאל בלויז גענוצט ווערן '''נאר''' אין די פאלגנדע פעלער:\n* אינפארמאציע וואס קען זיין מוציא שם רע\n* אויפדעקונג פון פריוואטקייט אינפארמאציע\n*: ''היים אדרעסן, טעלעפאן נומערן, נאציאנאלע אידענטיפיקאציע נומערן, א.א.וו.''",
        "revdelete-legend": "שטעלט ווייזונג באגרענעצונגען",
        "right-deletedtext": "באַקוקן אויסגעמעקטן טעקסט און ענדערונגען צווישן אויסגעמעקטע ווערסיעס",
        "right-browsearchive": "זוכן אויסגעמעקטע בלעטער",
        "right-undelete": "צוריקשטעלן א בלאט",
-       "right-suppressrevision": "קוק-איבער און דריי-צוריק רעוויזיעס באהאלטן פון אדימיניסטראטורן",
+       "right-suppressrevision": "איבערקוקן, באהאלטן און אויפדעקן געוויסע רעוויזיעס פון בלעטער פאר אלע באניצער",
+       "right-viewsuppressed": "באקוקן רעוויזיעס באהאלטן פון אלע באניצער",
        "right-suppressionlog": "זען פריוואַטע לאגביכער",
        "right-block": "בלאקירן אַנדערע באַניצער פֿון רעדאַקטירן",
        "right-blockemail": "בלאקירן א באַניצער פֿון שיקן ע־פאסט",
        "license": "ליצענץ:",
        "license-header": "ליצענץ:",
        "nolicense": "גארנישט",
+       "licenses-edit": "רעדאקטירן ליצענץ אפציעס",
        "license-nopreview": "(פֿאראויסקוק נישט פֿאַראַן)",
        "upload_source_url": " (א גילטיקע , צוגעגנלעכער URL)",
        "upload_source_file": "(א טעקע אויף אײַער קאמפיוטער)",
+       "listfiles-delete": "אויסמעקן",
        "listfiles-summary": "דער דאזיקער באזונדערער בלאט ווייזט אלע ארויפגעלאדענע טעקעס.",
        "listfiles_search_for": "זוכן פֿאַר מעדיע נאָמען:",
        "imgfile": "טעקע",
        "wantedpages-badtitle": "אומגילטיקער טיטל אין רעזולטאַט: $1",
        "wantedfiles": "געזוכטע טעקעס",
        "wantedfiletext-cat": "די פֿאלגנדע טעקעס ווערן געניצט אבער זיי עקזיסטירן נישט. טעקעס פון פֿרעמדע רעפאזיטאריעס קענען ווערן אריינגערעכנט טראץ זיי עקזיסטירן יא. אזעלכע גרייזן וועלן ווערן <del>אויסגעשריכן </del>. דערצו, בלעטער וואס ניצן אומעקזיסטירנדע טעקעס ווערן אריינגערעכנט אין [[:$1]].",
+       "wantedfiletext-nocat-noforeign": "די פאלגנדע טעקעס ווערן געניצט אבער זענען נישט פאראן.",
        "wantedtemplates": "געזוכטע מוסטערן",
        "mostlinked": "מערסט פֿארבינדענע בלעטער",
        "mostlinkedcategories": "מערסט פֿארבינדענע קאטעגאריעס",
        "api-error-badtoken": "אינערלעכער גרײַז: סימן טויג נישט.",
        "api-error-copyuploaddisabled": "אַרויפֿלאָדן דורך URL איז אומאַקטיווירט אויף דעם סערווירער.",
        "api-error-duplicate": "שוין דאָ אין דער וויקי {{PLURAL:$1|[$2 ָאַן אַנדער טעקע]|[$2 אַנדערע טעקעס]}} מיטן זעלבן תוכן.",
-       "api-error-duplicate-archive": "ס'איז שוין געווען {{PLURAL:$1| [ $2 אַן אַנדער טעקע] | געווען [ $2 עטלעכע אַנדערע טעקעס]}} אויף דעם פּלאַץ מיט דעם זעלביקן תוכן, אָבער {{PLURAL:$1| עס איז | זיי זענען}}  געווארן אויסגעמעקט.",
-       "api-error-duplicate-archive-popup-title": "פֿאַרטאפלטע {{PLURAL:$1| טעקע | טעקעס}} וואָס זענען שוין געווארן אויסגעמעקט",
+       "api-error-duplicate-archive": "ס'איז שוין געווען {{PLURAL:$1| [$2 אַן אַנדער טעקע] | [$1 עטלעכע אַנדערע טעקעס]}} אויף דעם פּלאַץ מיט דעם זעלביקן תוכן, אָבער {{PLURAL:$1| עס איז | זיי זענען}}  געווארן אויסגעמעקט.",
+       "api-error-duplicate-archive-popup-title": "פֿאַרטאפלטע {{PLURAL:$1| טעקע וואָס איז| טעקעס וואָס זענען}}  שוין געווארן אויסגעמעקט",
        "api-error-duplicate-popup-title": "פֿאַרטאפלטע {{PLURAL:$1| טעקע | טעקעס}}",
        "api-error-empty-file": "די טעקע וואָס איר האט אײַנגעגעבן איז ליידיג.",
        "api-error-emptypage": "שאפן נייע ליידיקע בלעטער איז נישט ערלויבט.",
index a20b6c3..71d1d7b 100644 (file)
        "revdelete-text-text": "已删除版本仍将在页面历史中显示,但涉及部分的内容将对公众不可见。",
        "revdelete-text-file": "已删除文件版本仍将在文件历史中显示,但涉及部分的内容将对公众不可见。",
        "logdelete-text": "已删除日志事件仍将在日志中显示,但涉及部分的内容将对公众不可见。",
-       "revdelete-text-others": "å\9c¨{{SITENAME}}ç\9a\84å\85¶ä»\96管ç\90\86å\91\98ä»\8då°\86å\8f¯ä»¥è®¿é\97®é\9a\90è\97\8få\86\85容ï¼\8c并å\9c¨ä¸\80å®\9aæ\9d¡ä»¶ä¸\8bè\83½å¤\9fé\80\9aè¿\87ç\9b¸å\90\8cç\95\8cé\9d¢å\8f\96æ¶\88å\88 é\99¤,除非附加条件被设定。",
+       "revdelete-text-others": "å\85¶ä»\96管ç\90\86å\91\98ä»\8då°\86å\8f¯ä»¥è®¿é\97®é\9a\90è\97\8få\86\85容并å\88 é\99¤å®\83,除非附加条件被设定。",
        "revdelete-confirm": "请确认该操作,明白其后果,并确保该操作符合[[{{MediaWiki:Policy-url}}|方针]]。",
        "revdelete-suppress-text": "阻止应'''仅'''用于以下情况:\n* 潜在的诽谤信息\n* 不合适的个人信息\n*: ''家庭地址、电话号码和社保号码等。''",
        "revdelete-legend": "设置可见性之限制",
        "right-deletedtext": "查看已被删除的文本及已删除版本间的差异",
        "right-browsearchive": "搜索已被删除的页面",
        "right-undelete": "还原页面",
-       "right-suppressrevision": "复核并还原对管理员隐藏的版本",
+       "right-suppressrevision": "查看、隐藏与取消隐藏任何用户对页面做出的特定版本",
+       "right-viewsuppressed": "查看被隐藏的任何用户的修订",
        "right-suppressionlog": "查看非公开日志",
        "right-block": "阻止其他用户编辑",
        "right-blockemail": "阻止用户发送电子邮件",
index d6efb45..1658ae8 100644 (file)
        "createacct-emailoptional": "電子郵件位址 (選填)",
        "createacct-email-ph": "輸入您的電子郵件位址",
        "createacct-another-email-ph": "輸入電子郵件位址",
-       "createaccountmail": "使ç\94¨è\87¨æ\99\82ç\9a\84é\9a¨æ©\9få¯\86碼ï¼\8c並å°\87å®\83å¯\84å\88°æ\8c\87å®\9aç\9a\84é\9b»å­\90é\83µä»¶å\9c°址",
+       "createaccountmail": "使ç\94¨è\87¨æ\99\82ç\9a\84é\9a¨æ©\9få¯\86碼ï¼\8c並å°\87å®\83å\82³é\80\81å\88°æ\8c\87å®\9aç\9a\84é\9b»å­\90é\83µä»¶ä½\8d址",
        "createacct-realname": "真實姓名 (選填)",
        "createaccountreason": "原因:",
        "createacct-reason": "原因",
        "passwordremindertext": "不明人士 (可能是您自己,來自 IP 位址 $1) 要求重設在 {{SITENAME}} ($4) 的密碼。\n給使用者 \"$2\" 的臨時密碼設為 \"$3\"。\n如果這個動作是您做的,您需要立即登入並設定一個新的密碼,\n您的臨時密碼將於{{PLURAL:$5|一|$5}}天內過期。\n\n如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
        "noemail": "使用者 \"$1\" 未登記電子郵件位址。",
        "noemailcreate": "您需要提供一個有效的電子郵件位址。",
-       "passwordsent": "使用者 \"$1\" 的新密碼已寄至當出登記的電子郵件址,\n請稍後收到信件後再登入。",
+       "passwordsent": "使用者 \"$1\" 的新密碼已寄至當出登記的電子郵件址,\n請稍後收到信件後再登入。",
        "blocked-mailpassword": "您的 IP 位址已被封鎖不允許編輯,密碼復原的功能也同樣被禁止使用以防止被濫用。",
        "eauthentsent": "已寄出一封確認信到您所設定的電子郵件位址。\n在未收到其它電子郵件前,您必須先依照信件中的指示,確認這個帳號確實是您本人。",
        "throttled-mailpassword": "密碼重設的電子郵件已經在最近 $1 小時內寄出。\n為防止濫用,$1 小時內只能寄出一次密碼重設信件。",
-       "mailerror": "å¯\84å\87º電子郵件錯誤:$1",
+       "mailerror": "å\82³é\80\81電子郵件錯誤:$1",
        "acct_creation_throttle_hit": "使用您目前的 IP 位址的訪客在最近一天建立了 {{PLURAL:$1|1 個帳號|$1 個帳號}},已超出系統允許的上限。\n因此,目前無法讓使用此 IP 位址的訪客建立帳號。",
        "emailauthenticated": "您的電子郵件位址已確認於 $2 的 $3。",
-       "emailnotauthenticated": "您的電子郵件址尚未確認,\n尚不會寄出以下功能的電子郵件給您。",
+       "emailnotauthenticated": "您的電子郵件址尚未確認,\n尚不會寄出以下功能的電子郵件給您。",
        "noemailprefs": "在您的偏好設定中設定電子郵件地址,讓您可以使用這些功能。",
        "emailconfirmlink": "確認您的電子郵件位址",
-       "invalidemailaddress": "無法接受格式不正確的電子郵件地址,\n請輸入正確的電子郵件地址格式或略過填寫該欄位。",
+       "invalidemailaddress": "無法接受格式不正確的電子郵件位址,\n請輸入正確的電子郵件位址格式或略過填寫該欄位。",
        "cannotchangeemail": "此 Wiki 不允許更改帳號的電子郵件位址。",
-       "emaildisabled": "此網ç«\99ä¸\8dè\83½å¯\84å\87º電子郵件。",
+       "emaildisabled": "此網ç«\99ä¸\8dè\83½å\82³é\80\81電子郵件。",
        "accountcreated": "已建立帳號",
        "accountcreatedtext": "使用者帳號 [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|對話]]) 已建立。",
        "createaccount-title": "{{SITENAME}} 的帳號建立",
        "pt-createaccount": "建立帳號",
        "pt-userlogout": "登出",
        "php-mail-error-unknown": "PHP 的 mail() 函數發生不明錯誤。",
-       "user-mail-no-addy": "試å\9c\96å¯\84å\87º沒有電子郵件位址的信件。",
+       "user-mail-no-addy": "試å\9c\96å\82³é\80\81沒有電子郵件位址的信件。",
        "user-mail-no-body": "試圖寄出一個空的或異常簡短的電子郵件。",
        "changepassword": "變更密碼",
        "resetpass_announce": "要完成登入,您必須設定一個新密碼。",
        "summary-preview": "摘要預覽:",
        "subject-preview": "主旨/標題預覽:",
        "blockedtitle": "使用者已被封鎖",
-       "blockedtext": "<strong>您的使用者名稱或 IP 位址以被封鎖。</strong>\n\n您被 $1 封鎖,\n原因爲 <em>$2</em>。\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯繫 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件址,且尚未被封鎖郵件功能,則您可透過 \"傳送電子郵件給這位使用者\" 的功能來聯絡相關管理員。\n您目刖的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
-       "autoblockedtext": "因先前的另一位使用者被 $1 封鎖,您的 IP 位址已被自動封鎖。\n原因是:\n\n:<em>$2</em>\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯繫 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件址,且尚未被封鎖郵件功能,則您可透過 \"傳送電子郵件給這位使用者\" 的功能來聯絡相關管理員。\n您目刖的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
+       "blockedtext": "<strong>您的使用者名稱或 IP 位址以被封鎖。</strong>\n\n您被 $1 封鎖,\n原因爲 <em>$2</em>。\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯繫 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件址,且尚未被封鎖郵件功能,則您可透過 \"傳送電子郵件給這位使用者\" 的功能來聯絡相關管理員。\n您目刖的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
+       "autoblockedtext": "因先前的另一位使用者被 $1 封鎖,您的 IP 位址已被自動封鎖。\n原因是:\n\n:<em>$2</em>\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯繫 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件址,且尚未被封鎖郵件功能,則您可透過 \"傳送電子郵件給這位使用者\" 的功能來聯絡相關管理員。\n您目刖的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
        "blockednoreason": "未說明原因",
        "whitelistedittext": "請先 $1 才可編輯頁面。",
        "confirmedittext": "在編輯此頁之前您必須確認您的電子郵件位址。\n請透過 [[Special:Preferences|偏好設定]] 設定並驗證您的電子郵件位址。",
        "diff-multi-sameuser": "(未顯示相同使用者於中間所作的 $1 次修訂)",
        "diff-multi-otherusers": "(未顯示由 $2 位使用者於中間所作的 $1 次修訂)",
        "diff-multi-manyusers": "(未顯示由超過 $2 位使用者於中間所作的 $1 次修訂)",
-       "difference-missing-revision": "{{PLURAL:$2|1次修è¨\82|$2 æ¬¡ä¿®è¨\82}}å·®ç\95°($1)ä¸\8då­\98å\9c¨ã\80\82\n\né\80\99é\80\9a常æ\98¯å\9b ç\82ºé\81\8eæ\99\82ç\9a\84é \81é\9d¢ä¿®è¨\82å·®ç\95°é\8f\88æ\8e¥被刪除。\n詳情請閱[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。",
+       "difference-missing-revision": "{{PLURAL:$2|1次修è¨\82|$2 æ¬¡ä¿®è¨\82}}å·®ç\95°($1)ä¸\8då­\98å\9c¨ã\80\82\n\né\80\99é\80\9a常æ\98¯å\9b ç\82ºé\81\8eæ\99\82ç\9a\84é \81é\9d¢ä¿®è¨\82å·®ç\95°é\80£çµ\90被刪除。\n詳情請閱[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。",
        "searchresults": "搜尋結果",
        "searchresults-title": "\"$1\" 的搜尋結果",
        "titlematches": "頁面標題符合",
        "powersearch-togglelabel": "請選擇:",
        "powersearch-toggleall": "全部",
        "powersearch-togglenone": "無",
-       "powersearch-remember": "記住選項用於以後搜",
+       "powersearch-remember": "記住選項用於以後搜",
        "search-external": "外部搜尋",
        "searchdisabled": "{{SITENAME}} 已停用搜尋功能。\n您可以改透過 Google 搜尋。\n請注意,在 Google 中搜尋到的 {{SITENAME}} 頁面內容可能不是最新的。",
        "search-error": "搜尋時發生錯誤:$1",
        "recentchangesdays-max": "最多 $1 {{PLURAL:$1|天}}",
        "recentchangescount": "預設顯示的編輯數:",
        "prefs-help-recentchangescount": "這包含最近變更、頁面歷史以及日誌。",
-       "prefs-help-watchlist-token2": "訂閱您的監視清單所需的密鑰。\n任何人只要知道密鑰就能夠讀取您的監視列表,所以請勿任意與它人共享。\n若有需要 [[Special:ResetTokens|您可重設密鑰]]。",
+       "prefs-help-watchlist-token2": "訂閱您的監視清單所需的密鑰。\n任何人只要知道密鑰就能夠讀取您的監視清单,所以請勿任意與它人共享。\n若有需要 [[Special:ResetTokens|您可重設密鑰]]。",
        "savedprefs": "您的偏好設定已儲存。",
        "timezonelegend": "時區:",
        "localtime": "當地時間:",
        "prefs-help-gender": "此偏好設定為選填欄位。\n系統會使用您選擇的方式稱呼您,對他人提及您時也會使用適當語法稱呼。\n此項資訊會被公開。",
        "email": "電子郵件",
        "prefs-help-realname": "真實姓名為選填欄位。\n若您提供真實姓名,它會用於使用者貢獻署名。",
-       "prefs-help-email": "電子郵件址為選填欄位。\n但在重設密碼時會使用,而您很有可能會忘記密。",
+       "prefs-help-email": "電子郵件址為選填欄位。\n但在重設密碼時會使用,而您很有可能會忘記密。",
        "prefs-help-email-others": "您亦可以選擇讓其他使用者用電子郵件與您聯繫,透過您的使用者或對話頁面上方的連結。\n您的電子郵件位址不會實際告知給其他要聯絡您的使用者。",
        "prefs-help-email-required": "電子郵件地址是必填項目。",
        "prefs-info": "基本資訊",
        "right-editmyuserjs": "編輯自己的使用者 JavaScript 檔",
        "right-viewmywatchlist": "檢視自己的監視清單",
        "right-editmywatchlist": "編輯自己的監視清單。注意,即使無此權限,某些操作仍會新增頁面至監視清單。",
-       "right-viewmyprivateinfo": "檢視自己的私隱資料 (如:電子郵件址及真實姓名)",
+       "right-viewmyprivateinfo": "檢視自己的私隱資料 (如:電子郵件址及真實姓名)",
        "right-editmyprivateinfo": "編輯自己的私隱資料 (如:電子郵件地址及真實姓名)",
        "right-editmyoptions": "編輯自己的偏好設定",
        "right-rollback": "快速還原最後一位使用者對某一頁面的編輯",
        "action-sendemail": "傳送電子郵件",
        "action-editmywatchlist": "編輯您的監視清單",
        "action-viewmywatchlist": "檢視您的監視清單",
-       "action-viewmyprivateinfo": "æ\9f¥ç\9c\8b您的個人資料",
+       "action-viewmyprivateinfo": "檢è¦\96您的個人資料",
        "action-editmyprivateinfo": "編輯您的個人資料",
        "nchanges": "$1 次變更",
        "enhancedrc-since-last-visit": "自上次訪問已有 $1",
        "license": "授權條款:",
        "license-header": "授權條款",
        "nolicense": "尚未選擇",
+       "licenses-edit": "編輯授權條款選項",
        "license-nopreview": "(不可預覽)",
        "upload_source_url": "(有效,可公開存取的 URL)",
        "upload_source_file": "(在您電腦上的檔案)",
        "filehist-dimensions": "尺寸",
        "filehist-filesize": "檔案大小",
        "filehist-comment": "註解",
-       "imagelinks": "檔案使用",
-       "linkstoimage": "下列 $1 個頁面連結到此檔案:",
-       "linkstoimage-more": "超過$1個頁面連接到這個檔案。\n此處只列出首$1個連接到此檔案的頁面。\n您也可以查看[[Special:WhatLinksHere/$2|完整的清單]]。",
+       "imagelinks": "檔案用途",
+       "linkstoimage": "下列 {{PLURAL:$1|頁面連結|$1 個頁面連結}}到此檔案:",
+       "linkstoimage-more": "超過$1個{{PLURAL:$1|頁面連結|頁面連結}}到這個檔案。\n此處只列出{{PLURAL:$1|首個連結|首$1個連結}}到此檔案的頁面。\n您也可以檢視[[Special:WhatLinksHere/$2|完整的清單]]。",
        "nolinkstoimage": "沒有頁面連接到本檔案。",
-       "morelinkstoimage": "檢視連到這個檔案的[[Special:WhatLinksHere/$1|更多連結]]。",
+       "morelinkstoimage": "檢視連到這個檔案的[[Special:WhatLinksHere/$1|更多連結]]。",
        "linkstoimage-redirect": "$1 (檔案重新導向) $2",
        "duplicatesoffile": "以下 $1 個檔案與此檔案重覆 ([[Special:FileDuplicateSearch/$2|了解詳細資訊]]):",
        "sharedupload": "此檔案來自 $1 且可能被其他專案所使用。",
        "wantedpages": "需要的頁面",
        "wantedpages-badtitle": "在結果組上的無效標題: $1",
        "wantedfiles": "需要的檔案",
-       "wantedfiletext-cat": "以ä¸\8bæª\94æ¡\88被使ç\94¨ï¼\8cä½\86ä¸\8då­\98å\9c¨ã\80\82å¤\96é\83¨å\84²å­\98庫ç\9a\84æ\96\87件儘管現有,但可能會在此列出,任何此類的誤報將被<del>剔除</del>。此外,內嵌了不存在的檔案的網頁將在[[:$1]]列出。",
+       "wantedfiletext-cat": "以ä¸\8bæª\94æ¡\88被使ç\94¨ï¼\8cä½\86ä¸\8då­\98å\9c¨ã\80\82å¤\96é\83¨å\84²å­\98庫ç\9a\84æª\94æ¡\88儘管現有,但可能會在此列出,任何此類的誤報將被<del>剔除</del>。此外,內嵌了不存在的檔案的網頁將在[[:$1]]列出。",
        "wantedfiletext-cat-noforeign": "下列檔案已被使用但不存在。 除此之外,頁面已內嵌但不存在的檔案列於 [[:$1]]。",
        "wantedfiletext-nocat": "以下檔案被使用,但不存在。外部儲存庫的文件儘管現有,但可能會在此列出,任何此類的誤報將被<del>剔除</del>。",
        "wantedfiletext-nocat-noforeign": "下列檔案已被使用但不存在。",
        "wantedtemplates": "需要的樣版",
        "mostlinked": "最多連結頁面",
        "mostlinkedcategories": "最多連結分類",
-       "mostlinkedtemplates": "最多被嵌入包含的頁面",
+       "mostlinkedtemplates": "被引用最多的頁面",
        "mostcategories": "最多分類頁面",
        "mostimages": "最多連結檔案",
        "mostinterwikis": "最多 Interwiki 連結的頁面",
        "allpages-hide-redirects": "隱藏重新導向頁面",
        "cachedspecial-viewing-cached-ttl": "你正在瀏覽本頁的緩存版本,至多可能存在$1的延遲。",
        "cachedspecial-viewing-cached-ts": "您正在閱讀此頁的緩存版本,這可能不是完整的版本。",
-       "cachedspecial-refresh-now": "æ\9f¥ç\9c\8b最新。",
+       "cachedspecial-refresh-now": "檢è¦\96最新。",
        "categories": "頁面分類",
        "categoriespagetext": "下列為包含頁面或媒體的{{PLURAL:$1|分類}}。\n[[Special:UnusedCategories|未使用的分類]] 不會在此顯示。\n請參考 [[Special:WantedCategories|需要的分類]]。",
        "categoriesfrom": "顯示由此項起之分類:",
        "deletedcontributions": "已刪除的使用者貢獻",
        "deletedcontributions-title": "已刪除的使用者貢獻",
        "sp-deletedcontributions-contribs": "貢獻",
-       "linksearch": "å¤\96é\83¨é\8f\88æ\8e¥æ\90\9cç´¢",
+       "linksearch": "å¤\96é\83¨é\80£çµ\90æ\90\9cå°\8b",
        "linksearch-pat": "搜尋網址:",
        "linksearch-ns": "命名空間:",
        "linksearch-ok": "搜尋",
        "trackingcategories-nodesc": "並無說明。",
        "trackingcategories-disabled": "分類被禁用",
        "mailnologin": "沒有傳送位址",
-       "mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件址才可以傳送信件給其他使用者。",
-       "emailuser": "寄信給此使用者",
-       "emailuser-title-target": "寄信給此{{GENDER:$1|使用者}}",
-       "emailuser-title-notarget": "寄信給使用者",
+       "mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件址才可以傳送信件給其他使用者。",
+       "emailuser": "電郵聯繫該使用者",
+       "emailuser-title-target": "電郵聯繫該{{GENDER:$1|使用者}}",
+       "emailuser-title-notarget": "電郵聯繫使用者",
        "emailpage": "E-mail 給使用者",
-       "emailpagetext": "您可以使用以下表格傳送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
+       "emailpagetext": "您可以使用以下表格傳送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
        "defemailsubject": "來自使用者 \"$1\" 於 {{SITENAME}} 寄來的電子郵件",
        "usermaildisabled": "使用者電子郵件已停用",
        "usermaildisabledtext": "您不可傳送信件到這個 Wiki 上的其他使用者",
        "emailsend": "傳送",
        "emailccme": "傳送一份副本到我的電子郵件信箱。",
        "emailccsubject": "您寄給 $1 的訊息副本:$2",
-       "emailsent": "電子郵件已出",
-       "emailsenttext": "您的電子郵件訊息已經出。",
+       "emailsent": "電子郵件已出",
+       "emailsenttext": "您的電子郵件訊息已經出。",
        "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"傳送信件給使用者\" 功能寄給 $2。",
        "usermessage-summary": "留給系統訊息。",
        "usermessage-editor": "系統訊息",
        "revertpage-nouser": "已還隱藏使用者的編輯為最後 {{GENDER:$1|[[User:$1|$1]]}} 修訂的版本",
        "rollback-success": "已還原 $1 做的編輯;\n更變回最後由 $2 修訂的版本。",
        "sessionfailure-title": "登入資訊失敗",
-       "sessionfailure": "似乎您的登會話有問題;\n為了防止會話劫持,這個操作已經被取消。\n請返回先前的頁面,重新載入該頁面,然後重試。",
+       "sessionfailure": "似乎您的登會話有問題;\n為了防止會話劫持,這個操作已經被取消。\n請返回先前的頁面,重新載入該頁面,然後重試。",
        "protectlogpage": "保護日誌",
        "protectlogtext": "以下為變更頁面保護的列表。\n請參考 [[Special:ProtectedPages|受保護頁面列表]] 檢視目前受保護頁面。",
        "protectedarticle": "已保護 \"[[$1]]\"",
        "unblock": "解除封鎖使用者",
        "blockip": "封鎖使用者",
        "blockip-legend": "封鎖使用者",
-       "blockiptext": "填寫以下單據可封鎖特定 IP 位或使用者名稱的存取權限。\n這個動作應用來避免破壞行為,可根據 [[{{MediaWiki:Policy-url}}|管理政策]]。\n請在下方填寫一個具體的原因 (例如:引述一段破壞頁面的事實)。",
+       "blockiptext": "填寫以下單據可封鎖特定 IP 位或使用者名稱的存取權限。\n這個動作應用來避免破壞行為,可根據 [[{{MediaWiki:Policy-url}}|管理政策]]。\n請在下方填寫一個具體的原因 (例如:引述一段破壞頁面的事實)。",
        "ipaddressorusername": "IP 位址或使用者名稱:",
        "ipbexpiry": "期限:",
        "ipbreason": "原因:",
        "blocklog-showsuppresslog": "此使用者先前被封鎖並且隱藏過。\n以下為禁止顯示紀錄以供參考:",
        "blocklogentry": "已封鎖 [[$1]] 的期限至 $2 $3",
        "reblock-logentry": "更改 [[$1]] 的封鎖期限至 $2 $3",
-       "blocklogtext": "æ­¤ç\82ºä½¿ç\94¨è\80\85ç\9a\84å°\81é\8e\96å\8f\8aå\8f\96æ¶\88å°\81é\8e\96è¨\98é\8c\84ã\80\82\nä¸\8då\8c\85è\87ªå\8b\95å°\81é\8e\96ç\9a\84 IP ä½\8då\9d\80ã\80\82\nè«\8bå\8f\83è\80\83 [[Special:BlockList|å°\81é\8e\96æ¸\85å\96®]] ä»¥æ\9f¥ç\9c\8b目前的封鎖。",
+       "blocklogtext": "æ­¤ç\82ºä½¿ç\94¨è\80\85ç\9a\84å°\81é\8e\96å\8f\8aå\8f\96æ¶\88å°\81é\8e\96è¨\98é\8c\84ã\80\82\nä¸\8då\8c\85è\87ªå\8b\95å°\81é\8e\96ç\9a\84 IP ä½\8då\9d\80ã\80\82\nè«\8bå\8f\83è\80\83 [[Special:BlockList|å°\81é\8e\96æ¸\85å\96®]] ä»¥æª¢è¦\96目前的封鎖。",
        "unblocklogentry": "已解封 $1",
        "block-log-flags-anononly": "僅限匿名使用者",
        "block-log-flags-nocreate": "停用帳號建立",
        "ip_range_invalid": "無效的 IP 範圍。",
        "ip_range_toolarge": "不允許封鎖範圍大於 /$1。",
        "proxyblocker": "代理封鎖器",
-       "proxyblockreason": "因您的 IP 位址是開放代理伺服器,已被封鎖。\n請聯繫您的網服務供應商或您所在組織的技術支援,告知他們此嚴重的安全性問題。",
-       "sorbsreason": "您的IP位址在{{SITENAME}}中被 DNSBL列為屬於開放代理服務器。",
+       "proxyblockreason": "因您的 IP 位址是開放代理伺服器,已被封鎖。\n請聯繫您的網服務供應商或您所在組織的技術支援,告知他們此嚴重的安全性問題。",
+       "sorbsreason": "您的 IP 位址在{{SITENAME}}中被 DNSBL列為屬於開放代理服務器。",
        "sorbs_create_account_reason": "您連線到 {{SITENAME}} 的 IP 位址被 DNSBL 列為開放代理伺服器。\n您不能建立帳號。",
        "xffblockreason": "您的 IP 位址使用 X-Forwarded-For 標頭,您或您使用的代理伺服器已被封鎖。\n封鎖的原因為:$1",
        "cant-see-hidden-user": "您欲封鎖的使用者已經被封鎖並且隱藏。\n您沒有隱藏使用者的權限,您無法檢視或編輯該使用者的封鎖狀態。",
        "tooltip-pt-userpage": "您的使用者頁面",
        "tooltip-pt-anonuserpage": "您編輯使用的 IP 位址所對應的使用者頁面",
        "tooltip-pt-mytalk": "您的對話頁面",
-       "tooltip-pt-anontalk": "對於來自此IP地址編輯的對話",
+       "tooltip-pt-anontalk": "對於來自此 IP 位址編輯的對話",
        "tooltip-pt-preferences": "您的偏好設定",
        "tooltip-pt-watchlist": "您監視變更頁面清單",
        "tooltip-pt-mycontris": "您的貢獻清單",
        "pageinfo-redirects-name": "指向此頁面的重新導向頁面數量",
        "pageinfo-subpages-name": "此頁面的子頁面",
        "pageinfo-subpages-value": "$1 ($2 個重新導向頁面; $3 個非重新導向頁面)",
-       "pageinfo-firstuser": "頁面建立者",
-       "pageinfo-firsttime": "é \81é\9d¢å\89µå»º日期",
+       "pageinfo-firstuser": "頁面建立者",
+       "pageinfo-firsttime": "é \81é\9d¢å»ºç«\8b日期",
        "pageinfo-lastuser": "最近編輯者",
-       "pageinfo-lasttime": "最編輯日期",
+       "pageinfo-lasttime": "最編輯日期",
        "pageinfo-edits": "編輯總次數",
        "pageinfo-authors": "作者總數",
        "pageinfo-recent-edits": "最近編輯次數 (過去$1內)",
-       "pageinfo-recent-authors": "最近作者數",
+       "pageinfo-recent-authors": "最近作者數",
        "pageinfo-magic-words": "魔術{{PLURAL:$1|字}} ($1)",
        "pageinfo-hidden-categories": "隱藏{{PLURAL:$1|分類}} ($1)",
-       "pageinfo-templates": "引用樣版 ($1)",
+       "pageinfo-templates": "引用樣版 ($1)",
        "pageinfo-transclusions": "頁面被引用於 ($1)",
        "pageinfo-toolboxlink": "頁面資訊",
        "pageinfo-redirectsto": "重新導向至",
        "namespacesall": "全部",
        "monthsall": "全部",
        "confirmemail": "確認郵箱位址",
-       "confirmemail_noemail": "您尚未於 [[Special:Preferences|偏好設定]] 輸入一個有效的電子郵件址。",
-       "confirmemail_text": "{{SITENAME}}要求您在使用郵件功能之前驗證您的郵箱位址。\n點擊以下按鈕可向您的郵箱發送一封確認郵件。該郵件包含有一行代碼連結;\n請在您的瀏覽器中加載此連結以確認您的郵箱位址是有效的。",
-       "confirmemail_pending": "確認碼已送至您的電子郵件,\n若您才剛建立好您的帳號,可能需要稍後幾分鐘才能收到。\n若沒有收到,請再重新申請一次確認碼。",
+       "confirmemail_noemail": "您尚未於 [[Special:Preferences|偏好設定]] 輸入一個有效的電子郵件址。",
+       "confirmemail_text": "{{SITENAME}}要求您在使用郵件功能之前驗證您的郵箱位址。\n點選以下按鈕可向您的郵箱傳送一封確認郵件。該郵件包含有一行代碼連結;\n請在您的瀏覽器中載入此連結以確認您的郵箱位址是有效的。",
+       "confirmemail_pending": "確認碼已送至您的電子郵件,\n若您才剛建立好您的帳號,可能需要稍後幾分鐘才能收到。\n若沒有收到,請再重新申請一次確認碼。",
        "confirmemail_send": "郵發確認代碼",
-       "confirmemail_sent": "確認郵件已發送。",
-       "confirmemail_oncreate": "一個確認代碼已經被送到您的郵箱。該代碼並不要求您進行登入,\n但若您要啟用在此 wiki 上的任何基於電子郵件的功能,您必須先提交此代碼。",
-       "confirmemail_sendfailed": "{{SITENAME}}無法送確認郵件,請檢查郵箱位址是否包含非法字元。\n\n郵件傳送員回應: $1",
+       "confirmemail_sent": "確認郵件已寄出。",
+       "confirmemail_oncreate": "一個確認代碼已經被送到您的郵箱。該代碼並不要求您進行登入,\n但若您要啟用在此 wiki 上的任何基於電子郵件的功能,您必須先提交此代碼。",
+       "confirmemail_sendfailed": "{{SITENAME}}無法送確認郵件,請檢查郵箱位址是否包含非法字元。\n\n郵件傳送員回應: $1",
        "confirmemail_invalid": "無效的確認碼,該代碼可能已經過期。",
        "confirmemail_needlogin": "您需要$1以確認您的郵箱位址。",
-       "confirmemail_success": "您的郵箱已經被確認。您現在可以[[Special:UserLogin|登]]並使用此網站了。",
+       "confirmemail_success": "您的郵箱已經被確認。您現在可以[[Special:UserLogin|登]]並使用此網站了。",
        "confirmemail_loggedin": "您的郵箱位址現下已被確認。",
        "confirmemail_subject": "{{SITENAME}}郵箱位址確認",
-       "confirmemail_body": "不明人士 (可能是您自己,來自 IP 位址 $1)  已在 {{SITENAME}} 註冊了一個帳號 \"$2\" 並使用了此電子郵件址。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
-       "confirmemail_body_changed": "不明人士 (可能是您自己,來自 IP 位址 $1)  已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件址更改至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
-       "confirmemail_body_set": "不明人士 (可能是您自己,來自 IP 位址 $1)  已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件址設定至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
+       "confirmemail_body": "不明人士 (可能是您自己,來自 IP 位址 $1)  已在 {{SITENAME}} 註冊了一個帳號 \"$2\" 並使用了此電子郵件址。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
+       "confirmemail_body_changed": "不明人士 (可能是您自己,來自 IP 位址 $1)  已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件址更改至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
+       "confirmemail_body_set": "不明人士 (可能是您自己,來自 IP 位址 $1)  已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件址設定至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
        "confirmemail_invalidated": "電郵地址確認已取消",
        "invalidateemail": "取消電郵確認",
        "scarytranscludedisabled": "[Interwiki 轉換代碼不可用]",
        "scarytranscludefailed": "[樣版 $1 讀取失敗]",
        "scarytranscludefailed-httpstatus": "[樣版 $1 讀取失敗:HTTP $2]",
-       "scarytranscludetoolong": "[URL 址太長]",
+       "scarytranscludetoolong": "[URL 址太長]",
        "deletedwhileediting": "<strong>警告:</strong>此頁在您開始編輯之後已經被刪除﹗",
        "confirmrecreate": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,原因為:\n: <em>$2</em>\n請確認您是否真的要重新建立此頁面。",
        "confirmrecreate-noreason": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,請確認您是否真的要重新建立此頁面。",
        "htmlform-int-toolow": "您所指定的值低於最小值$1",
        "htmlform-int-toohigh": "您所指定的值高於最大值$1",
        "htmlform-required": "此值是必填項",
-       "htmlform-submit": "提交",
+       "htmlform-submit": "送出",
        "htmlform-reset": "還原更改",
        "htmlform-selectorother-other": "其他",
        "htmlform-no": "否",
        "feedback-subject": "主旨:",
        "feedback-message": "訊息:",
        "feedback-cancel": "取消",
-       "feedback-submit": "提交反饋",
+       "feedback-submit": "送出回饋",
        "feedback-adding": "正在頁面添加反饋...",
        "feedback-error1": "錯誤:從API返回無法識別的結果",
        "feedback-error2": "錯誤:編輯失敗",
        "api-error-badaccess-groups": "您沒有權限在此 Wiki 上傳檔案。",
        "api-error-badtoken": "內部錯誤:標記無效。",
        "api-error-copyuploaddisabled": "通過URL上傳的功能已被此伺服器禁用。",
-       "api-error-duplicate": "å\9c¨ç¶²ç«\99ä¸\8aå·²ç¶\93å\85·æ\9c\89ç\9b¸å\90\8cå\85§å®¹ç\9a\84{{PLURAL:$1|[$2 å\8f¦ä¸\80å\80\8bæ\96\87件]|[$2 å\8f¦ä¸\80äº\9bæ\96\87件]}}。",
-       "api-error-duplicate-archive": "å\9c¨ç¶²ç«\99ä¸\8aæ\9b¾ç¶\93å\85·æ\9c\89ç\9b¸å\90\8cå\85§å®¹ç\9a\84{{PLURAL:$1|[$2 å\8f¦ä¸\80å\80\8bæ\96\87件]|[$2 å\8f¦ä¸\80äº\9bæ\96\87件]}},但已被刪除。",
+       "api-error-duplicate": "å\9c¨ç¶²ç«\99ä¸\8aå·²ç¶\93å\85·æ\9c\89ç\9b¸å\90\8cå\85§å®¹ç\9a\84{{PLURAL:$1|[$2 å\8f¦ä¸\80å\80\8bæª\94æ¡\88]|[$2 å\8f¦ä¸\80äº\9bæª\94æ¡\88]}}。",
+       "api-error-duplicate-archive": "å\9c¨ç¶²ç«\99ä¸\8aæ\9b¾ç¶\93å\85·æ\9c\89ç\9b¸å\90\8cå\85§å®¹ç\9a\84{{PLURAL:$1|[$2 å\8f¦ä¸\80å\80\8bæª\94æ¡\88]|[$2 å\8f¦ä¸\80äº\9bæª\94æ¡\88]}},但已被刪除。",
        "api-error-duplicate-archive-popup-title": "已被刪除的重複{{PLURAL:$1|文件}}。",
-       "api-error-duplicate-popup-title": "é\87\8dè¤\87ç\9a\84{{PLURAL:$1|æ\96\87件}}。",
+       "api-error-duplicate-popup-title": "é\87\8dè¤\87ç\9a\84{{PLURAL:$1|æª\94æ¡\88}}。",
        "api-error-empty-file": "您提交的檔案是空的。",
        "api-error-emptypage": "不許創建沒有內容的新頁面。",
-       "api-error-fetchfileerror": "å\85§é\83¨é\8c¯èª¤ï¼\9aç\8d²å\8f\96æ\96\87件時發生錯誤。",
+       "api-error-fetchfileerror": "å\85§é\83¨é\8c¯èª¤ï¼\9aç\8d²å\8f\96æª\94æ¡\88時發生錯誤。",
        "api-error-fileexists-forbidden": "以\" $1 \"命名的檔案已經存在,並且不能被重寫。",
        "api-error-fileexists-shared-forbidden": "以\" $1 \"命名的檔案已經存在於共用檔案儲存庫上,並且不能被重寫。",
        "api-error-file-too-large": "您提交的檔案太大了。",
        "api-error-invalid-file-key": "內部錯誤:於臨時儲存庫中查無檔案。",
        "api-error-missingparam": "內部錯誤:請求中缺少參數。",
        "api-error-missingresult": "內部錯誤:無法確定複製是否成功。",
-       "api-error-mustbeloggedin": "您必須登錄後再上傳文件。",
+       "api-error-mustbeloggedin": "您必須登入後再上傳檔案。",
        "api-error-mustbeposted": "內部錯誤:請求需要 HTTP POST。",
-       "api-error-noimageinfo": "文件成功,但伺服器沒有給我們任何該文件的信息。",
+       "api-error-noimageinfo": "上傳成功,但伺服器沒有給我們任何該檔案的資訊。",
        "api-error-nomodule": "內部錯誤:缺少上傳模塊集。",
        "api-error-ok-but-empty": "內部錯誤:伺服器沒有響應。",
        "api-error-overwrite": "不允許覆蓋現有檔案。",
        "api-error-timeout": "伺服器沒有在預期的時間內回應。",
        "api-error-unclassified": "發生未知錯誤。",
        "api-error-unknown-code": "未知錯誤:$1",
-       "api-error-unknown-error": "å\85§é\83¨é\8c¯èª¤ï¼\9aå\98\97試ä¸\8aå\82³æ\96\87件時出錯。",
+       "api-error-unknown-error": "å\85§é\83¨é\8c¯èª¤ï¼\9aå\98\97試ä¸\8aå\82³æª\94æ¡\88時出錯。",
        "api-error-unknown-warning": "未知的警告:$1",
        "api-error-unknownerror": "未知錯誤:$1。",
        "api-error-uploaddisabled": "本wiki的上傳檔案功能已停用。",
index 3729a78..1618bdb 100644 (file)
@@ -57,43 +57,43 @@ $namespaceAliases = array(
 $namespaceGenderAliases = array();
 
 $datePreferences = array(
-    'default',
-    'mdy',
-    'dmy',
-    'ymd',
-    'yyyy-mm-dd',
-    'ISO 8601',
+       'default',
+       'mdy',
+       'dmy',
+       'ymd',
+       'yyyy-mm-dd',
+       'ISO 8601',
 );
 
 $defaultDateFormat = 'ymd';
 
 $datePreferenceMigrationMap = array(
-    'default',
-    'mdy',
-    'dmy',
-    'ymd'
+       'default',
+       'mdy',
+       'dmy',
+       'ymd'
 );
 
 $dateFormats = array(
-    'mdy time' => 'H:i',
-    'mdy date' => 'F j Y "с."',
-    'mdy both' => 'H:i, F j Y "с."',
+       'mdy time' => 'H:i',
+       'mdy date' => 'F j Y "с."',
+       'mdy both' => 'H:i, F j Y "с."',
 
-    'dmy time' => 'H:i',
-    'dmy date' => 'j F Y "с."',
-    'dmy both' => 'H:i, j F Y "с."',
+       'dmy time' => 'H:i',
+       'dmy date' => 'j F Y "с."',
+       'dmy both' => 'H:i, j F Y "с."',
 
-    'ymd time' => 'H:i',
-    'ymd date' => 'Y "с." xg j',
-    'ymd both' => 'H:i, Y "с." xg j',
+       'ymd time' => 'H:i',
+       'ymd date' => 'Y "с." xg j',
+       'ymd both' => 'H:i, Y "с." xg j',
 
-    'yyyy-mm-dd time' => 'xnH:xni:xns',
-    'yyyy-mm-dd date' => 'xnY-xnm-xnd',
-    'yyyy-mm-dd both' => 'xnH:xni:xns, xnY-xnm-xnd',
+       'yyyy-mm-dd time' => 'xnH:xni:xns',
+       'yyyy-mm-dd date' => 'xnY-xnm-xnd',
+       'yyyy-mm-dd both' => 'xnH:xni:xns, xnY-xnm-xnd',
 
-    'ISO 8601 time' => 'xnH:xni:xns',
-    'ISO 8601 date' => 'xnY.xnm.xnd',
-    'ISO 8601 both' => 'xnY.xnm.xnd"T"xnH:xni:xns',
+       'ISO 8601 time' => 'xnH:xni:xns',
+       'ISO 8601 date' => 'xnY.xnm.xnd',
+       'ISO 8601 both' => 'xnY.xnm.xnd"T"xnH:xni:xns',
 );
 
 $separatorTransformTable = array( ','  => '.', '.' => ',' );
index 7fb5df0..6b852b7 100644 (file)
@@ -52,43 +52,43 @@ $namespaceAliases = array(
 );
 
 $datePreferences = array(
-    'default',
-    'mdy',
-    'dmy',
-    'ymd',
-    'yyyy-mm-dd',
-    'ISO 8601',
+       'default',
+       'mdy',
+       'dmy',
+       'ymd',
+       'yyyy-mm-dd',
+       'ISO 8601',
 );
 
 $defaultDateFormat = 'ymd';
 
 $datePreferenceMigrationMap = array(
-    'default',
-    'mdy',
-    'dmy',
-    'ymd'
+       'default',
+       'mdy',
+       'dmy',
+       'ymd'
 );
 
 $dateFormats = array(
-    'mdy time' => 'H:i',
-    'mdy date' => 'F j Y "s."',
-    'mdy both' => 'H:i, F j Y "s."',
+       'mdy time' => 'H:i',
+       'mdy date' => 'F j Y "s."',
+       'mdy both' => 'H:i, F j Y "s."',
 
-    'dmy time' => 'H:i',
-    'dmy date' => 'j F Y "s."',
-    'dmy both' => 'H:i, j F Y "s."',
+       'dmy time' => 'H:i',
+       'dmy date' => 'j F Y "s."',
+       'dmy both' => 'H:i, j F Y "s."',
 
-    'ymd time' => 'H:i',
-    'ymd date' => 'Y "s." xg j',
-    'ymd both' => 'H:i, Y "s." xg j',
+       'ymd time' => 'H:i',
+       'ymd date' => 'Y "s." xg j',
+       'ymd both' => 'H:i, Y "s." xg j',
 
-    'yyyy-mm-dd time' => 'xnH:xni:xns',
-    'yyyy-mm-dd date' => 'xnY-xnm-xnd',
-    'yyyy-mm-dd both' => 'xnH:xni:xns, xnY-xnm-xnd',
+       'yyyy-mm-dd time' => 'xnH:xni:xns',
+       'yyyy-mm-dd date' => 'xnY-xnm-xnd',
+       'yyyy-mm-dd both' => 'xnH:xni:xns, xnY-xnm-xnd',
 
-    'ISO 8601 time' => 'xnH:xni:xns',
-    'ISO 8601 date' => 'xnY.xnm.xnd',
-    'ISO 8601 both' => 'xnY.xnm.xnd"T"xnH:xni:xns',
+       'ISO 8601 time' => 'xnH:xni:xns',
+       'ISO 8601 date' => 'xnY.xnm.xnd',
+       'ISO 8601 both' => 'xnY.xnm.xnd"T"xnH:xni:xns',
 );
 
 $separatorTransformTable = array( ',' => '.', '.' => ',' );
index 2718a48..b796aca 100644 (file)
@@ -261,7 +261,7 @@ $magicWords = array(
  * Date formats list for Special:Preferences
  * see $dateFormats for definitions
  */
-$datePreferences =  array(
+$datePreferences = array(
        'ČSN basic dt',
        'ČSN padded dt',
        'ČSN basic td',
index 4cffd2b..d6f268f 100644 (file)
@@ -35,8 +35,8 @@ $namespaceAliases = array(
 );
 
 $namespaceGenderAliases = array(
-        NS_USER => array( 'male' => 'Wužywaŕ', 'female' => 'Wužywarka' ),
-        NS_USER_TALK => array( 'male' => 'Diskusija_wužywarja', 'female' => 'Diskusija_wužywarki' ),
+       NS_USER => array( 'male' => 'Wužywaŕ', 'female' => 'Wužywarka' ),
+       NS_USER_TALK => array( 'male' => 'Diskusija_wužywarja', 'female' => 'Diskusija_wužywarki' ),
 );
 
 $specialPageAliases = array(
index 8167b19..9bacac2 100644 (file)
@@ -202,175 +202,175 @@ $bookstoreList = array(
  * This array can be modified at runtime with the LanguageGetMagic hook
  */
 $magicWords = array(
-#   ID                                  CASE  SYNONYMS
-       'redirect'                => array( 0,    '#REDIRECT' ),
-       'notoc'                   => array( 0,    '__NOTOC__' ),
-       'nogallery'               => array( 0,    '__NOGALLERY__' ),
-       'forcetoc'                => array( 0,    '__FORCETOC__' ),
-       'toc'                     => array( 0,    '__TOC__' ),
-       'noeditsection'           => array( 0,    '__NOEDITSECTION__' ),
-       '!'                       => array( 1,    '!' ),
-       'currentmonth'            => array( 1,    'CURRENTMONTH', 'CURRENTMONTH2' ),
-       'currentmonth1'           => array( 1,    'CURRENTMONTH1' ),
-       'currentmonthname'        => array( 1,    'CURRENTMONTHNAME' ),
-       'currentmonthnamegen'     => array( 1,    'CURRENTMONTHNAMEGEN' ),
-       'currentmonthabbrev'      => array( 1,    'CURRENTMONTHABBREV' ),
-       'currentday'              => array( 1,    'CURRENTDAY' ),
-       'currentday2'             => array( 1,    'CURRENTDAY2' ),
-       'currentdayname'          => array( 1,    'CURRENTDAYNAME' ),
-       'currentyear'             => array( 1,    'CURRENTYEAR' ),
-       'currenttime'             => array( 1,    'CURRENTTIME' ),
-       'currenthour'             => array( 1,    'CURRENTHOUR' ),
-       'localmonth'              => array( 1,    'LOCALMONTH', 'LOCALMONTH2' ),
-       'localmonth1'             => array( 1,    'LOCALMONTH1' ),
-       'localmonthname'          => array( 1,    'LOCALMONTHNAME' ),
-       'localmonthnamegen'       => array( 1,    'LOCALMONTHNAMEGEN' ),
-       'localmonthabbrev'        => array( 1,    'LOCALMONTHABBREV' ),
-       'localday'                => array( 1,    'LOCALDAY' ),
-       'localday2'               => array( 1,    'LOCALDAY2' ),
-       'localdayname'            => array( 1,    'LOCALDAYNAME' ),
-       'localyear'               => array( 1,    'LOCALYEAR' ),
-       'localtime'               => array( 1,    'LOCALTIME' ),
-       'localhour'               => array( 1,    'LOCALHOUR' ),
-       'numberofpages'           => array( 1,    'NUMBEROFPAGES' ),
-       'numberofarticles'        => array( 1,    'NUMBEROFARTICLES' ),
-       'numberoffiles'           => array( 1,    'NUMBEROFFILES' ),
-       'numberofusers'           => array( 1,    'NUMBEROFUSERS' ),
-       'numberofactiveusers'     => array( 1,    'NUMBEROFACTIVEUSERS' ),
-       'numberofedits'           => array( 1,    'NUMBEROFEDITS' ),
-       'numberofviews'           => array( 1,    'NUMBEROFVIEWS' ),
-       'pagename'                => array( 1,    'PAGENAME' ),
-       'pagenamee'               => array( 1,    'PAGENAMEE' ),
-       'namespace'               => array( 1,    'NAMESPACE' ),
-       'namespacee'              => array( 1,    'NAMESPACEE' ),
-       'namespacenumber'         => array( 1,    'NAMESPACENUMBER' ),
-       'talkspace'               => array( 1,    'TALKSPACE' ),
-       'talkspacee'              => array( 1,    'TALKSPACEE' ),
-       'subjectspace'            => array( 1,    'SUBJECTSPACE', 'ARTICLESPACE' ),
-       'subjectspacee'           => array( 1,    'SUBJECTSPACEE', 'ARTICLESPACEE' ),
-       'fullpagename'            => array( 1,    'FULLPAGENAME' ),
-       'fullpagenamee'           => array( 1,    'FULLPAGENAMEE' ),
-       'subpagename'             => array( 1,    'SUBPAGENAME' ),
-       'subpagenamee'            => array( 1,    'SUBPAGENAMEE' ),
-       'rootpagename'            => array( 1,    'ROOTPAGENAME' ),
-       'rootpagenamee'           => array( 1,    'ROOTPAGENAMEE' ),
-       'basepagename'            => array( 1,    'BASEPAGENAME' ),
-       'basepagenamee'           => array( 1,    'BASEPAGENAMEE' ),
-       'talkpagename'            => array( 1,    'TALKPAGENAME' ),
-       'talkpagenamee'           => array( 1,    'TALKPAGENAMEE' ),
-       'subjectpagename'         => array( 1,    'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
-       'subjectpagenamee'        => array( 1,    'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
-       'msg'                     => array( 0,    'MSG:' ),
-       'subst'                   => array( 0,    'SUBST:' ),
-       'safesubst'               => array( 0,    'SAFESUBST:' ),
-       'msgnw'                   => array( 0,    'MSGNW:' ),
-       'img_thumbnail'           => array( 1,    'thumbnail', 'thumb' ),
-       'img_manualthumb'         => array( 1,    'thumbnail=$1', 'thumb=$1' ),
-       'img_right'               => array( 1,    'right' ),
-       'img_left'                => array( 1,    'left' ),
-       'img_none'                => array( 1,    'none' ),
-       'img_width'               => array( 1,    '$1px' ),
-       'img_center'              => array( 1,    'center', 'centre' ),
-       'img_framed'              => array( 1,    'framed', 'enframed', 'frame' ),
-       'img_frameless'           => array( 1,    'frameless' ),
-       'img_lang'                => array( 1,    'lang=$1' ),
-       'img_page'                => array( 1,    'page=$1', 'page $1' ),
-       'img_upright'             => array( 1,    'upright', 'upright=$1', 'upright $1' ),
-       'img_border'              => array( 1,    'border' ),
-       'img_baseline'            => array( 1,    'baseline' ),
-       'img_sub'                 => array( 1,    'sub' ),
-       'img_super'               => array( 1,    'super', 'sup' ),
-       'img_top'                 => array( 1,    'top' ),
-       'img_text_top'            => array( 1,    'text-top' ),
-       'img_middle'              => array( 1,    'middle' ),
-       'img_bottom'              => array( 1,    'bottom' ),
-       'img_text_bottom'         => array( 1,    'text-bottom' ),
-       'img_link'                => array( 1,    'link=$1' ),
-       'img_alt'                 => array( 1,    'alt=$1' ),
-       'img_class'               => array( 1,    'class=$1' ),
-       'int'                     => array( 0,    'INT:' ),
-       'sitename'                => array( 1,    'SITENAME' ),
-       'ns'                      => array( 0,    'NS:' ),
-       'nse'                     => array( 0,    'NSE:' ),
-       'localurl'                => array( 0,    'LOCALURL:' ),
-       'localurle'               => array( 0,    'LOCALURLE:' ),
-       'articlepath'             => array( 0,    'ARTICLEPATH' ),
-       'pageid'                  => array( 0,    'PAGEID' ),
-       'server'                  => array( 0,    'SERVER' ),
-       'servername'              => array( 0,    'SERVERNAME' ),
-       'scriptpath'              => array( 0,    'SCRIPTPATH' ),
-       'stylepath'               => array( 0,    'STYLEPATH' ),
-       'grammar'                 => array( 0,    'GRAMMAR:' ),
-       'gender'                  => array( 0,    'GENDER:' ),
-       'notitleconvert'          => array( 0,    '__NOTITLECONVERT__', '__NOTC__' ),
-       'nocontentconvert'        => array( 0,    '__NOCONTENTCONVERT__', '__NOCC__' ),
-       'currentweek'             => array( 1,    'CURRENTWEEK' ),
-       'currentdow'              => array( 1,    'CURRENTDOW' ),
-       'localweek'               => array( 1,    'LOCALWEEK' ),
-       'localdow'                => array( 1,    'LOCALDOW' ),
-       'revisionid'              => array( 1,    'REVISIONID' ),
-       'revisionday'             => array( 1,    'REVISIONDAY' ),
-       'revisionday2'            => array( 1,    'REVISIONDAY2' ),
-       'revisionmonth'           => array( 1,    'REVISIONMONTH' ),
-       'revisionmonth1'          => array( 1,    'REVISIONMONTH1' ),
-       'revisionyear'            => array( 1,    'REVISIONYEAR' ),
-       'revisiontimestamp'       => array( 1,    'REVISIONTIMESTAMP' ),
-       'revisionuser'            => array( 1,    'REVISIONUSER' ),
-       'revisionsize'            => array( 1,    'REVISIONSIZE' ),
-       'plural'                  => array( 0,    'PLURAL:' ),
-       'fullurl'                 => array( 0,    'FULLURL:' ),
-       'fullurle'                => array( 0,    'FULLURLE:' ),
-       'canonicalurl'            => array( 0,    'CANONICALURL:' ),
-       'canonicalurle'           => array( 0,    'CANONICALURLE:' ),
-       'lcfirst'                 => array( 0,    'LCFIRST:' ),
-       'ucfirst'                 => array( 0,    'UCFIRST:' ),
-       'lc'                      => array( 0,    'LC:' ),
-       'uc'                      => array( 0,    'UC:' ),
-       'raw'                     => array( 0,    'RAW:' ),
-       'displaytitle'            => array( 1,    'DISPLAYTITLE' ),
-       'rawsuffix'               => array( 1,    'R' ),
-       'nocommafysuffix'         => array( 0,    'NOSEP' ),
-       'newsectionlink'          => array( 1,    '__NEWSECTIONLINK__' ),
-       'nonewsectionlink'        => array( 1,    '__NONEWSECTIONLINK__' ),
-       'currentversion'          => array( 1,    'CURRENTVERSION' ),
-       'urlencode'               => array( 0,    'URLENCODE:' ),
-       'anchorencode'            => array( 0,    'ANCHORENCODE' ),
-       'currenttimestamp'        => array( 1,    'CURRENTTIMESTAMP' ),
-       'localtimestamp'          => array( 1,    'LOCALTIMESTAMP' ),
-       'directionmark'           => array( 1,    'DIRECTIONMARK', 'DIRMARK' ),
-       'language'                => array( 0,    '#LANGUAGE:' ),
-       'contentlanguage'         => array( 1,    'CONTENTLANGUAGE', 'CONTENTLANG' ),
-       'pagesinnamespace'        => array( 1,    'PAGESINNAMESPACE:', 'PAGESINNS:' ),
-       'numberofadmins'          => array( 1,    'NUMBEROFADMINS' ),
-       'formatnum'               => array( 0,    'FORMATNUM' ),
-       'padleft'                 => array( 0,    'PADLEFT' ),
-       'padright'                => array( 0,    'PADRIGHT' ),
-       'special'                 => array( 0,    'special' ),
-       'speciale'                => array( 0,    'speciale' ),
-       'defaultsort'             => array( 1,    'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
-       'filepath'                => array( 0,    'FILEPATH:' ),
-       'tag'                     => array( 0,    'tag' ),
-       'hiddencat'               => array( 1,    '__HIDDENCAT__' ),
-       'pagesincategory'         => array( 1,    'PAGESINCATEGORY', 'PAGESINCAT' ),
-       'pagesize'                => array( 1,    'PAGESIZE' ),
-       'index'                   => array( 1,    '__INDEX__' ),
-       'noindex'                 => array( 1,    '__NOINDEX__' ),
-       'numberingroup'           => array( 1,    'NUMBERINGROUP', 'NUMINGROUP' ),
-       'staticredirect'          => array( 1,    '__STATICREDIRECT__' ),
-       'protectionlevel'         => array( 1,    'PROTECTIONLEVEL' ),
-       'cascadingsources'        => array( 1,    'CASCADINGSOURCES' ),
-       'formatdate'              => array( 0,    'formatdate', 'dateformat' ),
-       'url_path'                => array( 0,    'PATH' ),
-       'url_wiki'                => array( 0,    'WIKI' ),
-       'url_query'               => array( 0,    'QUERY' ),
-       'defaultsort_noerror'     => array( 0,    'noerror' ),
-       'defaultsort_noreplace'   => array( 0,    'noreplace' ),
-       'displaytitle_noerror'    => array( 0,    'noerror' ),
-       'displaytitle_noreplace'  => array( 0,    'noreplace' ),
-       'pagesincategory_all'     => array( 0,    'all' ),
-       'pagesincategory_pages'   => array( 0,    'pages' ),
-       'pagesincategory_subcats' => array( 0,    'subcats' ),
-       'pagesincategory_files'   => array( 0,    'files' ),
+#   ID                               CASE  SYNONYMS
+       'redirect'                => array( 0, '#REDIRECT' ),
+       'notoc'                   => array( 0, '__NOTOC__' ),
+       'nogallery'               => array( 0, '__NOGALLERY__' ),
+       'forcetoc'                => array( 0, '__FORCETOC__' ),
+       'toc'                     => array( 0, '__TOC__' ),
+       'noeditsection'           => array( 0, '__NOEDITSECTION__' ),
+       '!'                       => array( 1, '!' ),
+       'currentmonth'            => array( 1, 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'currentmonth1'           => array( 1, 'CURRENTMONTH1' ),
+       'currentmonthname'        => array( 1, 'CURRENTMONTHNAME' ),
+       'currentmonthnamegen'     => array( 1, 'CURRENTMONTHNAMEGEN' ),
+       'currentmonthabbrev'      => array( 1, 'CURRENTMONTHABBREV' ),
+       'currentday'              => array( 1, 'CURRENTDAY' ),
+       'currentday2'             => array( 1, 'CURRENTDAY2' ),
+       'currentdayname'          => array( 1, 'CURRENTDAYNAME' ),
+       'currentyear'             => array( 1, 'CURRENTYEAR' ),
+       'currenttime'             => array( 1, 'CURRENTTIME' ),
+       'currenthour'             => array( 1, 'CURRENTHOUR' ),
+       'localmonth'              => array( 1, 'LOCALMONTH', 'LOCALMONTH2' ),
+       'localmonth1'             => array( 1, 'LOCALMONTH1' ),
+       'localmonthname'          => array( 1, 'LOCALMONTHNAME' ),
+       'localmonthnamegen'       => array( 1, 'LOCALMONTHNAMEGEN' ),
+       'localmonthabbrev'        => array( 1, 'LOCALMONTHABBREV' ),
+       'localday'                => array( 1, 'LOCALDAY' ),
+       'localday2'               => array( 1, 'LOCALDAY2' ),
+       'localdayname'            => array( 1, 'LOCALDAYNAME' ),
+       'localyear'               => array( 1, 'LOCALYEAR' ),
+       'localtime'               => array( 1, 'LOCALTIME' ),
+       'localhour'               => array( 1, 'LOCALHOUR' ),
+       'numberofpages'           => array( 1, 'NUMBEROFPAGES' ),
+       'numberofarticles'        => array( 1, 'NUMBEROFARTICLES' ),
+       'numberoffiles'           => array( 1, 'NUMBEROFFILES' ),
+       'numberofusers'           => array( 1, 'NUMBEROFUSERS' ),
+       'numberofactiveusers'     => array( 1, 'NUMBEROFACTIVEUSERS' ),
+       'numberofedits'           => array( 1, 'NUMBEROFEDITS' ),
+       'numberofviews'           => array( 1, 'NUMBEROFVIEWS' ),
+       'pagename'                => array( 1, 'PAGENAME' ),
+       'pagenamee'               => array( 1, 'PAGENAMEE' ),
+       'namespace'               => array( 1, 'NAMESPACE' ),
+       'namespacee'              => array( 1, 'NAMESPACEE' ),
+       'namespacenumber'         => array( 1, 'NAMESPACENUMBER' ),
+       'talkspace'               => array( 1, 'TALKSPACE' ),
+       'talkspacee'              => array( 1, 'TALKSPACEE' ),
+       'subjectspace'            => array( 1, 'SUBJECTSPACE', 'ARTICLESPACE' ),
+       'subjectspacee'           => array( 1, 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+       'fullpagename'            => array( 1, 'FULLPAGENAME' ),
+       'fullpagenamee'           => array( 1, 'FULLPAGENAMEE' ),
+       'subpagename'             => array( 1, 'SUBPAGENAME' ),
+       'subpagenamee'            => array( 1, 'SUBPAGENAMEE' ),
+       'rootpagename'            => array( 1, 'ROOTPAGENAME' ),
+       'rootpagenamee'           => array( 1, 'ROOTPAGENAMEE' ),
+       'basepagename'            => array( 1, 'BASEPAGENAME' ),
+       'basepagenamee'           => array( 1, 'BASEPAGENAMEE' ),
+       'talkpagename'            => array( 1, 'TALKPAGENAME' ),
+       'talkpagenamee'           => array( 1, 'TALKPAGENAMEE' ),
+       'subjectpagename'         => array( 1, 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+       'subjectpagenamee'        => array( 1, 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+       'msg'                     => array( 0, 'MSG:' ),
+       'subst'                   => array( 0, 'SUBST:' ),
+       'safesubst'               => array( 0, 'SAFESUBST:' ),
+       'msgnw'                   => array( 0, 'MSGNW:' ),
+       'img_thumbnail'           => array( 1, 'thumbnail', 'thumb' ),
+       'img_manualthumb'         => array( 1, 'thumbnail=$1', 'thumb=$1' ),
+       'img_right'               => array( 1, 'right' ),
+       'img_left'                => array( 1, 'left' ),
+       'img_none'                => array( 1, 'none' ),
+       'img_width'               => array( 1, '$1px' ),
+       'img_center'              => array( 1, 'center', 'centre' ),
+       'img_framed'              => array( 1, 'framed', 'enframed', 'frame' ),
+       'img_frameless'           => array( 1, 'frameless' ),
+       'img_lang'                => array( 1, 'lang=$1' ),
+       'img_page'                => array( 1, 'page=$1', 'page $1' ),
+       'img_upright'             => array( 1, 'upright', 'upright=$1', 'upright $1' ),
+       'img_border'              => array( 1, 'border' ),
+       'img_baseline'            => array( 1, 'baseline' ),
+       'img_sub'                 => array( 1, 'sub' ),
+       'img_super'               => array( 1, 'super', 'sup' ),
+       'img_top'                 => array( 1, 'top' ),
+       'img_text_top'            => array( 1, 'text-top' ),
+       'img_middle'              => array( 1, 'middle' ),
+       'img_bottom'              => array( 1, 'bottom' ),
+       'img_text_bottom'         => array( 1, 'text-bottom' ),
+       'img_link'                => array( 1, 'link=$1' ),
+       'img_alt'                 => array( 1, 'alt=$1' ),
+       'img_class'               => array( 1, 'class=$1' ),
+       'int'                     => array( 0, 'INT:' ),
+       'sitename'                => array( 1, 'SITENAME' ),
+       'ns'                      => array( 0, 'NS:' ),
+       'nse'                     => array( 0, 'NSE:' ),
+       'localurl'                => array( 0, 'LOCALURL:' ),
+       'localurle'               => array( 0, 'LOCALURLE:' ),
+       'articlepath'             => array( 0, 'ARTICLEPATH' ),
+       'pageid'                  => array( 0, 'PAGEID' ),
+       'server'                  => array( 0, 'SERVER' ),
+       'servername'              => array( 0, 'SERVERNAME' ),
+       'scriptpath'              => array( 0, 'SCRIPTPATH' ),
+       'stylepath'               => array( 0, 'STYLEPATH' ),
+       'grammar'                 => array( 0, 'GRAMMAR:' ),
+       'gender'                  => array( 0, 'GENDER:' ),
+       'notitleconvert'          => array( 0, '__NOTITLECONVERT__', '__NOTC__' ),
+       'nocontentconvert'        => array( 0, '__NOCONTENTCONVERT__', '__NOCC__' ),
+       'currentweek'             => array( 1, 'CURRENTWEEK' ),
+       'currentdow'              => array( 1, 'CURRENTDOW' ),
+       'localweek'               => array( 1, 'LOCALWEEK' ),
+       'localdow'                => array( 1, 'LOCALDOW' ),
+       'revisionid'              => array( 1, 'REVISIONID' ),
+       'revisionday'             => array( 1, 'REVISIONDAY' ),
+       'revisionday2'            => array( 1, 'REVISIONDAY2' ),
+       'revisionmonth'           => array( 1, 'REVISIONMONTH' ),
+       'revisionmonth1'          => array( 1, 'REVISIONMONTH1' ),
+       'revisionyear'            => array( 1, 'REVISIONYEAR' ),
+       'revisiontimestamp'       => array( 1, 'REVISIONTIMESTAMP' ),
+       'revisionuser'            => array( 1, 'REVISIONUSER' ),
+       'revisionsize'            => array( 1, 'REVISIONSIZE' ),
+       'plural'                  => array( 0, 'PLURAL:' ),
+       'fullurl'                 => array( 0, 'FULLURL:' ),
+       'fullurle'                => array( 0, 'FULLURLE:' ),
+       'canonicalurl'            => array( 0, 'CANONICALURL:' ),
+       'canonicalurle'           => array( 0, 'CANONICALURLE:' ),
+       'lcfirst'                 => array( 0, 'LCFIRST:' ),
+       'ucfirst'                 => array( 0, 'UCFIRST:' ),
+       'lc'                      => array( 0, 'LC:' ),
+       'uc'                      => array( 0, 'UC:' ),
+       'raw'                     => array( 0, 'RAW:' ),
+       'displaytitle'            => array( 1, 'DISPLAYTITLE' ),
+       'rawsuffix'               => array( 1, 'R' ),
+       'nocommafysuffix'         => array( 0, 'NOSEP' ),
+       'newsectionlink'          => array( 1, '__NEWSECTIONLINK__' ),
+       'nonewsectionlink'        => array( 1, '__NONEWSECTIONLINK__' ),
+       'currentversion'          => array( 1, 'CURRENTVERSION' ),
+       'urlencode'               => array( 0, 'URLENCODE:' ),
+       'anchorencode'            => array( 0, 'ANCHORENCODE' ),
+       'currenttimestamp'        => array( 1, 'CURRENTTIMESTAMP' ),
+       'localtimestamp'          => array( 1, 'LOCALTIMESTAMP' ),
+       'directionmark'           => array( 1, 'DIRECTIONMARK', 'DIRMARK' ),
+       'language'                => array( 0, '#LANGUAGE:' ),
+       'contentlanguage'         => array( 1, 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+       'pagesinnamespace'        => array( 1, 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+       'numberofadmins'          => array( 1, 'NUMBEROFADMINS' ),
+       'formatnum'               => array( 0, 'FORMATNUM' ),
+       'padleft'                 => array( 0, 'PADLEFT' ),
+       'padright'                => array( 0, 'PADRIGHT' ),
+       'special'                 => array( 0, 'special' ),
+       'speciale'                => array( 0, 'speciale' ),
+       'defaultsort'             => array( 1, 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+       'filepath'                => array( 0, 'FILEPATH:' ),
+       'tag'                     => array( 0, 'tag' ),
+       'hiddencat'               => array( 1, '__HIDDENCAT__' ),
+       'pagesincategory'         => array( 1, 'PAGESINCATEGORY', 'PAGESINCAT' ),
+       'pagesize'                => array( 1, 'PAGESIZE' ),
+       'index'                   => array( 1, '__INDEX__' ),
+       'noindex'                 => array( 1, '__NOINDEX__' ),
+       'numberingroup'           => array( 1, 'NUMBERINGROUP', 'NUMINGROUP' ),
+       'staticredirect'          => array( 1, '__STATICREDIRECT__' ),
+       'protectionlevel'         => array( 1, 'PROTECTIONLEVEL' ),
+       'cascadingsources'        => array( 1, 'CASCADINGSOURCES' ),
+       'formatdate'              => array( 0, 'formatdate', 'dateformat' ),
+       'url_path'                => array( 0, 'PATH' ),
+       'url_wiki'                => array( 0, 'WIKI' ),
+       'url_query'               => array( 0, 'QUERY' ),
+       'defaultsort_noerror'     => array( 0, 'noerror' ),
+       'defaultsort_noreplace'   => array( 0, 'noreplace' ),
+       'displaytitle_noerror'    => array( 0, 'noerror' ),
+       'displaytitle_noreplace'  => array( 0, 'noreplace' ),
+       'pagesincategory_all'     => array( 0, 'all' ),
+       'pagesincategory_pages'   => array( 0, 'pages' ),
+       'pagesincategory_subcats' => array( 0, 'subcats' ),
+       'pagesincategory_files'   => array( 0, 'files' ),
 );
 
 /**
@@ -404,7 +404,7 @@ $specialPageAliases = array(
        'Diff'                      => array( 'Diff' ),
        'DoubleRedirects'           => array( 'DoubleRedirects' ),
        'EditWatchlist'             => array( 'EditWatchlist' ),
-       'Emailuser'                 => array( 'EmailUser' ),
+       'Emailuser'                 => array( 'EmailUser', 'Email' ),
        'ExpandTemplates'           => array( 'ExpandTemplates' ),
        'Export'                    => array( 'Export' ),
        'Fewestrevisions'           => array( 'FewestRevisions' ),
@@ -437,6 +437,7 @@ $specialPageAliases = array(
        'Mostrevisions'             => array( 'MostRevisions' ),
        'Movepage'                  => array( 'MovePage' ),
        'Mycontributions'           => array( 'MyContributions' ),
+       'MyLanguage'                => array( 'MyLanguage' ),
        'Mypage'                    => array( 'MyPage' ),
        'Mytalk'                    => array( 'MyTalk' ),
        'Myuploads'                 => array( 'MyUploads', 'MyFiles' ),
@@ -448,7 +449,7 @@ $specialPageAliases = array(
        'PermanentLink'             => array( 'PermanentLink', 'PermaLink' ),
        'Popularpages'              => array( 'PopularPages' ),
        'Preferences'               => array( 'Preferences' ),
-       'Prefixindex'               => array( 'PrefixIndex' ) ,
+       'Prefixindex'               => array( 'PrefixIndex' ),
        'Protectedpages'            => array( 'ProtectedPages' ),
        'Protectedtitles'           => array( 'ProtectedTitles' ),
        'Randompage'                => array( 'Random', 'RandomPage' ),
index 88afbe7..da3eb7a 100644 (file)
@@ -371,7 +371,7 @@ $datePreferenceMigrationMap = array(
  * overridden.
  */
 $dateFormats = array(
-    # Please be cautious not to delete the invisible RLM from the beginning of the strings.
+       # Please be cautious not to delete the invisible RLM from the beginning of the strings.
        'mdy time' => '‏H:i',
        'mdy date' => '‏n/j/Y میلادی',
        'mdy both' => '‏n/j/Y میلادی، ساعت H:i',
index ac16028..3836ad9 100644 (file)
 $fallback = 'fr';
 
 $bookstoreList = array(
-    'Amazon.fr'    => 'http://www.amazon.fr/exec/obidos/ISBN=$1',
-    'alapage.fr'   => 'http://www.alapage.com/mx/?tp=F&type=101&l_isbn=$1&donnee_appel=ALASQ&devise=&',
-    'fnac.com'     => 'http://www3.fnac.com/advanced/book.do?isbn=$1',
-    'chapitre.com' => 'http://www.chapitre.com/frame_rec.asp?isbn=$1',
+       'Amazon.fr'    => 'http://www.amazon.fr/exec/obidos/ISBN=$1',
+       'alapage.fr'   => 'http://www.alapage.com/mx/?tp=F&type=101&l_isbn=$1&donnee_appel=ALASQ&devise=&',
+       'fnac.com'     => 'http://www3.fnac.com/advanced/book.do?isbn=$1',
+       'chapitre.com' => 'http://www.chapitre.com/frame_rec.asp?isbn=$1',
 );
 
 $namespaceNames = array(
index 947e6b1..38e5b0a 100644 (file)
@@ -35,8 +35,8 @@ $namespaceAliases = array(
 );
 
 $namespaceGenderAliases = array(
-        NS_USER => array( 'male' => 'Wužiwar', 'female' => 'Wužiwarka' ),
-        NS_USER_TALK => array( 'male' => 'Diskusija_z_wužiwarjom', 'female' => 'Diskusija_z_wužiwarku' ),
+       NS_USER => array( 'male' => 'Wužiwar', 'female' => 'Wužiwarka' ),
+       NS_USER_TALK => array( 'male' => 'Diskusija_z_wužiwarjom', 'female' => 'Diskusija_z_wužiwarku' ),
 );
 
 $datePreferences = array(
index 3fcc4cc..a33efef 100644 (file)
@@ -106,8 +106,8 @@ $namespaceAliases = array(
 
        # Aliases to renamed kk-arab namespaces
        'مەدياۋيكي'        => NS_MEDIAWIKI,
-       'مەدياۋيكي_تالقىلاۋى'  => NS_MEDIAWIKI_TALK ,
-       'ٷلگٸ'        => NS_TEMPLATE ,
+       'مەدياۋيكي_تالقىلاۋى'  => NS_MEDIAWIKI_TALK,
+       'ٷلگٸ'        => NS_TEMPLATE,
        'ٷلگٸ_تالقىلاۋى'    => NS_TEMPLATE_TALK,
        'ٴۇلگٴى'              => NS_TEMPLATE,
        'ٴۇلگٴى_تالقىلاۋى'    => NS_TEMPLATE_TALK,
index 3e1b7ab..680c2ea 100644 (file)
@@ -77,8 +77,8 @@ $namespaceAliases = array(
 
        # Aliases to renamed kk-arab namespaces
        'مەدياۋيكي'        => NS_MEDIAWIKI,
-       'مەدياۋيكي_تالقىلاۋى'  => NS_MEDIAWIKI_TALK ,
-       'ٷلگٸ'        => NS_TEMPLATE ,
+       'مەدياۋيكي_تالقىلاۋى'  => NS_MEDIAWIKI_TALK,
+       'ٷلگٸ'        => NS_TEMPLATE,
        'ٷلگٸ_تالقىلاۋى'    => NS_TEMPLATE_TALK,
        'ٴۇلگٴى'              => NS_TEMPLATE,
        'ٴۇلگٴى_تالقىلاۋى'    => NS_TEMPLATE_TALK,
index 76aff5b..b7f8c6f 100644 (file)
@@ -72,8 +72,8 @@ $namespaceAliases = array(
 
        # Aliases to renamed kk-arab namespaces
        'مەدياۋيكي'        => NS_MEDIAWIKI,
-       'مەدياۋيكي_تالقىلاۋى'  => NS_MEDIAWIKI_TALK ,
-       'ٷلگٸ'        => NS_TEMPLATE ,
+       'مەدياۋيكي_تالقىلاۋى'  => NS_MEDIAWIKI_TALK,
+       'ٷلگٸ'        => NS_TEMPLATE,
        'ٷلگٸ_تالقىلاۋى'    => NS_TEMPLATE_TALK,
        'ٴۇلگٴى'              => NS_TEMPLATE,
        'ٴۇلگٴى_تالقىلاۋى'    => NS_TEMPLATE_TALK,
index 23cf2ba..ef0d72c 100644 (file)
@@ -206,6 +206,6 @@ $magicWords = array(
 );
 
 $imageFiles = array(
-    'button-italic'   => 'ksh/button_S_italic.png',
+       'button-italic'   => 'ksh/button_S_italic.png',
 );
 
index d5437da..85c0c26 100644 (file)
@@ -126,9 +126,9 @@ $defaultDateFormat = 'zh';
  * overridden.
  */
 $dateFormats = array(
-        'zh time' => 'H時i分',
-        'zh date' => 'Y年n月j日 (l)',
-        'zh both' => 'Y年n月j日 (D) H時i分',
+       'zh time' => 'H時i分',
+       'zh date' => 'Y年n月j日 (l)',
+       'zh both' => 'Y年n月j日 (D) H時i分',
 );
 
 $digitTransformTable = array(
index fdb33e4..49268f6 100644 (file)
@@ -70,7 +70,7 @@ $dateFormats = array(
 );
 
 $bookstoreList = array(
-        'Koninklijke Bibliotheek' => 'http://opc4.kb.nl/DB=1/SET=5/TTL=1/CMD?ACT=SRCH&IKT=1007&SRT=RLV&TRM=$1'
+       'Koninklijke Bibliotheek' => 'http://opc4.kb.nl/DB=1/SET=5/TTL=1/CMD?ACT=SRCH&IKT=1007&SRT=RLV&TRM=$1'
 );
 
 #!!# Translation <b>HLEERSTE:</b> is used more than once for <a href="#mw-sp-magic-lcfirst">lcfirst</a> and <a href="#mw-sp-magic-ucfirst">ucfirst</a>.
index 5eaccf6..3c65610 100644 (file)
@@ -180,5 +180,5 @@ $magicWords = array(
 );
 
 $linkTrail = '/^((?:[a-z]|а|æ|б|в|г|д|е|ё|ж|з|и|й|к|л|м|н|о|п|р|с|т|у|ф|х|ц|ч|ш|щ|ъ|ы|ь|э|ю|я|“|»)+)(.*)$/sDu';
-$fallback8bitEncoding =  'windows-1251';
+$fallback8bitEncoding = 'windows-1251';
 
index 017b4d0..839a5de 100644 (file)
@@ -51,7 +51,7 @@ $namespaceNames = array(
 );
 
 $namespaceAliases = array(
-        # Aliases for Latin script namespaces
+       # Aliases for Latin script namespaces
        "Medija"                  => NS_MEDIA,
        "Posebno"                 => NS_SPECIAL,
        "Razgovor"                => NS_TALK,
index b359c26..0d64526 100644 (file)
@@ -304,7 +304,7 @@ $magicWords = array(
 );
 
 $linkTrail = '/^([a-zåäöéÅÄÖÉ]+)(.*)$/sDu';
-$separatorTransformTable =  array(
+$separatorTransformTable = array(
        ',' => "\xc2\xa0", // @bug 2749
        '.' => ','
 );
index bc26d31..49a8891 100644 (file)
@@ -34,18 +34,18 @@ $datePreferences = false;
 $defaultDateFormat = 'dmy';
 
 $dateFormats = array(
-        'mdy time' => 'H:i',
-        'mdy date' => 'M j, Y',
-        'mdy both' => 'H:i, M j, Y',
-        'dmy time' => 'H:i',
-        'dmy date' => 'j M Y',
-        'dmy both' => 'j M Y, H:i',
-        'ymd time' => 'H:i',
-        'ymd date' => 'Y M j',
-        'ymd both' => 'H:i, Y M j',
-        'ISO 8601 time' => 'xnH:xni:xns',
-        'ISO 8601 date' => 'xnY-xnm-xnd',
-        'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns',
+       'mdy time' => 'H:i',
+       'mdy date' => 'M j, Y',
+       'mdy both' => 'H:i, M j, Y',
+       'dmy time' => 'H:i',
+       'dmy date' => 'j M Y',
+       'dmy both' => 'j M Y, H:i',
+       'ymd time' => 'H:i',
+       'ymd date' => 'Y M j',
+       'ymd both' => 'H:i, Y M j',
+       'ISO 8601 time' => 'xnH:xni:xns',
+       'ISO 8601 date' => 'xnY-xnm-xnd',
+       'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns',
 );
 
 $namespaceNames = array(
index 09b5590..8846f79 100644 (file)
@@ -45,18 +45,18 @@ $datePreferences = false;
 $defaultDateFormat = 'dmy';
 
 $dateFormats = array(
-        'mdy time' => 'H:i',
-        'mdy date' => 'M j, Y',
-        'mdy both' => 'H:i, M j, Y',
-        'dmy time' => 'H:i',
-        'dmy date' => 'j M Y',
-        'dmy both' => 'j M Y, H:i',
-        'ymd time' => 'H:i',
-        'ymd date' => 'Y M j',
-        'ymd both' => 'H:i, Y M j',
-        'ISO 8601 time' => 'xnH:xni:xns',
-        'ISO 8601 date' => 'xnY-xnm-xnd',
-        'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns',
+       'mdy time' => 'H:i',
+       'mdy date' => 'M j, Y',
+       'mdy both' => 'H:i, M j, Y',
+       'dmy time' => 'H:i',
+       'dmy date' => 'j M Y',
+       'dmy both' => 'j M Y, H:i',
+       'ymd time' => 'H:i',
+       'ymd date' => 'Y M j',
+       'ymd both' => 'H:i, Y M j',
+       'ISO 8601 time' => 'xnH:xni:xns',
+       'ISO 8601 date' => 'xnY-xnm-xnd',
+       'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns',
 );
 
 $magicWords = array(
index 5cb6f5f..30bb6ad 100644 (file)
@@ -51,7 +51,7 @@ installations.
        edit.php
        Edit a page to change its content
 
-       findhooks.php
+       findHooks.php
        Find hooks that aren't documented in docs/hooks.txt
 
        importDump.php
@@ -60,9 +60,6 @@ installations.
        importImages.php
        Import images into the wiki
 
-       importTextFile.php
-       Import the contents of a text file into a wiki page
-
        moveBatch.php
        Move a batch of pages
 
diff --git a/maintenance/archives/patch-il_from_namespace.sql b/maintenance/archives/patch-il_from_namespace.sql
new file mode 100644 (file)
index 0000000..4c858f4
--- /dev/null
@@ -0,0 +1,4 @@
+ALTER TABLE /*_*/imagelinks
+  ADD COLUMN il_from_namespace int NOT NULL default 0;
+
+CREATE INDEX /*i*/il_backlinks_namespace ON /*_*/imagelinks (il_to,il_from_namespace,il_from);
\ No newline at end of file
diff --git a/maintenance/archives/patch-pl_from_namespace.sql b/maintenance/archives/patch-pl_from_namespace.sql
new file mode 100644 (file)
index 0000000..2f7ff04
--- /dev/null
@@ -0,0 +1,4 @@
+ALTER TABLE /*_*/pagelinks
+       ADD COLUMN pl_from_namespace int NOT NULL default 0;
+
+CREATE INDEX /*i*/pl_backlinks_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from_namespace,pl_from);
diff --git a/maintenance/archives/patch-tl_from_namespace.sql b/maintenance/archives/patch-tl_from_namespace.sql
new file mode 100644 (file)
index 0000000..8d6c76b
--- /dev/null
@@ -0,0 +1,4 @@
+ALTER TABLE /*_*/templatelinks
+       ADD COLUMN tl_from_namespace int NOT NULL default 0;
+
+CREATE INDEX /*i*/tl_backlinks_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from_namespace,tl_from);
index 93fe660..98441b6 100644 (file)
@@ -79,7 +79,7 @@ class CompareParserCache extends Maintenance {
 
                                $this->output( "Found cache entry found for '{$title->getPrefixedText()}'..." );
                                $oldHtml = trim( preg_replace( '#<!-- .+-->#Us', '', $parserOutputOld->getText() ) );
-                               $newHtml = trim( preg_replace( '#<!-- .+-->#Us', '',$parserOutputNew->getText() ) );
+                               $newHtml = trim( preg_replace( '#<!-- .+-->#Us', '', $parserOutputNew->getText() ) );
                                $diff = wfDiff( $oldHtml, $newHtml );
                                if ( strlen( $diff ) ) {
                                        $this->output( "differences found:\n\n$diff\n\n" );
index 11a81eb..221ebe3 100644 (file)
@@ -140,7 +140,7 @@ class ConvertLinks extends Maintenance {
                                        $this->logPerformance = false;
                                }
                        }
-                       $baseTime = $startTime = $this->getMicroTime();
+                       $baseTime = $startTime = microtime( true );
                        # Create a title -> cur_id map
                        $this->output( "Loading IDs from $cur table...\n" );
                        $this->performanceLog( $fh, "Reading $numRows rows from cur table...\n" );
@@ -161,7 +161,7 @@ class ConvertLinks extends Maintenance {
                                        if ( ( $curRowsRead % $curReadReportInterval ) == 0 ) {
                                                $this->performanceLog(
                                                        $fh,
-                                                       $curRowsRead . " " . ( $this->getMicroTime() - $baseTime ) . "\n"
+                                                       $curRowsRead . " " . ( microtime( true ) - $baseTime ) . "\n"
                                                );
                                                $this->output( "\t$curRowsRead rows of $cur table read.\n" );
                                        }
@@ -172,7 +172,7 @@ class ConvertLinks extends Maintenance {
                        $this->output( "Finished loading IDs.\n\n" );
                        $this->performanceLog(
                                $fh,
-                               "Took " . ( $this->getMicroTime() - $baseTime ) . " seconds to load IDs.\n\n"
+                               "Took " . ( microtime( true ) - $baseTime ) . " seconds to load IDs.\n\n"
                        );
 
                        # --------------------------------------------------------------------
@@ -181,7 +181,7 @@ class ConvertLinks extends Maintenance {
                        # convert, and write to the new table.
                        $this->createTempTable();
                        $this->performanceLog( $fh, "Resetting timer.\n\n" );
-                       $baseTime = $this->getMicroTime();
+                       $baseTime = microtime( true );
                        $this->output( "Processing $numRows rows from $links table...\n" );
                        $this->performanceLog( $fh, "Processing $numRows rows from $links table...\n" );
                        $this->performanceLog( $fh, "rows inserted vs seconds elapsed:\n" );
@@ -226,7 +226,7 @@ class ConvertLinks extends Maintenance {
                                                $this->output( " done. Total $totalTuplesInserted tuples inserted.\n" );
                                                $this->performanceLog(
                                                        $fh,
-                                                       $totalTuplesInserted . " " . ( $this->getMicroTime() - $baseTime ) . "\n"
+                                                       $totalTuplesInserted . " " . ( microtime( true ) - $baseTime ) . "\n"
                                                );
                                        }
                                }
@@ -239,7 +239,7 @@ class ConvertLinks extends Maintenance {
                        );
                        $this->performanceLog(
                                $fh,
-                               "Total execution time: " . ( $this->getMicroTime() - $startTime ) . " seconds.\n"
+                               "Total execution time: " . ( microtime( true ) - $startTime ) . " seconds.\n"
                        );
                        if ( $this->logPerformance ) {
                                fclose( $fh );
@@ -300,12 +300,6 @@ class ConvertLinks extends Maintenance {
                        fwrite( $fh, $text );
                }
        }
-
-       private function getMicroTime() { # return time in seconds, with microsecond accuracy
-               list( $usec, $sec ) = explode( " ", microtime() );
-
-               return ( (float)$usec + (float)$sec );
-       }
 }
 
 $maintClass = "ConvertLinks";
index f555113..81bc06e 100644 (file)
@@ -1,10 +1,10 @@
-ænglisc
-ævar
 &add
 &amp
 &bar
+&img
 &sim
 &url
+&wap
 ABNF
 API
 Aacute
@@ -366,6 +366,7 @@ abusive
 ac
 acad
 accel
+acceptbilling
 acceptlang
 accessdenied
 accesskey
@@ -430,6 +431,7 @@ ai
 aifc
 aiff
 aiprop
+aisort
 ajaxwatch
 al
 alefsym
@@ -441,6 +443,7 @@ allcategories
 alldata
 alle
 allexamples
+allfileusages
 allhidden
 allimages
 allimit
@@ -458,6 +461,7 @@ allpagesbadtitle
 allpagesprefix
 allpagesredirect
 allpagessubmit
+allredirects
 allrev
 alltitles
 alltransclusions
@@ -470,6 +474,7 @@ alreadyexists
 alreadyrolled
 alunique
 am
+analyticsconfig
 anchor
 anchorclose
 anchorencode
@@ -589,6 +594,7 @@ autogen
 autogenerated
 autohide
 autoload
+autoload
 autoloader
 autoloaders
 autoloading
@@ -683,6 +689,7 @@ bgcolor
 bgzip
 bidi
 bigdelete
+bingbot
 binhex
 bitdepth
 bitfield
@@ -829,12 +836,14 @@ capitalizeallnouns
 captchaid
 captchas
 captchaword
+carriersnoips
 cascade
 cascadeable
 cascadeon
 cascadeprotected
 cascadeprotectedwarning
 cascading
+cascadinglevels
 cascadingness
 categories
 categories's
@@ -1107,6 +1116,7 @@ defaultcontentmodel
 defaultmessagetext
 defaultmissing
 defaultns
+defaultoptions
 defaultsort
 defaultval
 deferr
@@ -1167,6 +1177,7 @@ devangari
 devel
 df
 dflt
+dflts
 dhtml
 diams
 didn
@@ -1233,6 +1244,7 @@ domainpart
 domainparts
 domas
 doms
+dont
 dotdotcount
 dotm
 dotsc
@@ -1317,7 +1329,9 @@ eimissingparam
 eititle
 el
 elapsedreal
+elastica
 elemname
+elems
 elink
 eltitle
 email
@@ -1436,6 +1450,7 @@ externaldberror
 externaldiff
 externaledit
 externaleditor
+externalimages
 externallinks
 externalstore
 extet
@@ -1445,6 +1460,7 @@ extlinks
 extracts
 extradata
 extrafields
+extralanglink
 extraq
 extratags
 exturlusage
@@ -1515,6 +1531,7 @@ filepage
 filepath
 filerenameerror
 filerepo
+filerepoinfo
 filerevert
 filerevisions
 files
@@ -1553,6 +1570,7 @@ flagtype
 flatlist
 flds
 float
+flrevs
 fmttime
 fname
 fnof
@@ -1588,6 +1606,7 @@ found
 founder
 fr
 frac
+frameborder
 frameless
 framesets
 frasl
@@ -1624,12 +1643,15 @@ gadgetcategories
 gadgets
 gaid
 gaifilterredir
+gaifrom
 gallerybox
 gallerycaption
 gallerytext
 gapdir
 gapfilterredir
+gapfrom
 gaplimit
+gapnamespace
 gapprefix
 garber
 gblblock
@@ -1643,6 +1665,7 @@ general
 generatexml
 generator
 geocoordinate
+geodata
 geosearch
 gerrit
 getcookie
@@ -1681,6 +1704,7 @@ globe
 gmail
 gmdate
 goodtitle
+googlebot
 gopher
 graymap
 grayscale
@@ -1845,6 +1869,7 @@ image
 imagegetsize
 imageinfo
 imageinvalidfilename
+imagelimits
 imagelinks
 imagemagick
 imagemaxsize
@@ -1857,6 +1882,7 @@ imagesize
 imagetype
 imagetypemismatch
 imageusage
+imagewhitelistenabled
 imagick
 imgmultigo
 imgmultigoto
@@ -1928,6 +1954,7 @@ interwiki
 interwikimap
 interwikipage
 interwikis
+interwikisearchinfo
 interwikisource
 intnull
 intoken
@@ -1975,6 +2002,8 @@ ipchain
 ipedits
 iphash
 ipinrange
+ipset
+ipsets
 ipusers
 iquest
 irc
@@ -1986,12 +2015,14 @@ isconnected
 iscur
 isin
 isip
+islocal
 ismap
 isminor
 ismodsince
 ismulti
 isnew
 ispermalink
+isroot
 isself
 isset
 istainted
@@ -2037,6 +2068,7 @@ jslint
 jsmimetype
 jsminplus
 json
+jsonconfig
 jsonfm
 jsparse
 jstext
@@ -2055,6 +2087,7 @@ keyname
 keynames
 keytype
 khash
+kikongo
 kludgy
 knownnamespace
 konqueror
@@ -2070,11 +2103,13 @@ langcode
 langcodes
 langconversion
 langlinks
+langname
 langprop
 langs
 language
 languagelinks
 languages
+languageselection
 languageshtml
 laquo
 large
@@ -2135,6 +2170,7 @@ link
 linkarr
 linkcolour
 linkprefix
+linkprefixcharset
 links
 linkstoimage
 linktbl
@@ -2170,6 +2206,7 @@ localdayname
 localdow
 locale
 localhour
+localinterwiki
 localmonth
 localmonthabbrev
 localmonthname
@@ -2236,7 +2273,6 @@ ltitle
 ltrimmed
 lurl
 lysator
-möller
 macr
 magicarr
 magicfile
@@ -2290,12 +2326,14 @@ maxwidth
 mazeland
 mbresponse
 mbstring
+mccmnc
 mckey
 mcklmqw
 mcrypt
 mcvalue
 md
 mdash
+mdot
 medialink
 mediaqueries
 mediatype
@@ -2380,6 +2418,7 @@ mkdir
 mms
 mobile
 mobileformat
+mobilelanding
 mobileview
 modified
 modifiedarticleprotection
@@ -2437,6 +2476,7 @@ msgsmall
 msgtext
 msie
 msmetafile
+msnbot
 mssql
 msvideo
 msword
@@ -2481,10 +2521,13 @@ mysqldump
 mytalk
 mytext
 mywatchlist
+möller
 nabla
 name
 namehidden
 nameinlowercase
+namelookup
+namemsg
 names
 namespace
 namespacealiases
@@ -2780,6 +2823,7 @@ noto
 notoc
 notoggle
 notoken
+notpatrollable
 notransform
 notreviewable
 notrustworthy
@@ -2881,6 +2925,7 @@ oldtitle
 oldtitlemsg
 oline
 oname
+onerror
 onkeyup
 online
 onload
@@ -2891,6 +2936,7 @@ onlyquery
 onsubmit
 onthisday
 ontop
+onuser
 openbasedir
 opendoc
 opendocument
@@ -3110,12 +3156,14 @@ pptm
 pptx
 precaching
 precompiled
+preemptively
 preferences
 preferencestoken
 prefill
 prefilled
 prefix
 prefixindex
+prefixsearch
 prefixsearchdisabled
 prefs
 prefsection
@@ -3131,6 +3179,7 @@ preprocessing
 preprocessors
 presentationml
 presep
+pretransfer
 prevchar
 prevdiff
 previd
@@ -3194,6 +3243,7 @@ protecttoken
 proto
 protocol
 protocols
+protorel
 protos
 proxied
 proxyblocker
@@ -3216,6 +3266,7 @@ purged
 qabardjajəbza
 qbar
 qbsettings
+qlow
 qmoicj
 qp
 quasit
@@ -3234,6 +3285,7 @@ querytype
 question
 queuefull
 quickbar
+quicksorts
 quicktemplate
 quicktime
 qunit
@@ -3329,6 +3381,7 @@ redirectable
 redirectcreated
 redirectedfrom
 redirections
+redirector
 redirectpagesub
 redirectparams
 redirects
@@ -3343,6 +3396,7 @@ redis
 redlink
 redlinks
 redocument
+redux
 reedyboy
 reenables
 reencode
@@ -3380,6 +3434,8 @@ remstudent
 renameuser
 renaming
 renderable
+renderesibanner
+renderwarning
 renormalized
 repeating
 repl
@@ -3565,6 +3621,7 @@ selflink
 selfmove
 semiglobal
 semiprotected
+semiprotectedlevels
 semiprotectedpagewarning
 sendemail
 sendmail
@@ -3686,6 +3743,7 @@ smil
 smtp
 snippet
 sodipodi
+softredirect
 softtabstop
 solaris
 somecontent
@@ -3746,6 +3804,7 @@ startsortkey
 startsortkeyprefix
 starttime
 starttimestamp
+starttransfer
 stash
 stashfailed
 stashimageinfo
@@ -3895,8 +3954,8 @@ talkpagetext
 talkspace
 talkspacee
 talkto
-taraškievica
 tarask
+taraškievica
 target
 tb
 tbase
@@ -3963,6 +4022,7 @@ thumbheight
 thumbhtml
 thumbimage
 thumbinner
+thumblimits
 thumbmime
 thumbnail
 thumbnailing
@@ -4090,6 +4150,7 @@ udpprofile
 ufffd
 ugrave
 ui
+uids
 uint
 ulimit
 ulink
@@ -4115,6 +4176,8 @@ undel
 undelete
 undeleted
 undeletion
+undismissable
+undismissible
 undo
 undoafter
 undofailure
@@ -4156,6 +4219,7 @@ unprotect
 unprotectedarticle
 unprotection
 unprotectthispage
+unreadcount
 unredacted
 unrequest
 unrequested
@@ -4211,6 +4275,7 @@ uploadscripted
 uploadsource
 uploadstash
 uploadvirus
+uploadwarning
 uppercased
 upsih
 urandom
@@ -4504,7 +4569,6 @@ xmldoublequote
 xmlfm
 xmlimport
 xmlns
-xmlsafe
 xmlselect
 xor
 xpinstall
@@ -4517,6 +4581,7 @@ xxxxx
 yacute
 yaml
 yamlfm
+yandex
 year
 yes
 youhavenewmessages
@@ -4538,10 +4603,22 @@ yourvariant
 yourwiki
 yuml
 yyyymmddhhiiss
+zerobanner
+zerobar
+zerobutton
+zeroconfig
+zerodontask
+zerodot
+zeroinfo
+zeroportal
 zhdaemon
 zhengzhu
 zhtable
 zijdel
 zlib
 zoffset
+zrma
 zwnj
+ænglisc
+ævar
+świerkosz
index 47e6a89..28a0545 100644 (file)
@@ -77,17 +77,6 @@ if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
        # Use a callback function to configure MediaWiki
        call_user_func( MW_CONFIG_CALLBACK );
 } else {
-       if ( file_exists( "$IP/../wmf-config/wikimedia-mode" ) ) {
-               // Load settings, using wikimedia-mode if needed
-               // @todo FIXME: Replace this hack with general farm-friendly code
-               # @todo FIXME: Wikimedia-specific stuff needs to go away to an ext
-               # Maybe a hook?
-               // @codingStandardsIgnoreStart MediaWiki.NamingConventions.ValidGlobalName.wgPrefix
-               global $cluster;
-               $cluster = 'pmtpa';
-               // @codingStandardsIgnoreEnd
-               require "$IP/../wmf-config/wgConf.php";
-       }
        // Require the configuration (probably LocalSettings.php)
        require $maintenance->loadSettings();
 }
index 6bdb15d..75ec12b 100644 (file)
@@ -54,8 +54,6 @@ class EditCLI extends Maintenance {
                $noRC = $this->hasOption( 'no-rc' );
 
                $wgUser = User::newFromName( $userName );
-               $context = RequestContext::getMain();
-               $context->setUser( $wgUser );
                if ( !$wgUser ) {
                        $this->error( "Invalid username", true );
                }
@@ -67,7 +65,6 @@ class EditCLI extends Maintenance {
                if ( !$title ) {
                        $this->error( "Invalid title", true );
                }
-               $context->setTitle( $title );
 
                if ( $this->hasOption( 'nocreate' ) && !$title->exists() ) {
                        $this->error( "Page does not exist", true );
index 1c3f037..94ca604 100644 (file)
@@ -27,7 +27,7 @@ require_once __DIR__ . '/Maintenance.php';
 /**
  * Maintenance script to delete archived (non-current) files from storage.
  *
- * @TODO: Maybe add some simple logging
+ * @todo Maybe add some simple logging
  *
  * @ingroup Maintenance
  * @since 1.22
index a678a92..9568284 100644 (file)
@@ -96,7 +96,6 @@ class FixDoubleRedirects extends Maintenance {
                foreach ( $res as $row ) {
                        $titleA = Title::makeTitle( $row->pa_namespace, $row->pa_title );
                        $titleB = Title::makeTitle( $row->pb_namespace, $row->pb_title );
-                       RequestContext::getMain()->setTitle( $titleA );
 
                        $processedTitles .= "* [[$titleA]]\n";
 
index 1f7cbf5..1fedefb 100644 (file)
@@ -182,7 +182,7 @@ TEXT;
        function handleUpload( $revision ) {
                if ( $this->uploads ) {
                        if ( $this->skippedNamespace( $revision ) ) {
-                               return;
+                               return false;
                        }
                        $this->uploadCount++;
                        // $this->report();
@@ -196,6 +196,8 @@ TEXT;
                                return $dbw->deadlockLoop( array( $revision, 'importUpload' ) );
                        }
                }
+
+               return false;
        }
 
        function handleLogItem( $rev ) {
diff --git a/maintenance/importTextFile.php b/maintenance/importTextFile.php
deleted file mode 100644 (file)
index f73dd1c..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-/**
- * Create or edit pages using the contents of a text file.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Maintenance
- * @author Rob Church <robchur@gmail.com>
- */
-
-$options = array( 'help', 'nooverwrite', 'norc' );
-$optionsWithArgs = array( 'title', 'user', 'comment' );
-require_once __DIR__ . '/commandLine.inc';
-echo "Import Text File\n\n";
-
-if ( count( $args ) < 1 || isset( $options['help'] ) ) {
-       showHelp();
-} else {
-
-       $filename = $args[0];
-       echo "Using {$filename}...";
-       if ( is_file( $filename ) ) {
-
-               $title = isset( $options['title'] ) ? $options['title'] : titleFromFilename( $filename );
-               $title = Title::newFromText( $title );
-
-               if ( is_object( $title ) ) {
-
-                       echo "\nUsing title '" . $title->getPrefixedText() . "'...";
-                       if ( !$title->exists() || !isset( $options['nooverwrite'] ) ) {
-                               RequestContext::getMain()->setTitle( $title );
-
-                               $text = file_get_contents( $filename );
-                               $user = isset( $options['user'] ) ? $options['user'] : 'Maintenance script';
-                               $user = User::newFromName( $user );
-
-                               if ( is_object( $user ) ) {
-
-                                       echo "\nUsing username '" . $user->getName() . "'...";
-                                       $wgUser =& $user;
-                                       $comment = isset( $options['comment'] ) ? $options['comment'] : 'Importing text file';
-                                       $flags = 0 | ( isset( $options['norc'] ) ? EDIT_SUPPRESS_RC : 0 );
-
-                                       echo "\nPerforming edit...";
-                                       $page = WikiPage::factory( $title );
-                                       $content = ContentHandler::makeContent( $text, $title );
-                                       $page->doEditContent( $content, $comment, $flags, false, $user );
-                                       echo "done.\n";
-                               } else {
-                                       echo "invalid username.\n";
-                               }
-                       } else {
-                               echo "page exists.\n";
-                       }
-               } else {
-                       echo "invalid title.\n";
-               }
-       } else {
-               echo "does not exist.\n";
-       }
-}
-
-function titleFromFilename( $filename ) {
-       $parts = explode( '/', $filename );
-       $parts = explode( '.', $parts[count( $parts ) - 1] );
-
-       return $parts[0];
-}
-
-function showHelp() {
-       print <<<EOF
-USAGE: php importTextFile.php <options> <filename>
-
-<filename> : Path to the file containing page content to import
-
-Options:
-
---title <title>
-       Title for the new page; default is to use the filename as a base
---user <user>
-       User to be associated with the edit
---comment <comment>
-       Edit summary
---nooverwrite
-       Don't overwrite existing content
---norc
-       Don't update recent changes
---help
-       Show this information
-
-EOF;
-}
index 2bb5e6b..db6c315 100644 (file)
@@ -365,7 +365,7 @@ class UcdXmlReader {
                $xml = $this->open();
                $this->callback = $callback;
 
-               while ( $xml->name !== 'repertoire' && $xml->next() ) ;
+               while ( $xml->name !== 'repertoire' && $xml->next() );
 
                while ( $xml->read() ) {
                        if ( $xml->nodeType == XMLReader::ELEMENT ) {
@@ -389,7 +389,7 @@ class UcdXmlReader {
                if ( !$this->xml ) {
                        throw new MWException( __METHOD__ . ": unable to open {$this->fileName}" );
                }
-               while ( $this->xml->name !== 'ucd' && $this->xml->read() ) ;
+               while ( $this->xml->name !== 'ucd' && $this->xml->read() );
                $this->xml->read();
 
                return $this->xml;
@@ -450,7 +450,7 @@ class UcdXmlReader {
                }
 
                $xml = $this->open();
-               while ( $xml->name !== 'blocks' && $xml->read() ) ;
+               while ( $xml->name !== 'blocks' && $xml->read() );
 
                while ( $xml->read() ) {
                        if ( $xml->nodeType == XMLReader::ELEMENT ) {
index da49e55..a97d2e1 100644 (file)
@@ -78,7 +78,7 @@ class McTest extends Maintenance {
                        $set = 0;
                        $incr = 0;
                        $get = 0;
-                       $time_start = $this->microtime_float();
+                       $time_start = microtime( true );
                        for ( $i = 1; $i <= $iterations; $i++ ) {
                                if ( $mcc->set( "test$i", $i ) ) {
                                        $set++;
@@ -95,21 +95,11 @@ class McTest extends Maintenance {
                                        $get++;
                                }
                        }
-                       $exectime = $this->microtime_float() - $time_start;
+                       $exectime = microtime( true ) - $time_start;
 
                        $this->output( " set: $set   incr: $incr   get: $get time: $exectime", $server );
                }
        }
-
-       /**
-        * Return microtime() as a float
-        * @return float
-        */
-       private function microtime_float() {
-               list( $usec, $sec ) = explode( " ", microtime() );
-
-               return ( (float)$usec + (float)$sec );
-       }
 }
 
 $maintClass = "McTest";
diff --git a/maintenance/nextJobDB.php b/maintenance/nextJobDB.php
deleted file mode 100644 (file)
index d172363..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/**
- * Pick a database that has pending jobs
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Maintenance
- */
-
-require_once __DIR__ . '/Maintenance.php';
-
-/**
- * Maintenance script that picks a database that has pending jobs.
- *
- * @ingroup Maintenance
- */
-class NextJobDB extends Maintenance {
-       public function __construct() {
-               parent::__construct();
-               $this->mDescription = "Pick a database that has pending jobs";
-               $this->addOption( 'type', "Search by job type", false, true );
-               $this->addOption( 'types', "Space separated list of job types to search for", false, true );
-       }
-
-       public function execute() {
-               global $wgJobTypesExcludedFromDefaultQueue;
-
-               // job type required/picked
-               if ( $this->hasOption( 'types' ) ) {
-                       $types = explode( ' ', $this->getOption( 'types' ) );
-               } elseif ( $this->hasOption( 'type' ) ) {
-                       $types = array( $this->getOption( 'type' ) );
-               } else {
-                       $types = false;
-               }
-
-               // Handle any required periodic queue maintenance
-               $this->executeReadyPeriodicTasks();
-
-               // Get all the queues with jobs in them
-               $pendingDBs = JobQueueAggregator::singleton()->getAllReadyWikiQueues();
-               if ( !count( $pendingDBs ) ) {
-                       return; // no DBs with jobs or cache is both empty and locked
-               }
-
-               $candidates = array(); // list of (type, db)
-               // Flatten the tree of candidates into a flat list so that a random
-               // item can be selected, weighing each queue (type/db tuple) equally.
-               foreach ( $pendingDBs as $type => $dbs ) {
-                       if (
-                               ( is_array( $types ) && in_array( $type, $types ) ) ||
-                               ( $types === false && !in_array( $type, $wgJobTypesExcludedFromDefaultQueue ) )
-                       ) {
-                               foreach ( $dbs as $db ) {
-                                       $candidates[] = array( $type, $db );
-                               }
-                       }
-               }
-               if ( !count( $candidates ) ) {
-                       return; // no jobs for this type
-               }
-
-               list( $type, $db ) = $candidates[mt_rand( 0, count( $candidates ) - 1 )];
-
-               if ( $this->hasOption( 'types' ) ) {
-                       $this->output( $db . " " . $type . "\n" );
-               } else {
-                       $this->output( $db . "\n" );
-               }
-       }
-
-       /**
-        * Do all ready periodic jobs for all databases every 5 minutes (and .1% of the time)
-        * @return int
-        */
-       private function executeReadyPeriodicTasks() {
-               global $wgLocalDatabases, $wgMemc;
-
-               $count = 0;
-               $memcKey = 'jobqueue:periodic:lasttime';
-               $timestamp = (int)$wgMemc->get( $memcKey ); // UNIX timestamp or 0
-               if ( ( time() - $timestamp ) > 300 || mt_rand( 0, 999 ) == 0 ) { // 5 minutes
-                       if ( $wgMemc->add( "$memcKey:rebuild", 1, 1800 ) ) { // lock
-                               foreach ( $wgLocalDatabases as $db ) {
-                                       $count += JobQueueGroup::singleton( $db )->executeReadyPeriodicTasks();
-                               }
-                               $wgMemc->set( $memcKey, time() );
-                               $wgMemc->delete( "$memcKey:rebuild" ); // unlock
-                       }
-               }
-
-               return $count;
-       }
-}
-
-$maintClass = "NextJobDb";
-require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/maintenance/populateBacklinkNamespace.php b/maintenance/populateBacklinkNamespace.php
new file mode 100644 (file)
index 0000000..271a3f6
--- /dev/null
@@ -0,0 +1,93 @@
+<?php
+/**
+ * Optional upgrade script to populate *_from_namespace fields
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+
+require_once __DIR__ . '/Maintenance.php';
+
+/**
+ * Maintenance script to populate *_from_namespace fields
+ *
+ * @ingroup Maintenance
+ */
+class PopulateBacklinkNamespace extends LoggedUpdateMaintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = "Populate the *_from_namespace fields";
+       }
+
+       protected function getUpdateKey() {
+               return 'populate *_from_namespace';
+       }
+
+       protected function updateSkippedMessage() {
+               return '*_from_namespace column of backlink tables already populated.';
+       }
+
+       public function doDBUpdates() {
+               $force = $this->getOption( 'force' );
+
+               $db = $this->getDB( DB_MASTER );
+
+               $this->output( "Updating *_from_namespace fields in links tables.\n" );
+
+               $start = $db->selectField( 'page', 'MIN(page_id)', false, __METHOD__ );
+               if ( !$start ) {
+                       $this->output( "Nothing to do." );
+                       return false;
+               }
+               $end = $db->selectField( 'page', 'MAX(page_id)', false, __METHOD__ );
+
+               # Do remaining chunk
+               $end += $this->mBatchSize - 1;
+               $blockStart = $start;
+               $blockEnd = $start + $this->mBatchSize - 1;
+               while ( $blockEnd <= $end ) {
+                       $this->output( "...doing page_id from $blockStart to $blockEnd\n" );
+                       $cond = "page_id BETWEEN $blockStart AND $blockEnd";
+                       $res = $db->select( 'page', array( 'page_id', 'page_namespace' ), $cond, __METHOD__ );
+                       foreach ( $res as $row ) {
+                               $db->update( 'pagelinks',
+                                       array( 'pl_from_namespace' => $row->page_namespace ),
+                                       array( 'pl_from' => $row->page_id ),
+                                       __METHOD__
+                               );
+                               $db->update( 'templatelinks',
+                                       array( 'tl_from_namespace' => $row->page_namespace ),
+                                       array( 'tl_from' => $row->page_id ),
+                                       __METHOD__
+                               );
+                               $db->update( 'imagelinks',
+                                       array( 'il_from_namespace' => $row->page_namespace ),
+                                       array( 'il_from' => $row->page_id ),
+                                       __METHOD__
+                               );
+                       }
+                       $blockStart += $this->mBatchSize - 1;
+                       $blockEnd += $this->mBatchSize - 1;
+                       wfWaitForSlaves();
+               }
+               return true;
+       }
+}
+
+$maintClass = "PopulateBacklinkNamespace";
+require_once RUN_MAINTENANCE_IF_MAIN;
index cf35fe8..400050e 100644 (file)
@@ -206,6 +206,7 @@ CREATE INDEX redirect_ns_title ON redirect (rd_namespace,rd_title,rd_from);
 
 CREATE TABLE pagelinks (
   pl_from       INTEGER   NOT NULL  REFERENCES page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+  pl_from_namespace INTEGER NOT NULL DEFAULT 0,
   pl_namespace  SMALLINT  NOT NULL,
   pl_title      TEXT      NOT NULL
 );
@@ -214,6 +215,7 @@ CREATE INDEX pagelinks_title ON pagelinks (pl_title);
 
 CREATE TABLE templatelinks (
   tl_from       INTEGER  NOT NULL  REFERENCES page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+  tl_from_namespace INTEGER NOT NULL DEFAULT 0,
   tl_namespace  SMALLINT NOT NULL,
   tl_title      TEXT     NOT NULL
 );
@@ -222,6 +224,7 @@ CREATE INDEX templatelinks_from          ON templatelinks (tl_from);
 
 CREATE TABLE imagelinks (
   il_from  INTEGER  NOT NULL  REFERENCES page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+  il_from_namespace INTEGER NOT NULL DEFAULT 0,
   il_to    TEXT     NOT NULL
 );
 CREATE UNIQUE INDEX il_from ON imagelinks (il_to,il_from);
index f0b6ec7..4ce9474 100644 (file)
@@ -160,7 +160,7 @@ class PurgeChangedPages extends Maintenance {
         * If this returns an empty array for a non-empty query result, then all the rows
         * had the same column value and the query should be repeated with a higher LIMIT.
         *
-        * @TODO: move this elsewhere
+        * @todo move this elsewhere
         *
         * @param ResultWrapper $res Query result sorted by $column (ascending)
         * @param string $column
index e1ccb46..1b35292 100755 (executable)
@@ -9,12 +9,12 @@ then
        exit 1
 fi
 
-TARGET_REPO=$(cd $(dirname $0)/../..; pwd)
+TARGET_REPO=$(cd "$(dirname $0)/../.."; pwd)
 TARGET_DIR=resources/lib/oojs-ui
 UI_REPO=$1
 
 function oojsuihash() {
-       grep "OOjs UI v" $TARGET_REPO/$TARGET_DIR/oojs-ui.js \
+       grep "OOjs UI v" "$TARGET_REPO/$TARGET_DIR/oojs-ui.js" \
                | head -n 1 \
                | grep -Eo '\([a-z0-9]+\)' \
                | sed 's/^(//' \
@@ -22,19 +22,19 @@ function oojsuihash() {
 }
 
 function oojsuitag() {
-       grep "OOjs UI v" $TARGET_REPO/$TARGET_DIR/oojs-ui.js \
+       grep "OOjs UI v" "$TARGET_REPO/$TARGET_DIR/oojs-ui.js" \
                | head -n 1 \
                | grep -Eo '\bv[0-9a-z.-]+\b'
 }
 
 function oojsuiversion() {
-       grep "OOjs UI v" $TARGET_REPO/$TARGET_DIR/oojs-ui.js \
+       grep "OOjs UI v" "$TARGET_REPO/$TARGET_DIR/oojs-ui.js" \
                | head -n 1 \
                | grep -Eo '\bv[0-9a-z.-]+\b.*$'
 }
 
 # Prepare working tree
-cd $TARGET_REPO &&
+cd "$TARGET_REPO" &&
 git reset $TARGET_DIR && git checkout $TARGET_DIR && git fetch origin &&
 git checkout -B upstream-oojsui origin/master || exit 1
 
@@ -48,10 +48,10 @@ then
 fi
 if [ "$OLDHASH" == "" ]
 then
-       OLDHASH=$(git rev-parse $OLDTAG)
+       OLDHASH=$(git rev-parse "$OLDTAG")
        if [ $? != 0 ]
        then
-               echo Could not find OOjs UI version
+               echo "Could not find OOjs UI version"
                cd -
                exit 1
        fi
@@ -72,13 +72,13 @@ NEWCHANGESDISPLAY=$(git log $OLDHASH.. --oneline --no-merges --reverse --color=a
 
 # Copy files
 # - Exclude the default non-svg stylesheet
-rsync --recursive --delete --force --exclude 'oojs-ui.css' --exclude 'oojs-ui*.rtl.css' ./dist/ $TARGET_REPO/$TARGET_DIR || exit 1
+rsync --recursive --delete --force --exclude 'oojs-ui.css' --exclude 'oojs-ui*.rtl.css' ./dist/ "$TARGET_REPO/$TARGET_DIR" || exit 1
 
 # Read the new version
 NEWVERSION=$(oojsuiversion)
 
 # Generate commit
-cd $TARGET_REPO
+cd "$TARGET_REPO"
 COMMITMSG=$(cat <<END
 Update OOjs UI to $NEWVERSION
 
index 2c50002..d9e6fb9 100755 (executable)
@@ -7,12 +7,12 @@ then
        exit 1
 fi
 
-REPO_DIR=$(cd $(dirname $0)/../..; pwd) # Root dir of the git repo working tree
-TARGET_DIR=resources/lib/oojs # Destination relative to the root of the repo
-NPM_DIR=`mktemp -d 2>/dev/null || mktemp -d -t 'update-oojs'` # e.g. /tmp/update-oojs.rI0I5Vir
+REPO_DIR=$(cd "$(dirname $0)/../.."; pwd) # Root dir of the git repo working tree
+TARGET_DIR="resources/lib/oojs" # Destination relative to the root of the repo
+NPM_DIR=$(mktemp -d 2>/dev/null || mktemp -d -t 'update-oojs') # e.g. /tmp/update-oojs.rI0I5Vir
 
 # Prepare working tree
-cd $REPO_DIR &&
+cd "$REPO_DIR" &&
 git reset $TARGET_DIR && git checkout $TARGET_DIR && git fetch origin &&
 git checkout -B upstream-oojs origin/master || exit 1
 
@@ -20,7 +20,7 @@ git checkout -B upstream-oojs origin/master || exit 1
 cd $NPM_DIR
 if [ -n "$1" ]
 then
-       npm install oojs@$1 || exit 1
+       npm install "oojs@$1" || exit 1
 else
        npm install oojs || exit 1
 fi
@@ -33,10 +33,10 @@ then
 fi
 
 # Copy file(s)
-rsync --recursive --delete --force ./node_modules/oojs/dist $REPO_DIR/$TARGET_DIR || exit 1
+rsync --force ./node_modules/oojs/dist/oojs.jquery.js "$REPO_DIR/$TARGET_DIR" || exit 1
 
 # Clean up temporary area
-rm -rf $NPM_DIR
+rm -rf "$NPM_DIR"
 
 # Generate commit
 cd $REPO_DIR || exit 1
index 1383a8a..e56640f 100644 (file)
@@ -86,7 +86,7 @@ class RunJobs extends Maintenance {
 
                $jobsRun = 0; // counter
                $flags = JobQueueGroup::USE_CACHE;
-               $lastTime = time(); // time since last slave check
+               $lastTime = microtime( true ); // time since last slave check
                do {
                        $backoffs = array_filter( $backoffs, $backoffExpireFunc );
                        $blacklist = $noThrottle ? array() : array_keys( $backoffs );
@@ -101,8 +101,6 @@ class RunJobs extends Maintenance {
                                ++$jobsRun;
                                $this->runJobsLog( $job->toString() . " STARTING" );
 
-                               // Set timer to stop the job if too much CPU time is used
-                               set_time_limit( $maxTime ? : 0 );
                                // Run the job...
                                wfProfileIn( __METHOD__ . '-' . get_class( $job ) );
                                $t = microtime( true );
@@ -117,8 +115,6 @@ class RunJobs extends Maintenance {
                                }
                                $timeMs = intval( ( microtime( true ) - $t ) * 1000 );
                                wfProfileOut( __METHOD__ . '-' . get_class( $job ) );
-                               // Disable the timer
-                               set_time_limit( 0 );
 
                                // Mark the job as done on success or when the job cannot be retried
                                if ( $status !== false || !$job->allowRetries() ) {
@@ -150,10 +146,10 @@ class RunJobs extends Maintenance {
                                }
 
                                // Don't let any of the main DB slaves get backed up
-                               $timePassed = time() - $lastTime;
+                               $timePassed = microtime( true ) - $lastTime;
                                if ( $timePassed >= 5 || $timePassed < 0 ) {
-                                       wfWaitForSlaves();
-                                       $lastTime = time();
+                                       wfWaitForSlaves( $lastTime );
+                                       $lastTime = microtime( true );
                                }
                                // Don't let any queue slaves/backups fall behind
                                if ( $jobsRun > 0 && ( $jobsRun % 100 ) == 0 ) {
index 6f200b2..4b9a5e2 100644 (file)
@@ -473,6 +473,8 @@ CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id);
 CREATE TABLE /*_*/pagelinks (
   -- Key to the page_id of the page containing the link.
   pl_from int unsigned NOT NULL default 0,
+  -- Namespace for this page
+  pl_from_namespace int NOT NULL default 0,
 
   -- Key to page_namespace/page_title of the target page.
   -- The target page may or may not exist, and due to renames
@@ -483,7 +485,8 @@ CREATE TABLE /*_*/pagelinks (
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title);
-CREATE UNIQUE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
+CREATE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
+CREATE INDEX /*i*/pl_backlinks_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from_namespace,pl_from);
 
 
 --
@@ -492,6 +495,8 @@ CREATE UNIQUE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,p
 CREATE TABLE /*_*/templatelinks (
   -- Key to the page_id of the page containing the link.
   tl_from int unsigned NOT NULL default 0,
+  -- Namespace for this page
+  tl_from_namespace int NOT NULL default 0,
 
   -- Key to page_namespace/page_title of the target page.
   -- The target page may or may not exist, and due to renames
@@ -502,7 +507,8 @@ CREATE TABLE /*_*/templatelinks (
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title);
-CREATE UNIQUE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
+CREATE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
+CREATE INDEX /*i*/tl_backlinks_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from_namespace,tl_from);
 
 
 --
@@ -513,6 +519,8 @@ CREATE UNIQUE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_tit
 CREATE TABLE /*_*/imagelinks (
   -- Key to page_id of the page containing the image / media link.
   il_from int unsigned NOT NULL default 0,
+  -- Namespace for this page
+  il_from_namespace int NOT NULL default 0,
 
   -- Filename of target image.
   -- This is also the page_title of the file's description page;
@@ -521,7 +529,8 @@ CREATE TABLE /*_*/imagelinks (
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks (il_from,il_to);
-CREATE UNIQUE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from);
+CREATE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from);
+CREATE INDEX /*i*/il_backlinks_namespace ON /*_*/imagelinks (il_to,il_from_namespace,il_from);
 
 
 --
index be176c7..a6cebc3 100644 (file)
@@ -44,7 +44,7 @@ function wfInstallerMain() {
 
        if ( !$installer->startSession() ) {
 
-               if( $installer->request->getVal( "css" ) ) {
+               if ( $installer->request->getVal( "css" ) ) {
                        // Do not display errors on css pages
                        $installer->outputCss();
                        exit;
index 7f80832..deaa802 100644 (file)
@@ -497,6 +497,7 @@ return array(
                ),
                'skinStyles' => array(
                        'default' => 'resources/lib/jquery.ui/themes/smoothness/jquery.ui.menu.css',
+                       'vector' => 'resources/src/jquery.ui-themes/vector/jquery.ui.menu.css',
                ),
                'group' => 'jquery.ui',
        ),
@@ -578,6 +579,7 @@ return array(
                ),
                'skinStyles' => array(
                        'default' => 'resources/lib/jquery.ui/themes/smoothness/jquery.ui.spinner.css',
+                       'vector' => 'resources/src/jquery.ui-themes/vector/jquery.ui.spinner.css',
                ),
                'group' => 'jquery.ui',
        ),
@@ -602,6 +604,7 @@ return array(
                ),
                'skinStyles' => array(
                        'default' => 'resources/lib/jquery.ui/themes/smoothness/jquery.ui.tooltip.css',
+                       'vector' => 'resources/src/jquery.ui-themes/vector/jquery.ui.tooltip.css',
                ),
                'group' => 'jquery.ui',
        ),
@@ -1056,10 +1059,6 @@ return array(
                        'prefs-editing'
                ),
        ),
-       // Alias for backwards compatibility
-       'mediawiki.action.watch.ajax' => array(
-               'dependencies' => 'mediawiki.page.watch.ajax'
-       ),
 
        /* MediaWiki Language */
 
@@ -1470,7 +1469,7 @@ return array(
        /* OOjs */
        'oojs' => array(
                'scripts' => array(
-                       'resources/lib/oojs/oojs.js',
+                       'resources/lib/oojs/oojs.jquery.js',
                ),
                'targets' => array( 'desktop', 'mobile' ),
                'dependencies' => array(
@@ -1494,15 +1493,15 @@ return array(
                        'minerva' => 'resources/lib/oojs-ui/oojs-ui-agora.css',
                ),
                'messages' => array(
-                       'ooui-dialog-action-close',
                        'ooui-outline-control-move-down',
                        'ooui-outline-control-move-up',
                        'ooui-outline-control-remove',
                        'ooui-toolbar-more',
-                       'ooui-dialog-confirm-title',
-                       'ooui-dialog-confirm-default-prompt',
-                       'ooui-dialog-confirm-default-ok',
-                       'ooui-dialog-confirm-default-cancel'
+                       'ooui-dialog-message-accept',
+                       'ooui-dialog-message-reject',
+                       'ooui-dialog-process-dismiss',
+                       'ooui-dialog-process-error',
+                       'ooui-dialog-process-retry',
                ),
                'dependencies' => array(
                        'es5-shim',
index eb39dac..87d7688 100644 (file)
@@ -6,13 +6,13 @@
                        "Xuacu"
                ]
        },
-       "ooui-dialog-action-close": "Zarrar",
        "ooui-outline-control-move-down": "Mover abaxo l'elementu",
        "ooui-outline-control-move-up": "Mover arriba l'elementu",
        "ooui-outline-control-remove": "Desaniciar elementu",
        "ooui-toolbar-more": "Más",
-       "ooui-dialog-confirm-title": "Confirmar",
-       "ooui-dialog-confirm-default-prompt": "¿Tas seguru?",
-       "ooui-dialog-confirm-default-ok": "Aceutar",
-       "ooui-dialog-confirm-default-cancel": "Encaboxar"
+       "ooui-dialog-message-accept": "Aceutar",
+       "ooui-dialog-message-reject": "Encaboxar",
+       "ooui-dialog-process-error": "Daqué funcionó mal",
+       "ooui-dialog-process-dismiss": "Descartar",
+       "ooui-dialog-process-retry": "Vuelvi a intentalo"
 }
index 805897d..7660d4a 100644 (file)
@@ -14,7 +14,8 @@
                        "PoLuX124",
                        "Ralgis",
                        "Thehelpfulone",
-                       "Gloria sah"
+                       "Gloria sah",
+                       "Macofe"
                ]
        },
        "ooui-outline-control-move-down": "Bajar elemento",
@@ -23,5 +24,7 @@
        "ooui-toolbar-more": "Más",
        "ooui-dialog-message-accept": "Aceptar",
        "ooui-dialog-message-reject": "Cancelar",
+       "ooui-dialog-process-error": "Algo salió mal",
+       "ooui-dialog-process-dismiss": "Descartar",
        "ooui-dialog-process-retry": "Intentar de nuevo"
 }
index 5d9e3bb..81a91ed 100644 (file)
@@ -4,13 +4,13 @@
                        "Lam-ang"
                ]
        },
-       "ooui-dialog-action-close": "Irekep",
        "ooui-outline-control-move-down": "Ipababa ti banag",
        "ooui-outline-control-move-up": "Ipangato ti banag",
        "ooui-outline-control-remove": "Ikkaten ti banag",
        "ooui-toolbar-more": "Adu pay",
-       "ooui-dialog-confirm-title": "Pasingkedan",
-       "ooui-dialog-confirm-default-prompt": "Siguradoka kadi?",
-       "ooui-dialog-confirm-default-ok": "Sige",
-       "ooui-dialog-confirm-default-cancel": "Ukasen"
+       "ooui-dialog-message-accept": "Sige",
+       "ooui-dialog-message-reject": "Ukasen",
+       "ooui-dialog-process-error": "Adda madi a napasamak",
+       "ooui-dialog-process-dismiss": "Pugsayen",
+       "ooui-dialog-process-retry": "Padasen manen"
 }
index c2d9bc8..823d493 100644 (file)
@@ -6,12 +6,12 @@
                        "Pizza1016"
                ]
        },
-       "ooui-dialog-action-close": "Tutup",
        "ooui-outline-control-move-down": "Alihkan perkara ke bawah",
        "ooui-outline-control-move-up": "Alihkan perkara ke atas",
        "ooui-outline-control-remove": "Buang perkara",
        "ooui-toolbar-more": "Selebihnya",
-       "ooui-dialog-confirm-title": "Mengesahkan",
-       "ooui-dialog-confirm-default-prompt": "Adakah anda pasti?",
-       "ooui-dialog-confirm-default-cancel": "Batal"
+       "ooui-dialog-message-reject": "Batal",
+       "ooui-dialog-process-error": "Ada masalah",
+       "ooui-dialog-process-dismiss": "Singkir",
+       "ooui-dialog-process-retry": "Cuba lagi"
 }
index 35e7ee4..c62782e 100644 (file)
@@ -5,9 +5,13 @@
                        "Tumsaa"
                ]
        },
-       "ooui-dialog-action-close": "Cufi",
        "ooui-outline-control-move-down": "Gad buusi",
        "ooui-outline-control-move-up": "Ol baasi",
        "ooui-outline-control-remove": "Balleessi",
-       "ooui-toolbar-more": "Dabalata"
+       "ooui-toolbar-more": "Dabalata",
+       "ooui-dialog-message-accept": "Tole",
+       "ooui-dialog-message-reject": "Dhiisi",
+       "ooui-dialog-process-error": "Dogoggorri wayii ummameera",
+       "ooui-dialog-process-dismiss": "Didi",
+       "ooui-dialog-process-retry": "Itti deebi'ii yaali"
 }
index e8ab9f9..9b3bb60 100644 (file)
@@ -24,8 +24,8 @@
        "ooui-outline-control-move-up": "Tool tip for a button that moves items in a list up one place",
        "ooui-outline-control-remove": "Tool tip for a button that removes items from a list.\n{{Identical|Remove item}}",
        "ooui-toolbar-more": "Label for the toolbar group that contains a list of all other available tools.\n{{Identical|More}}",
-       "ooui-dialog-message-accept": "Default label for the accept button of a message dialog",
-       "ooui-dialog-message-reject": "Default label for the reject button of a message dialog",
+       "ooui-dialog-message-accept": "Default label for the accept button of a message dialog\n{{Identical|OK}}",
+       "ooui-dialog-message-reject": "Default label for the reject button of a message dialog\n{{Identical|Cancel}}",
        "ooui-dialog-process-error": "Title for process dialog error description",
        "ooui-dialog-process-dismiss": "Label for process dialog dismiss error button, visible when describing errors\n{{Identical|Dismiss}}",
        "ooui-dialog-process-retry": "Label for process dialog retry action button, visible when describing recoverable errors\n{{Identical|Try again}}"
index e26af70..a850fce 100644 (file)
@@ -13,5 +13,6 @@
        "ooui-dialog-message-accept": "יאָ",
        "ooui-dialog-message-reject": "אַנולירן",
        "ooui-dialog-process-error": "עפעס איז דורכגעפאלן",
+       "ooui-dialog-process-dismiss": "צומאַכן",
        "ooui-dialog-process-retry": "פרובירט נאכאמאל"
 }
index 255658b..05fb20d 100644 (file)
                        "Cwlin0416"
                ]
        },
-       "ooui-dialog-action-close": "關閉",
        "ooui-outline-control-move-down": "項目下移",
        "ooui-outline-control-move-up": "項目上移",
        "ooui-outline-control-remove": "移除項目",
        "ooui-toolbar-more": "更多",
-       "ooui-dialog-confirm-title": "確認",
-       "ooui-dialog-confirm-default-prompt": "您確定嗎?",
-       "ooui-dialog-confirm-default-ok": "確定",
-       "ooui-dialog-confirm-default-cancel": "取消"
+       "ooui-dialog-message-accept": "確定",
+       "ooui-dialog-message-reject": "取消",
+       "ooui-dialog-process-error": "發生不明錯誤",
+       "ooui-dialog-process-dismiss": "放棄",
+       "ooui-dialog-process-retry": "再試一次"
 }
index 0dfa042..a046047 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (97dbb50137)
+ * OOjs UI v0.1.0-pre (a7ce4d48d9)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-07-16T22:59:48Z
+ * Date: 2014-07-23T23:48:16Z
  */
 .oo-ui-dialog-content > .oo-ui-window-head,
 .oo-ui-dialog-content > .oo-ui-window-body,
   margin-top: -0.125em;
 }
 
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
+  margin: 0.75em 0 0.75em 0.75em;
+  border: solid 1px #ccc;
+  border-radius: 0.25em;
+}
+
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
   background-color: rgba(0, 0, 0, 0.1);
 }
 
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
+  margin: 0.75em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
+  /* Adjust for border so text aligns with title */
+
+  margin: -1px;
+}
+
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
   background-color: rgba(8, 126, 204, 0.05);
   padding-right: 2.25em;
 }
 
-.oo-ui-processDialog-actions-other:not(:empty) {
-  padding: 0.75em;
-}
-
-.oo-ui-processDialog-actions-other:not(:empty) .oo-ui-actionWidget {
-  margin: 0 0.75em 0 0;
-  border: solid 1px #ccc;
-  border-radius: 0.25em;
-}
-
 .oo-ui-processDialog > .oo-ui-window-frame {
   min-height: 5em;
 }
diff --git a/resources/lib/oojs-ui/oojs-ui-agora.rtl.css b/resources/lib/oojs-ui/oojs-ui-agora.rtl.css
new file mode 100644 (file)
index 0000000..fef9ba5
--- /dev/null
@@ -0,0 +1,420 @@
+/*!
+ * OOjs UI v0.1.0
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2014 OOjs Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2014-07-22T21:39:24Z
+ */
+.oo-ui-dialog-content > .oo-ui-window-head,
+.oo-ui-dialog-content > .oo-ui-window-body,
+.oo-ui-dialog-content > .oo-ui-window-foot {
+  position: absolute;
+  left: 0;
+  right: 0;
+  overflow: hidden;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-dialog-content > .oo-ui-window-head {
+  top: 0;
+  z-index: 1;
+}
+
+.oo-ui-dialog-content > .oo-ui-window-body {
+  top: 0;
+  bottom: 0;
+  z-index: 2;
+}
+
+.oo-ui-dialog-content > .oo-ui-window-foot {
+  bottom: 0;
+  z-index: 1;
+}
+
+.oo-ui-dialog-content > .oo-ui-window-overlay {
+  z-index: 3;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog {
+  background-color: rgba(255, 255, 255, 0.5);
+  opacity: 0;
+  -webkit-transition: opacity 250ms ease-in-out;
+     -moz-transition: opacity 250ms ease-in-out;
+      -ms-transition: opacity 250ms ease-in-out;
+       -o-transition: opacity 250ms ease-in-out;
+          transition: opacity 250ms ease-in-out;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
+  top: 1em;
+  bottom: 1em;
+  background-color: #fff;
+  -webkit-transform: translate3d(0, -200%, 0);
+     -moz-transform: translate3d(0, -200%, 0);
+      -ms-transform: translate3d(0, -200%, 0);
+       -o-transform: translate3d(0, -200%, 0);
+          transform: translate3d(0, -200%, 0);
+  -webkit-transition: transform 250ms ease-in-out;
+     -moz-transition: transform 250ms ease-in-out;
+      -ms-transition: transform 250ms ease-in-out;
+       -o-transition: transform 250ms ease-in-out;
+          transition: transform 250ms ease-in-out;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
+  opacity: 1;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
+  -webkit-transform: translate3d(0, 0, 0);
+     -moz-transform: translate3d(0, 0, 0);
+      -ms-transform: translate3d(0, 0, 0);
+       -o-transform: translate3d(0, 0, 0);
+          transform: translate3d(0, 0, 0);
+}
+
+.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
+  border: solid 1px #ccc;
+  border-radius: 0.5em;
+  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
+}
+
+.oo-ui-messageDialog-title,
+.oo-ui-messageDialog-message {
+  display: block;
+  padding-top: 0.5em;
+  text-align: center;
+}
+
+.oo-ui-messageDialog-title {
+  font-size: 1.5em;
+  line-height: 1em;
+  color: #000;
+}
+
+.oo-ui-messageDialog-message {
+  font-size: 0.9em;
+  line-height: 1.25em;
+  color: #666;
+}
+
+.oo-ui-messageDialog-message-verbose {
+  font-size: 1.1em;
+  line-height: 1.5em;
+  text-align: right;
+}
+
+.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
+  border-left: solid 1px #e5e5e5;
+}
+
+.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
+  border-left-width: 0;
+}
+
+.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
+  border-bottom: solid 1px #e5e5e5;
+}
+
+.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
+  border-bottom-width: 0;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label {
+  padding: 0 2em;
+  line-height: 3.4em;
+  text-align: center;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
+  background-color: rgba(0, 0, 0, 0.1);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
+  background-color: rgba(8, 126, 204, 0.05);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active {
+  background-color: rgba(8, 126, 204, 0.1);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
+  font-weight: bold;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover {
+  background-color: rgba(118, 171, 54, 0.05);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active {
+  background-color: rgba(118, 171, 54, 0.1);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover {
+  background-color: rgba(212, 83, 83, 0.05);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active {
+  background-color: rgba(212, 83, 83, 0.1);
+}
+
+.oo-ui-processDialog-content .oo-ui-window-head {
+  height: 3.35em;
+  border-bottom: 1px solid #dddddd;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-processDialog-content .oo-ui-window-body {
+  top: 3.35em;
+  padding: 2em 0;
+}
+
+.oo-ui-processDialog-navigation {
+  position: relative;
+  height: 3.35em;
+  padding: 0 1em;
+}
+
+.oo-ui-processDialog-location {
+  height: 3.35em;
+  padding: 0.25em 0;
+  text-align: center;
+  cursor: default;
+}
+
+.oo-ui-processDialog-title {
+  font-weight: bold;
+  line-height: 1.85em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonedElement-button {
+  min-width: 1.85em;
+  min-height: 1.85em;
+  padding-top: 0.75em;
+  padding-bottom: 0.75em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labeledElement-label,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labeledElement-label,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labeledElement-label {
+  padding: 0 1em;
+  line-height: 1.85em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconedElement-icon,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconedElement-icon,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconedElement-icon {
+  position: absolute;
+  margin-top: -0.125em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
+  margin: 0.75em 0.75em 0.75em 0;
+  border: solid 1px #ccc;
+  border-radius: 0.25em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
+  padding: 0;
+  vertical-align: middle;
+}
+
+.oo-ui-processDialog-actions-safe.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-primary.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
+  margin: 0.75em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
+  background-color: rgba(0, 0, 0, 0.1);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
+  margin: 0.75em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
+  /* Adjust for border so text aligns with title */
+
+  margin: -1px;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
+  background-color: rgba(8, 126, 204, 0.05);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active {
+  background-color: rgba(8, 126, 204, 0.1);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
+  font-weight: bold;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover {
+  background-color: rgba(118, 171, 54, 0.05);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active {
+  background-color: rgba(118, 171, 54, 0.1);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover {
+  background-color: rgba(212, 83, 83, 0.05);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active {
+  background-color: rgba(212, 83, 83, 0.1);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
+  right: 0.5em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
+  padding-right: 2.25em;
+}
+
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
+  left: 0.5em;
+}
+
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
+  padding-left: 2.25em;
+}
+
+.oo-ui-processDialog > .oo-ui-window-frame {
+  min-height: 5em;
+}
+
+.oo-ui-processDialog-errors {
+  padding: 3em 3em 1.5em 3em;
+  text-align: center;
+  background-color: rgba(255, 255, 255, 0.9);
+}
+
+.oo-ui-processDialog-errors .oo-ui-buttonWidget {
+  margin: 2em 1em 2em 1em;
+}
+
+.oo-ui-processDialog-errors-title {
+  margin-bottom: 2em;
+  font-size: 1.5em;
+  color: #000;
+}
+
+.oo-ui-processDialog-error {
+  padding: 1em;
+  margin: 1em;
+  text-align: right;
+  background-color: #fff7f7;
+  border: solid 1px #ff9e9e;
+  border-radius: 0.25em;
+}
+
+.oo-ui-buttonedElement.oo-ui-indicatedElement .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
+.oo-ui-buttonedElement.oo-ui-iconedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  width: 3.35em;
+  height: 3.35em;
+  background-size: 2em auto;
+}
+
+.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
+  padding: 0 0 1em;
+}
+
+.oo-ui-optionWidget {
+  padding: 0.8em 3.35em 0.8em 1em;
+  font-weight: bold;
+  border-bottom: 1px solid #dddddd;
+}
+
+.oo-ui-optionWidget.oo-ui-indicatedElement .oo-ui-labeledElement-label {
+  padding-left: 1.5em;
+}
+
+.oo-ui-optionWidget-level-0 {
+  padding-right: 3.5em;
+}
+
+.oo-ui-optionWidget-level-0 .oo-ui-iconedElement-icon {
+  right: 1em;
+}
+
+.oo-ui-optionWidget-level-1 {
+  padding-right: 5em;
+}
+
+.oo-ui-optionWidget-level-1 .oo-ui-iconedElement-icon {
+  right: 2.5em;
+}
+
+.oo-ui-optionWidget-level-2 {
+  padding-right: 6.5em;
+}
+
+.oo-ui-optionWidget-level-2 .oo-ui-iconedElement-icon {
+  right: 4em;
+}
+
+.oo-ui-buttonOptionWidget {
+  padding: 0;
+}
+
+.oo-ui-lookupWidget-menu {
+  background-color: #fff;
+}
+
+.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
+  color: #ffffff;
+  background: #347bff;
+}
+
+.oo-ui-menuSectionItemWidget {
+  font-weight: normal;
+  color: #777777;
+  border: none;
+}
+
+.oo-ui-textInputWidget input,
+.oo-ui-textInputWidget textarea {
+  padding: .8em 1em;
+}
+
+/* Icons */
+
+.oo-ui-icon-check {
+  background: #347bff;
+  background-image: /* @embed */ url(themes/agora/images/icons/check.svg);
+}
\ No newline at end of file
index 7bc9be8..eefbbc4 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (97dbb50137)
+ * OOjs UI v0.1.0-pre (a7ce4d48d9)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-07-16T22:59:48Z
+ * Date: 2014-07-23T23:48:16Z
  */
 .oo-ui-dialog-content > .oo-ui-window-head,
 .oo-ui-dialog-content > .oo-ui-window-body,
 
 .oo-ui-processDialog-location {
   height: 1.9em;
-  padding: 0.75em 0;
+  padding: 0.25em 0;
   text-align: center;
   cursor: default;
 }
   margin-top: -0.125em;
 }
 
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
+  margin: 0.75em 0 0.75em 0.75em;
+}
+
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
   vertical-align: middle;
 }
 
-.oo-ui-processDialog-actions-safe.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  margin: 0.75em;
-}
-
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
   background-color: rgba(0, 0, 0, 0.05);
   background-color: rgba(0, 0, 0, 0.1);
 }
 
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
+  margin: 0.75em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
+  /* Adjust for border so text aligns with title */
+
+  margin: -1px;
+}
+
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
   background-color: rgba(8, 126, 204, 0.05);
   padding-right: 2.25em;
 }
 
-.oo-ui-processDialog-actions-other:not(:empty) {
-  padding: 0.75em;
-}
-
-.oo-ui-processDialog-actions-other:not(:empty) .oo-ui-actionWidget {
-  margin: 0 0.75em 0 0;
-}
-
 .oo-ui-processDialog > .oo-ui-window-frame {
   min-height: 5em;
 }
diff --git a/resources/lib/oojs-ui/oojs-ui-apex.rtl.css b/resources/lib/oojs-ui/oojs-ui-apex.rtl.css
new file mode 100644 (file)
index 0000000..3cbb677
--- /dev/null
@@ -0,0 +1,1103 @@
+/*!
+ * OOjs UI v0.1.0
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2014 OOjs Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2014-07-22T21:39:24Z
+ */
+.oo-ui-dialog-content > .oo-ui-window-head,
+.oo-ui-dialog-content > .oo-ui-window-body,
+.oo-ui-dialog-content > .oo-ui-window-foot {
+  position: absolute;
+  left: 0;
+  right: 0;
+  overflow: hidden;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-dialog-content > .oo-ui-window-head {
+  top: 0;
+  z-index: 1;
+}
+
+.oo-ui-dialog-content > .oo-ui-window-body {
+  top: 0;
+  bottom: 0;
+  z-index: 2;
+  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
+}
+
+.oo-ui-dialog-content > .oo-ui-window-foot {
+  bottom: 0;
+  z-index: 1;
+}
+
+.oo-ui-dialog-content > .oo-ui-window-overlay {
+  z-index: 3;
+}
+
+.oo-ui-frame-content {
+  font-family: sans-serif;
+  font-size: 0.8em;
+}
+
+.oo-ui-toolbar-bar {
+  background: #f8fbfd;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f1f7fb));
+  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+  background-image: -moz-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+  background-image: -ms-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+  background-image: -o-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+  background-image: linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+  border-bottom: solid 1px #ccc;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#f1f7fb');
+}
+
+.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
+  background: none;
+  border: none;
+}
+
+.oo-ui-toolbar-shadow {
+  bottom: -9px;
+  height: 9px;
+  background-image: /* @embed */ url(images/toolbar-shadow.png);
+  opacity: 0.125;
+  -webkit-transition: opacity 500ms ease-in-out;
+     -moz-transition: opacity 500ms ease-in-out;
+      -ms-transition: opacity 500ms ease-in-out;
+       -o-transition: opacity 500ms ease-in-out;
+          transition: opacity 500ms ease-in-out;
+}
+
+.oo-ui-toolGroup {
+  border: solid 1px transparent;
+  border-radius: 0.25em;
+  -webkit-transition: border-color 300ms ease-in-out;
+     -moz-transition: border-color 300ms ease-in-out;
+      -ms-transition: border-color 300ms ease-in-out;
+       -o-transition: border-color 300ms ease-in-out;
+          transition: border-color 300ms ease-in-out;
+}
+
+.oo-ui-toolGroup.oo-ui-widget-enabled:hover {
+  border-color: rgba(0, 0, 0, 0.1);
+}
+
+.oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
+  color: #000;
+}
+
+.oo-ui-window-content {
+  background: transparent;
+}
+
+.oo-ui-window-overlay {
+  font-family: sans-serif;
+  font-size: 1em;
+  line-height: 1.5em;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog {
+  background-color: rgba(255, 255, 255, 0.5);
+  opacity: 0;
+  -webkit-transition: opacity 250ms ease-in-out;
+     -moz-transition: opacity 250ms ease-in-out;
+      -ms-transition: opacity 250ms ease-in-out;
+       -o-transition: opacity 250ms ease-in-out;
+          transition: opacity 250ms ease-in-out;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
+  top: 1em;
+  bottom: 1em;
+  background-color: #fff;
+  -webkit-transform: scale(0.5);
+     -moz-transform: scale(0.5);
+      -ms-transform: scale(0.5);
+       -o-transform: scale(0.5);
+          transform: scale(0.5);
+  -webkit-transition: all 250ms ease-in-out;
+     -moz-transition: all 250ms ease-in-out;
+      -ms-transition: all 250ms ease-in-out;
+       -o-transition: all 250ms ease-in-out;
+          transition: all 250ms ease-in-out;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
+  opacity: 1;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
+  -webkit-transform: scale(1);
+     -moz-transform: scale(1);
+      -ms-transform: scale(1);
+       -o-transform: scale(1);
+          transform: scale(1);
+}
+
+.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
+  border: solid 1px #ccc;
+  border-radius: 0.5em;
+  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
+}
+
+.oo-ui-messageDialog-content .oo-ui-window-body {
+  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
+}
+
+.oo-ui-messageDialog-title,
+.oo-ui-messageDialog-message {
+  display: block;
+  padding-top: 0.5em;
+  text-align: center;
+}
+
+.oo-ui-messageDialog-title {
+  font-size: 1.5em;
+  line-height: 1em;
+  color: #000;
+}
+
+.oo-ui-messageDialog-message {
+  font-size: 0.9em;
+  line-height: 1.25em;
+  color: #666;
+}
+
+.oo-ui-messageDialog-message-verbose {
+  font-size: 1.1em;
+  line-height: 1.5em;
+  text-align: right;
+}
+
+.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
+  border-left: solid 1px #e5e5e5;
+}
+
+.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
+  border-left-width: 0;
+}
+
+.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
+  border-bottom: solid 1px #e5e5e5;
+}
+
+.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
+  border-bottom-width: 0;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label {
+  padding: 0 2em;
+  line-height: 3.4em;
+  text-align: center;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
+  background-color: rgba(0, 0, 0, 0.1);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
+  background-color: rgba(8, 126, 204, 0.05);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active {
+  background-color: rgba(8, 126, 204, 0.1);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
+  font-weight: bold;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover {
+  background-color: rgba(118, 171, 54, 0.05);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active {
+  background-color: rgba(118, 171, 54, 0.1);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover {
+  background-color: rgba(212, 83, 83, 0.05);
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active {
+  background-color: rgba(212, 83, 83, 0.1);
+}
+
+.oo-ui-processDialog-content .oo-ui-window-head {
+  height: 3.4em;
+}
+
+.oo-ui-processDialog-content .oo-ui-window-body {
+  top: 3.4em;
+  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
+}
+
+.oo-ui-processDialog-navigation {
+  position: relative;
+  height: 3.4em;
+  padding: 0 1em;
+}
+
+.oo-ui-processDialog-location {
+  height: 1.9em;
+  padding: 0.25em 0;
+  text-align: center;
+  cursor: default;
+}
+
+.oo-ui-processDialog-title {
+  font-weight: bold;
+  line-height: 1.9em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonedElement-button {
+  min-width: 1.9em;
+  min-height: 1.9em;
+  padding-top: 0.75em;
+  padding-bottom: 0.75em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labeledElement-label,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labeledElement-label,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labeledElement-label {
+  padding: 0 1em;
+  line-height: 1.9em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconedElement-icon,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconedElement-icon,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconedElement-icon {
+  position: absolute;
+  margin-top: -0.125em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
+  margin: 0.75em 0.75em 0.75em 0;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
+  padding: 0;
+  vertical-align: middle;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
+  background-color: rgba(0, 0, 0, 0.1);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
+  margin: 0.75em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
+  /* Adjust for border so text aligns with title */
+
+  margin: -1px;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
+  background-color: rgba(8, 126, 204, 0.05);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active {
+  background-color: rgba(8, 126, 204, 0.1);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
+  font-weight: bold;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover {
+  background-color: rgba(118, 171, 54, 0.05);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active {
+  background-color: rgba(118, 171, 54, 0.1);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover {
+  background-color: rgba(212, 83, 83, 0.05);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active {
+  background-color: rgba(212, 83, 83, 0.1);
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
+  right: 0.5em;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
+  padding-right: 2.25em;
+}
+
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
+  left: 0.5em;
+}
+
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
+  padding-left: 2.25em;
+}
+
+.oo-ui-processDialog > .oo-ui-window-frame {
+  min-height: 5em;
+}
+
+.oo-ui-processDialog-errors {
+  padding: 3em 3em 1.5em 3em;
+  text-align: center;
+  background-color: rgba(255, 255, 255, 0.9);
+}
+
+.oo-ui-processDialog-errors .oo-ui-buttonWidget {
+  margin: 2em 1em 2em 1em;
+}
+
+.oo-ui-processDialog-errors-title {
+  margin-bottom: 2em;
+  font-size: 1.5em;
+  color: #000;
+}
+
+.oo-ui-processDialog-error {
+  padding: 1em;
+  margin: 1em;
+  text-align: right;
+  background-color: #fff7f7;
+  border: solid 1px #ff9e9e;
+  border-radius: 0.25em;
+}
+
+.oo-ui-buttonedElement > .oo-ui-buttonedElement-button {
+  color: #333;
+}
+
+.oo-ui-buttonedElement.oo-ui-indicatedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
+.oo-ui-buttonedElement.oo-ui-iconedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  width: 1.9em;
+  height: 1.9em;
+  opacity: 0.8;
+}
+
+.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  /* Don't animate opacities for now, causes wiggling in Chrome (bug 63020) */
+
+  /*.oo-ui-transition(opacity 200ms);*/
+
+}
+
+.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:hover > .oo-ui-iconedElement-icon,
+.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:focus > .oo-ui-iconedElement-icon {
+  opacity: 1;
+}
+
+.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:hover > .oo-ui-labeledElement-label,
+.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:focus > .oo-ui-labeledElement-label {
+  color: #000;
+}
+
+.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
+  color: #333;
+}
+
+.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
+  color: #087ecc;
+}
+
+.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
+  color: #76ab36;
+}
+
+.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-destructive > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
+  color: #d45353;
+}
+
+.oo-ui-buttonedElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
+.oo-ui-buttonedElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
+  color: #ccc;
+}
+
+.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button {
+  padding: 0.2em 0.8em;
+  margin: 0.1em 0;
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
+  background: #eeeeee;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
+  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  border: 1px #c9c9c9 solid;
+  border-radius: 0.3em;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
+  -webkit-transition: border-color 100ms ease-in-out;
+     -moz-transition: border-color 100ms ease-in-out;
+      -ms-transition: border-color 100ms ease-in-out;
+       -o-transition: border-color 100ms ease-in-out;
+          transition: border-color 100ms ease-in-out;
+}
+
+.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button:hover,
+.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button:focus {
+  border-color: #aaa;
+}
+
+.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
+.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
+  color: black;
+  background: #eeeeee;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
+  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  border-color: #c9c9c9;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
+  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-iconedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  margin-left: -0.5em;
+  margin-right: -0.5em;
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-iconedElement.oo-ui-labeledElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  margin-left: 0.3em;
+  margin-right: -0.5em;
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button {
+  background: #cde7f4;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eaf4fa), color-stop(100%, #b0d9ee));
+  background-image: -webkit-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+  background-image: -moz-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+  background-image: -ms-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+  background-image: -o-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+  background-image: linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+  border: solid 1px #a6cee1;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#eaf4fa', endColorstr='#b0d9ee');
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button:hover,
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button:focus {
+  border-color: #9dc2d4;
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
+  background: #cde7f4;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
+  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  border: solid 1px #a6cee1;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button {
+  background: #daf0be;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f0fbe1), color-stop(100%, #c3e59a));
+  background-image: -webkit-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+  background-image: -moz-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+  background-image: -ms-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+  background-image: -o-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+  background-image: linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+  border: solid 1px #b8d892;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0fbe1', endColorstr='#c3e59a');
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button:hover,
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button:focus {
+  border-color: #adcb89;
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
+  background: #daf0be;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #c3e59a), color-stop(100%, #f0fbe1));
+  background-image: -webkit-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+  background-image: -moz-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+  background-image: -ms-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+  background-image: -o-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+  background-image: linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+  border: solid 1px #b8d892;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c3e59a', endColorstr='#f0fbe1');
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-destructive > .oo-ui-buttonedElement-button {
+  color: #d45353;
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
+  color: #333;
+  background: #eee;
+  border-color: #ccc;
+  opacity: 0.5;
+  box-shadow: none;
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button:hover,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active:hover,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed:hover,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button:focus,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active:focus,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed:focus {
+  border-color: #ccc;
+  box-shadow: none;
+}
+
+.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
+  padding: 1.5em;
+}
+
+.oo-ui-bookletLayout-outlinePanel {
+  border-left: solid 1px #ddd;
+}
+
+.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
+  box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
+}
+
+.oo-ui-fieldLayout-disabled .oo-ui-labeledElement-label {
+  color: #ccc;
+}
+
+.oo-ui-fieldsetLayout {
+  border: none;
+}
+
+.oo-ui-fieldsetLayout > .oo-ui-labeledElement-label {
+  font-size: 1.5em;
+}
+
+.oo-ui-panelLayout-padded {
+  padding: 1.25em;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool {
+  margin: -1px -1px -1px 0;
+  border: solid 1px transparent;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool:first-child {
+  border-bottom-right-radius: 0.25em;
+  border-top-right-radius: 0.25em;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool:last-child {
+  margin-left: -1px;
+  border-top-left-radius: 0.25em;
+  border-bottom-left-radius: 0.25em;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.8;
+}
+
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover {
+  border-color: rgba(0, 0, 0, 0.2);
+}
+
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled {
+  background: #f8fbfd;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
+  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  border-color: rgba(0, 0, 0, 0.2);
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
+  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
+}
+
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
+  border-right-color: rgba(0, 0, 0, 0.1);
+}
+
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.8;
+}
+
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 1;
+}
+
+.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
+.oo-ui-listToolGroup.oo-ui-popupToolGroup-active {
+  border-color: rgba(0, 0, 0, 0.2);
+}
+
+.oo-ui-listToolGroup .oo-ui-tool {
+  margin: -1px 0;
+  border: solid 1px transparent;
+}
+
+.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
+  background: #f8fbfd;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
+  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  border-color: rgba(0, 0, 0, 0.1);
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
+  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
+}
+
+.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
+  border-top-color: rgba(0, 0, 0, 0.1);
+}
+
+.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover {
+  border-color: rgba(0, 0, 0, 0.2);
+}
+
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
+  border-color: rgba(0, 0, 0, 0.2);
+}
+
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.8;
+}
+
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 1;
+}
+
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
+  color: #ccc;
+}
+
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
+.oo-ui-listToolGroup.oo-ui-widget-disabled {
+  color: #ccc;
+}
+
+.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator,
+.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
+.oo-ui-menuToolGroup {
+  border-color: rgba(0, 0, 0, 0.1);
+}
+
+.oo-ui-menuToolGroup.oo-ui-widget-enabled:hover {
+  border-color: rgba(0, 0, 0, 0.2);
+}
+
+.oo-ui-menuToolGroup.oo-ui-popupToolGroup-active {
+  border-color: rgba(0, 0, 0, 0.25);
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
+  background-color: #e1f3ff;
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
+  color: #ccc;
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
+.oo-ui-menuToolGroup.oo-ui-widget-disabled {
+  color: #ccc;
+  border-color: rgba(0, 0, 0, 0.05);
+}
+
+.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator,
+.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
+.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,
+.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
+  opacity: 0.8;
+}
+
+.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
+  background-color: white;
+  border: solid 1px #ccc;
+  box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25);
+}
+
+.oo-ui-popupToolGroup-active.oo-ui-widget-enabled {
+  background: #f8fbfd;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
+  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  border-bottom-left-radius: 0;
+  border-bottom-right-radius: 0;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
+  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
+}
+
+.oo-ui-optionWidget {
+  padding: 0.5em 3em 0.5em 2em;
+}
+
+.oo-ui-optionWidget-highlighted {
+  background-color: #e1f3ff;
+}
+
+.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected {
+  background-color: #a7dcff;
+}
+
+.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed {
+  background-color: #a7dcff;
+}
+
+.oo-ui-optionWidget.oo-ui-widget-disabled {
+  color: #ccc;
+}
+
+.oo-ui-menuWidget {
+  margin-top: -1px;
+  background: #fff;
+  border: solid 1px #ccc;
+  border-radius: 0 0 0.25em 0.25em;
+  box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
+}
+
+.oo-ui-popupWidget-popup {
+  background-color: #fff;
+  border: solid 1px #ccc;
+  border-radius: 0.25em;
+  box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2);
+}
+
+.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
+  width: 15px;
+  height: 8px;
+  margin-right: -7px;
+  background-image: /* @embed */ url(images/anchor.svg);
+}
+
+.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
+  -webkit-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
+     -moz-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
+      -ms-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
+       -o-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
+          transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
+}
+
+.oo-ui-popupWidget-body {
+  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
+}
+
+.oo-ui-buttonGroupWidget {
+  display: inline-block;
+  white-space: nowrap;
+}
+
+.oo-ui-buttonOptionWidget {
+  padding: 0;
+}
+
+.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
+.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
+.oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
+  background-color: transparent;
+}
+
+.oo-ui-buttonSelectWidget {
+  border-radius: 0.3em;
+}
+
+.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button {
+  margin-right: -1px;
+  border-radius: 0;
+}
+
+.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonedElement-button {
+  margin-right: 0;
+  border-bottom-right-radius: 0.3em;
+  border-top-right-radius: 0.3em;
+}
+
+.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonedElement-button {
+  border-top-left-radius: 0.3em;
+  border-bottom-left-radius: 0.3em;
+}
+
+.oo-ui-inlineMenuWidget-handle {
+  border: solid 1px rgba(0, 0, 0, 0.1);
+  border-radius: 0.25em;
+}
+
+.oo-ui-inlineMenuWidget-handle:hover {
+  border-color: rgba(0, 0, 0, 0.2);
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,
+.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
+  opacity: 0.8;
+}
+
+.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
+  color: #ccc;
+  text-shadow: 0 1px 1px #fff;
+  background-color: #f3f3f3;
+  border-color: #ddd;
+}
+
+.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator {
+  opacity: 0.2;
+}
+
+.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
+  background-color: transparent;
+}
+
+.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted,
+.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected {
+  background-color: #e1f3ff;
+}
+
+.oo-ui-menuSectionItemWidget {
+  padding: 0.33em 0.75em;
+  color: #888;
+}
+
+.oo-ui-outlineControlsWidget {
+  background-color: #fff;
+}
+
+.oo-ui-outlineControlsWidget > .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
+.oo-ui-outlineItemWidget {
+  font-size: 1.1em;
+}
+
+.oo-ui-outlineItemWidget.oo-ui-indicatedElement .oo-ui-labeledElement-label {
+  padding-left: 1.5em;
+}
+
+.oo-ui-outlineItemWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator {
+  opacity: 0.5;
+}
+
+.oo-ui-outlineItemWidget-level-0 {
+  padding-right: 3.5em;
+}
+
+.oo-ui-outlineItemWidget-level-0 .oo-ui-iconedElement-icon {
+  right: 1em;
+}
+
+.oo-ui-outlineItemWidget-level-1 {
+  padding-right: 5em;
+}
+
+.oo-ui-outlineItemWidget-level-1 .oo-ui-iconedElement-icon {
+  right: 2.5em;
+}
+
+.oo-ui-outlineItemWidget-level-2 {
+  padding-right: 6.5em;
+}
+
+.oo-ui-outlineItemWidget-level-2 .oo-ui-iconedElement-icon {
+  right: 4em;
+}
+
+.oo-ui-selectWidget-depressed .oo-ui-outlineItemWidget.oo-ui-optionWidget-selected {
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
+  background-color: #a7dcff;
+}
+
+.oo-ui-outlineItemWidget.oo-ui-flaggableElement-important {
+  font-weight: bold;
+}
+
+.oo-ui-outlineItemWidget.oo-ui-flaggableElement-placeholder {
+  font-style: italic;
+}
+
+.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-iconedElement-icon {
+  opacity: 0.5;
+}
+
+.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-labeledElement-label {
+  color: #777;
+}
+
+.oo-ui-searchWidget-query {
+  box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.2);
+}
+
+.oo-ui-textInputWidget {
+  width: 20em;
+}
+
+.oo-ui-textInputWidget input,
+.oo-ui-textInputWidget textarea {
+  padding: 0.5em;
+  font-family: sans-serif;
+  font-size: 1em;
+  background-color: #fff;
+  border: solid 1px #ccc;
+  border-radius: 0.25em;
+  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
+  -webkit-transition: border-color 200ms, box-shadow 200ms;
+     -moz-transition: border-color 200ms, box-shadow 200ms;
+      -ms-transition: border-color 200ms, box-shadow 200ms;
+       -o-transition: border-color 200ms, box-shadow 200ms;
+          transition: border-color 200ms, box-shadow 200ms;
+}
+
+.oo-ui-textInputWidget-decorated input,
+.oo-ui-textInputWidget-decorated textarea {
+  padding-right: 2em;
+}
+
+.oo-ui-textInputWidget-icon {
+  width: 2em;
+}
+
+.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
+  border-color: #a7dcff;
+  outline: none;
+  box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white;
+}
+
+.oo-ui-textInputWidget input[readonly],
+.oo-ui-textInputWidget textarea[readonly] {
+  color: #777;
+  text-shadow: 0 1px 1px #fff;
+}
+
+.oo-ui-textInputWidget-pending input,
+.oo-ui-textInputWidget-pending textarea {
+  background-color: transparent;
+}
+
+.oo-ui-textInputWidget.oo-ui-widget-disabled input,
+.oo-ui-textInputWidget.oo-ui-widget-disabled input:focus,
+.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,
+.oo-ui-textInputWidget.oo-ui-widget-disabled textarea:focus {
+  color: #ccc;
+  text-shadow: 0 1px 1px #fff;
+  background-color: #f3f3f3;
+  border-color: #ddd;
+}
+
+.oo-ui-toggleSwitchWidget {
+  background: #eeeeee;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
+  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  border: solid 1px #ccc;
+  border-radius: 1em;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
+  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
+}
+
+.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
+  opacity: 0.5;
+}
+
+.oo-ui-toggleSwitchWidget-grip {
+  background: #eeeeee;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
+  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  border: 1px #c9c9c9 solid;
+  border-radius: 1em;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
+  box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
+}
+
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover,
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip {
+  border-color: #aaa;
+}
+
+.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
+  background: #cde7f4;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
+  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  border-radius: 1em;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
+  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
+}
+
+.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow {
+  opacity: 1;
+}
+
+.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
+  display: block;
+  opacity: 0;
+}
\ No newline at end of file
index 389fb9f..2c271aa 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (97dbb50137)
+ * OOjs UI v0.1.0-pre (a7ce4d48d9)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-07-16T22:59:48Z
+ * Date: 2014-07-23T23:48:16Z
  */
 ( function ( OO ) {
 
@@ -1920,7 +1920,7 @@ OO.ui.Window.prototype.ready = function ( data ) {
        var win = this,
                deferred = $.Deferred();
 
-       this.frame.$content.focus();
+       this.frame.$content[0].focus();
        this.getReadyProcess( data ).execute().done( function () {
                // Force redraw by asking the browser to measure the elements' widths
                win.$element.addClass( 'oo-ui-window-ready' ).width();
@@ -1945,7 +1945,10 @@ OO.ui.Window.prototype.hold = function ( data ) {
                deferred = $.Deferred();
 
        this.getHoldProcess( data ).execute().done( function () {
-               win.frame.$content.find( ':focus' ).blur();
+               var $focused = win.frame.$content.find( ':focus' );
+               if ( $focused.length ) {
+                       $focused[0].blur();
+               }
                // Force redraw by asking the browser to measure the elements' widths
                win.$element.removeClass( 'oo-ui-window-ready' ).width();
                win.frame.$content.removeClass( 'oo-ui-window-content-ready' ).width();
@@ -3549,9 +3552,10 @@ OO.ui.ClippableElement.prototype.clip = function () {
 
        var buffer = 10,
                cOffset = this.$clippable.offset(),
-               ccOffset = this.$clippableContainer.offset() || { 'top': 0, 'left': 0 },
-               ccHeight = this.$clippableContainer.innerHeight() - buffer,
-               ccWidth = this.$clippableContainer.innerWidth() - buffer,
+               $container = this.$clippableContainer.is( 'body' ) ? this.$clippableWindow : this.$clippableContainer,
+               ccOffset = $container.offset() || { 'top': 0, 'left': 0 },
+               ccHeight = $container.innerHeight() - buffer,
+               ccWidth = $container.innerWidth() - buffer,
                scrollTop = this.$clippableScroller.scrollTop(),
                scrollLeft = this.$clippableScroller.scrollLeft(),
                desiredWidth = ( ccOffset.left + scrollLeft + ccWidth ) - cOffset.left,
@@ -4608,7 +4612,7 @@ OO.ui.Toolbar = function OoUiToolbar( toolFactory, toolGroupFactory, config ) {
        // Events
        this.$element
                .add( this.$bar ).add( this.$group ).add( this.$actions )
-               .on( 'mousedown', OO.ui.bind( this.onMouseDown, this ) );
+               .on( 'mousedown touchstart', OO.ui.bind( this.onPointerDown, this ) );
 
        // Initialization
        this.$group.addClass( 'oo-ui-toolbar-tools' );
@@ -4655,7 +4659,7 @@ OO.ui.Toolbar.prototype.getToolGroupFactory = function () {
  *
  * @param {jQuery.Event} e Mouse down event
  */
-OO.ui.Toolbar.prototype.onMouseDown = function ( e ) {
+OO.ui.Toolbar.prototype.onPointerDown = function ( e ) {
        var $closestWidgetToEvent = this.$( e.target ).closest( '.oo-ui-widget' ),
                $closestWidgetToToolbar = this.$element.closest( '.oo-ui-widget' );
        if ( !$closestWidgetToEvent.length || $closestWidgetToEvent[0] === $closestWidgetToToolbar[0] ) {
@@ -4824,8 +4828,8 @@ OO.ui.ToolGroup = function OoUiToolGroup( toolbar, config ) {
 
        // Events
        this.$element.on( {
-               'mousedown': OO.ui.bind( this.onMouseDown, this ),
-               'mouseup': OO.ui.bind( this.onMouseUp, this ),
+               'mousedown touchstart': OO.ui.bind( this.onPointerDown, this ),
+               'mouseup touchend': OO.ui.bind( this.onPointerUp, this ),
                'mouseover': OO.ui.bind( this.onMouseOver, this ),
                'mouseout': OO.ui.bind( this.onMouseOut, this )
        } );
@@ -4914,8 +4918,9 @@ OO.ui.ToolGroup.prototype.updateDisabled = function () {
  *
  * @param {jQuery.Event} e Mouse down event
  */
-OO.ui.ToolGroup.prototype.onMouseDown = function ( e ) {
-       if ( !this.isDisabled() && e.which === 1 ) {
+OO.ui.ToolGroup.prototype.onPointerDown = function ( e ) {
+       // e.which is 0 for touch events, 1 for left mouse button
+       if ( !this.isDisabled() && e.which <= 1 ) {
                this.pressed = this.getTargetTool( e );
                if ( this.pressed ) {
                        this.pressed.setActive( true );
@@ -4934,9 +4939,9 @@ OO.ui.ToolGroup.prototype.onMouseDown = function ( e ) {
  */
 OO.ui.ToolGroup.prototype.onCapturedMouseUp = function ( e ) {
        this.getElementDocument().removeEventListener( 'mouseup', this.onCapturedMouseUpHandler, true );
-       // onMouseUp may be called a second time, depending on where the mouse is when the button is
+       // onPointerUp may be called a second time, depending on where the mouse is when the button is
        // released, but since `this.pressed` will no longer be true, the second call will be ignored.
-       this.onMouseUp( e );
+       this.onPointerUp( e );
 };
 
 /**
@@ -4944,10 +4949,11 @@ OO.ui.ToolGroup.prototype.onCapturedMouseUp = function ( e ) {
  *
  * @param {jQuery.Event} e Mouse up event
  */
-OO.ui.ToolGroup.prototype.onMouseUp = function ( e ) {
+OO.ui.ToolGroup.prototype.onPointerUp = function ( e ) {
        var tool = this.getTargetTool( e );
 
-       if ( !this.isDisabled() && e.which === 1 && this.pressed && this.pressed === tool ) {
+       // e.which is 0 for touch events, 1 for left mouse button
+       if ( !this.isDisabled() && e.which <= 1 && this.pressed && this.pressed === tool ) {
                this.pressed.onSelect();
        }
 
@@ -5157,8 +5163,8 @@ OO.ui.MessageDialog.static.title = null;
 OO.ui.MessageDialog.static.message = null;
 
 OO.ui.MessageDialog.static.actions = [
-       { 'label': OO.ui.deferMsg( 'ooui-dialog-message-accept' ), 'flags': 'primary' },
-       { 'label': OO.ui.deferMsg( 'ooui-dialog-message-reject' ), 'flags': 'safe' }
+       { 'action': 'accept', 'label': OO.ui.deferMsg( 'ooui-dialog-message-accept' ), 'flags': 'primary' },
+       { 'action': 'reject', 'label': OO.ui.deferMsg( 'ooui-dialog-message-reject' ), 'flags': 'safe' }
 ];
 
 /* Methods */
@@ -5455,7 +5461,7 @@ OO.ui.ProcessDialog.prototype.attachActions = function () {
        others = this.actions.getOthers();
        if ( special.primary ) {
                this.$primaryActions.append( special.primary.$element );
-               special.primary.toggleFramed( false );
+               special.primary.toggleFramed( true );
        }
        if ( others.length ) {
                for ( i = 0, len = others.length; i < len; i++ ) {
@@ -5466,7 +5472,7 @@ OO.ui.ProcessDialog.prototype.attachActions = function () {
        }
        if ( special.safe ) {
                this.$safeActions.append( special.safe.$element );
-               special.safe.toggleFramed( false );
+               special.safe.toggleFramed( true );
        }
 
        this.fitLabel();
@@ -5657,13 +5663,16 @@ OO.ui.BookletLayout.prototype.onStackLayoutFocus = function ( e ) {
  * @param {OO.ui.PanelLayout|null} page The page panel that is now the current panel
  */
 OO.ui.BookletLayout.prototype.onStackLayoutSet = function ( page ) {
-       var layout = this;
+       var $input, layout = this;
        if ( page ) {
                page.scrollElementIntoView( { 'complete': function () {
                        if ( layout.autoFocus ) {
                                // Set focus to the first input if nothing on the page is focused yet
                                if ( !page.$element.find( ':focus' ).length ) {
-                                       page.$element.find( ':input:first' ).focus();
+                                       $input = page.$element.find( ':input:first' );
+                                       if ( $input.length ) {
+                                               $input[0].focus();
+                                       }
                                }
                        }
                } } );
@@ -5914,6 +5923,7 @@ OO.ui.BookletLayout.prototype.clearPages = function () {
  */
 OO.ui.BookletLayout.prototype.setPage = function ( name ) {
        var selectedItem,
+               $focused,
                page = this.pages[name];
 
        if ( name !== this.currentPageName ) {
@@ -5930,7 +5940,10 @@ OO.ui.BookletLayout.prototype.setPage = function ( name ) {
                                // is not needed if the next page has something focusable because once it is focused
                                // this blur happens automatically
                                if ( this.autoFocus && !page.$element.find( ':input' ).length ) {
-                                       this.pages[this.currentPageName].$element.find( ':focus' ).blur();
+                                       $focused = this.pages[this.currentPageName].$element.find( ':focus' );
+                                       if ( $focused.length ) {
+                                               $focused[0].blur();
+                                       }
                                }
                        }
                        this.currentPageName = name;
@@ -6741,8 +6754,8 @@ OO.ui.PopupToolGroup = function OoUiPopupToolGroup( toolbar, config ) {
 
        // Events
        this.$handle.on( {
-               'mousedown': OO.ui.bind( this.onHandleMouseDown, this ),
-               'mouseup': OO.ui.bind( this.onHandleMouseUp, this )
+               'mousedown touchstart': OO.ui.bind( this.onHandlePointerDown, this ),
+               'mouseup touchend': OO.ui.bind( this.onHandlePointerUp, this )
        } );
 
        // Initialization
@@ -6806,11 +6819,12 @@ OO.ui.PopupToolGroup.prototype.onBlur = function ( e ) {
 /**
  * @inheritdoc
  */
-OO.ui.PopupToolGroup.prototype.onMouseUp = function ( e ) {
-       if ( !this.isDisabled() && e.which === 1 ) {
+OO.ui.PopupToolGroup.prototype.onPointerUp = function ( e ) {
+       // e.which is 0 for touch events, 1 for left mouse button
+       if ( !this.isDisabled() && e.which <= 1 ) {
                this.setActive( false );
        }
-       return OO.ui.PopupToolGroup.super.prototype.onMouseUp.call( this, e );
+       return OO.ui.PopupToolGroup.super.prototype.onPointerUp.call( this, e );
 };
 
 /**
@@ -6818,7 +6832,7 @@ OO.ui.PopupToolGroup.prototype.onMouseUp = function ( e ) {
  *
  * @param {jQuery.Event} e Mouse up event
  */
-OO.ui.PopupToolGroup.prototype.onHandleMouseUp = function () {
+OO.ui.PopupToolGroup.prototype.onHandlePointerUp = function () {
        return false;
 };
 
@@ -6827,8 +6841,9 @@ OO.ui.PopupToolGroup.prototype.onHandleMouseUp = function () {
  *
  * @param {jQuery.Event} e Mouse down event
  */
-OO.ui.PopupToolGroup.prototype.onHandleMouseDown = function ( e ) {
-       if ( !this.isDisabled() && e.which === 1 ) {
+OO.ui.PopupToolGroup.prototype.onHandlePointerDown = function ( e ) {
+       // e.which is 0 for touch events, 1 for left mouse button
+       if ( !this.isDisabled() && e.which <= 1 ) {
                this.setActive( !this.active );
        }
        return false;
@@ -8283,7 +8298,7 @@ OO.ui.InputWidget.prototype.simulateLabelClick = function () {
                if ( this.$input.is( ':checkbox,:radio' ) ) {
                        this.$input.click();
                } else if ( this.$input.is( ':input' ) ) {
-                       this.$input.focus();
+                       this.$input[0].focus();
                }
        }
 };
@@ -8328,7 +8343,7 @@ OO.ui.InputWidget.prototype.setDisabled = function ( state ) {
  * @chainable
  */
 OO.ui.InputWidget.prototype.focus = function () {
-       this.$input.focus();
+       this.$input[0].focus();
        return this;
 };
 
@@ -8338,7 +8353,7 @@ OO.ui.InputWidget.prototype.focus = function () {
  * @chainable
  */
 OO.ui.InputWidget.prototype.blur = function () {
-       this.$input.blur();
+       this.$input[0].blur();
        return this;
 };
 
@@ -8449,7 +8464,7 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
                        this.$( '<span>' )
                                .addClass( 'oo-ui-textInputWidget-icon oo-ui-icon-' + config.icon )
                                .mousedown( function () {
-                                       widget.$input.focus();
+                                       widget.$input[0].focus();
                                        return false;
                                } )
                );
@@ -8457,6 +8472,7 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
        if ( config.placeholder ) {
                this.$input.attr( 'placeholder', config.placeholder );
        }
+       this.$element.attr( 'role', 'textbox' );
 };
 
 /* Setup */
@@ -8506,6 +8522,17 @@ OO.ui.TextInputWidget.prototype.onEdit = function () {
        return OO.ui.TextInputWidget.super.prototype.onEdit.call( this );
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.TextInputWidget.prototype.setValue = function ( value ) {
+       // Parent method
+       OO.ui.TextInputWidget.super.prototype.setValue.call( this, value );
+
+       this.adjustSize();
+       return this;
+};
+
 /**
  * Automatically adjust the size of the text input.
  *
@@ -8712,6 +8739,7 @@ OO.ui.OptionWidget = function OoUiOptionWidget( data, config ) {
        this.$element
                .data( 'oo-ui-optionWidget', this )
                .attr( 'rel', config.rel )
+               .attr( 'role', 'option' )
                .addClass( 'oo-ui-optionWidget' )
                .append( this.$label );
        this.$element
@@ -8982,7 +9010,9 @@ OO.ui.MenuItemWidget = function OoUiMenuItemWidget( data, config ) {
        OO.ui.MenuItemWidget.super.call( this, data, config );
 
        // Initialization
-       this.$element.addClass( 'oo-ui-menuItemWidget' );
+       this.$element
+               .attr( 'role', 'menuitem' )
+               .addClass( 'oo-ui-menuItemWidget' );
 };
 
 /* Setup */
@@ -10158,6 +10188,7 @@ OO.ui.MenuWidget = function OoUiMenuWidget( config ) {
        // Initialization
        this.$element
                .hide()
+               .attr( 'role', 'menu' )
                .addClass( 'oo-ui-menuWidget' );
 };
 
@@ -10330,7 +10361,7 @@ OO.ui.MenuWidget.prototype.toggle = function ( visible ) {
                        // Change focus to enable keyboard navigation
                        if ( this.isolated && this.$input && !this.$input.is( ':focus' ) ) {
                                this.$previousFocus = this.$( ':focus' );
-                               this.$input.focus();
+                               this.$input[0].focus();
                        }
                        if ( this.newItems && this.newItems.length ) {
                                for ( i = 0, len = this.newItems.length; i < len; i++ ) {
@@ -10349,7 +10380,7 @@ OO.ui.MenuWidget.prototype.toggle = function ( visible ) {
                } else {
                        this.unbindKeyDownListener();
                        if ( this.isolated && this.$previousFocus ) {
-                               this.$previousFocus.focus();
+                               this.$previousFocus[0].focus();
                                this.$previousFocus = null;
                        }
                        this.getElementDocument().removeEventListener(
diff --git a/resources/lib/oojs-ui/oojs-ui.rtl.css b/resources/lib/oojs-ui/oojs-ui.rtl.css
new file mode 100644 (file)
index 0000000..deca745
--- /dev/null
@@ -0,0 +1,1271 @@
+/*!
+ * OOjs UI v0.1.0
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2014 OOjs Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2014-07-22T21:39:24Z
+ */
+/* Textures */
+
+.oo-ui-texture-pending {
+  background-image: /* @embed */ url(images/textures/pending.gif);
+}
+
+.oo-ui-texture-transparency {
+  background-image: /* @embed */ url(images/textures/transparency.png);
+}
+
+/* RTL Definitions */
+
+/* @noflip */
+
+.oo-ui-rtl {
+  direction: rtl;
+}
+
+/* @noflip */
+
+.oo-ui-ltr {
+  direction: ltr;
+}
+
+.oo-ui-frame {
+  padding: 0;
+  margin: 0;
+}
+
+.oo-ui-frame-body {
+  padding: 0;
+  margin: 0;
+  background: none;
+}
+
+.oo-ui-frame-content:focus {
+  outline: none;
+}
+
+.oo-ui-toolbar {
+  clear: both;
+}
+
+.oo-ui-toolbar-bar {
+  line-height: 1em;
+}
+
+.oo-ui-toolbar-bottom .oo-ui-toolbar-bar {
+  position: absolute;
+}
+
+.oo-ui-toolbar-actions {
+  float: left;
+}
+
+.oo-ui-toolbar-tools {
+  float: right;
+}
+
+.oo-ui-toolbar-tools,
+.oo-ui-toolbar-actions,
+.oo-ui-toolbar-shadow {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-toolbar-actions .oo-ui-popupWidget {
+  -webkit-user-select: all;
+     -moz-user-select: all;
+      -ms-user-select: all;
+          user-select: all;
+  -webkit-touch-callout: default;
+}
+
+.oo-ui-toolbar-shadow {
+  position: absolute;
+  width: 100%;
+  pointer-events: none;
+  background-position: right top;
+  background-repeat: repeat-x;
+}
+
+.oo-ui-toolGroup {
+  display: inline-block;
+  margin: 0.3em;
+  vertical-align: middle;
+}
+
+.oo-ui-toolGroup-empty {
+  display: none;
+}
+
+.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-window {
+  line-height: 1em;
+}
+
+.oo-ui-window > .oo-ui-window-frame {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-window > .oo-ui-window-frame > .oo-ui-frame {
+  width: 100%;
+  height: 100%;
+}
+
+.oo-ui-window-head,
+.oo-ui-window-foot {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-window-overlay {
+  position: absolute;
+  top: 0;
+  right: 0;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog {
+  position: fixed;
+  width: 0;
+  height: 0;
+  overflow: hidden;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  width: auto;
+  height: auto;
+  padding: 1em;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
+  position: fixed;
+  left: 0;
+  right: 0;
+  max-width: 100%;
+  max-height: 100%;
+  margin: auto;
+  overflow: hidden;
+}
+
+.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
+  top: 0;
+  bottom: 0;
+  width: 100%;
+  height: 100%;
+}
+
+.oo-ui-messageDialog-actions-horizontal {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+}
+
+.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
+  display: table-cell;
+  width: 1%;
+}
+
+.oo-ui-messageDialog-actions-vertical {
+  display: block;
+}
+
+.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget {
+  position: relative;
+  text-align: center;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonedElement-button {
+  display: block;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label {
+  position: relative;
+  top: auto;
+  bottom: auto;
+  display: inline;
+  white-space: nowrap;
+}
+
+.oo-ui-processDialog-location {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.oo-ui-processDialog-title {
+  display: inline;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
+  white-space: nowrap;
+}
+
+.oo-ui-processDialog-actions-safe,
+.oo-ui-processDialog-actions-primary {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+}
+
+.oo-ui-processDialog-actions-safe {
+  right: 0;
+}
+
+.oo-ui-processDialog-actions-primary {
+  left: 0;
+}
+
+.oo-ui-processDialog-errors {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: 2;
+  display: none;
+  padding: 3em 3em 1.5em 3em;
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+
+.oo-ui-buttonedElement > .oo-ui-buttonedElement-button {
+  display: inline-block;
+  vertical-align: middle;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-buttonedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  display: none;
+  margin-right: 0;
+}
+
+.oo-ui-buttonedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator {
+  display: none;
+  margin-left: -0.75em;
+}
+
+.oo-ui-buttonedElement.oo-ui-widget-disabled > .oo-ui-buttonedElement-button {
+  cursor: default;
+}
+
+.oo-ui-buttonedElement.oo-ui-indicatedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
+.oo-ui-buttonedElement.oo-ui-iconedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  display: inline-block;
+  vertical-align: middle;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-buttonedElement-frameless {
+  position: relative;
+  display: inline-block;
+}
+
+.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
+  display: inline-block;
+  margin-right: 0.25em;
+  vertical-align: middle;
+}
+
+.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button {
+  display: inline-block;
+  text-align: center;
+  vertical-align: top;
+}
+
+.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
+  display: inline-block;
+  line-height: 1.9em;
+  vertical-align: middle;
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
+  cursor: default;
+}
+
+.oo-ui-clippableElement-clippable {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
+  overflow-y: hidden;
+}
+
+.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
+  width: 100%;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
+  overflow-y: auto;
+}
+
+.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
+  padding: 2em;
+}
+
+.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 3em;
+  right: 0;
+  overflow-y: auto;
+}
+
+.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  right: 0;
+}
+
+.oo-ui-fieldLayout {
+  margin-bottom: 1em;
+}
+
+.oo-ui-fieldLayout:last-child {
+  margin-bottom: 0;
+}
+
+.oo-ui-fieldLayout:before,
+.oo-ui-fieldLayout:after {
+  display: table;
+  content: " ";
+}
+
+.oo-ui-fieldLayout:after {
+  clear: both;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labeledElement-label,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
+  display: block;
+  float: right;
+  width: 35%;
+  padding-top: 0.5em;
+  margin-left: 5%;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
+  display: block;
+  float: right;
+  width: 60%;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
+  text-align: left;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labeledElement-label {
+  display: inline-block;
+  padding: 0.75em 0.5em 0.5em 0.5em;
+  vertical-align: middle;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
+  display: inline-block;
+  padding: 0.5em 0;
+  vertical-align: middle;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labeledElement-label {
+  display: inline-block;
+  padding: 0.5em 0;
+}
+
+.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  margin-top: 0.25em;
+}
+
+.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
+  z-index: 1;
+}
+
+.oo-ui-fieldsetLayout {
+  position: relative;
+  padding: 0;
+  margin: 0;
+}
+
+.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
+  margin-top: 2em;
+}
+
+.oo-ui-fieldsetLayout-labeled {
+  margin-top: -0.75em;
+}
+
+.oo-ui-fieldsetLayout > .oo-ui-labeledElement-label {
+  padding: 0.25em 0;
+  margin-bottom: 0.5em;
+}
+
+.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-labeledElement-label {
+  padding-right: 1.75em;
+  line-height: 1.33em;
+}
+
+.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-iconedElement-icon {
+  position: absolute;
+  top: 0.25em;
+  right: 0;
+  display: block;
+  width: 2em;
+  height: 2em;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-gridLayout {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+}
+
+.oo-ui-labelWidget {
+  display: inline-block;
+  padding: 0.5em 0;
+}
+
+.oo-ui-panelLayout {
+  position: relative;
+}
+
+.oo-ui-panelLayout-scrollable {
+  overflow-y: auto;
+}
+
+.oo-ui-panelLayout-expanded {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+}
+
+.oo-ui-stackLayout > .oo-ui-panelLayout {
+  display: none;
+}
+
+.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
+  position: relative;
+  display: block;
+}
+
+.oo-ui-barToolGroup > .oo-ui-iconedElement-icon,
+.oo-ui-barToolGroup > .oo-ui-labeledElement-label {
+  display: none;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool {
+  position: relative;
+  display: inline-block;
+  vertical-align: top;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool-link {
+  display: block;
+  height: 1.5em;
+  padding: 0.25em;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  display: block;
+  width: 1.5em;
+  height: 1.5em;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
+  display: none;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
+  cursor: default;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool-title,
+.oo-ui-barToolGroup .oo-ui-tool-accel {
+  display: none;
+}
+
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
+  cursor: pointer;
+}
+
+.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
+  padding: 0.25em;
+}
+
+.oo-ui-listToolGroup .oo-ui-tool {
+  display: inline-block;
+  width: 100%;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-listToolGroup .oo-ui-tool-link {
+  display: block;
+  padding-left: 0.5em;
+  white-space: nowrap;
+  cursor: pointer;
+}
+
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
+  cursor: default;
+}
+
+.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
+  min-width: 8em;
+}
+
+.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
+  padding: 0.25em 0 0.25em 0;
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool {
+  display: block;
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool-link {
+  display: block;
+  padding: 0 0.25em 0 1em;
+  white-space: nowrap;
+  cursor: pointer;
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  background-image: none;
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  background-image: /* @embed */ url(images/icons/check.svg);
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
+  cursor: default;
+}
+
+.oo-ui-popupToolGroup {
+  position: relative;
+  height: 2em;
+  min-width: 2.5em;
+}
+
+.oo-ui-popupToolGroup.oo-ui-indicatedElement.oo-ui-iconedElement {
+  min-width: 3.5em;
+}
+
+.oo-ui-popupToolGroup-handle {
+  display: block;
+  cursor: pointer;
+}
+
+.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,
+.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
+  position: absolute;
+  top: 0;
+  width: 2em;
+  height: 2em;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator {
+  left: 0;
+}
+
+.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
+  right: 0.25em;
+}
+
+.oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
+  margin: 0 1em;
+  font-size: 0.8em;
+  line-height: 2.6em;
+}
+
+.oo-ui-popupToolGroup-header {
+  margin: 0 0.6em;
+  font-size: 0.8em;
+  font-weight: bold;
+  line-height: 2.6em;
+}
+
+.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
+  cursor: default;
+}
+
+.oo-ui-popupToolGroup.oo-ui-iconedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
+  margin-right: 3em;
+}
+
+.oo-ui-popupToolGroup.oo-ui-indicatedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
+  margin-left: 2.25em;
+}
+
+.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
+  position: absolute;
+  top: 2em;
+  right: -1px;
+  z-index: 4;
+  display: none;
+}
+
+.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconedElement-icon {
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
+  display: block;
+}
+
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  display: inline-block;
+  width: 2em;
+  height: 2em;
+  margin-left: 0.25em;
+  vertical-align: middle;
+}
+
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
+  display: inline-block;
+  font-size: 0.8em;
+  line-height: 2em;
+  vertical-align: middle;
+}
+
+.oo-ui-popupToolGroup .oo-ui-tool-accel {
+  display: none;
+}
+
+.oo-ui-popupTool .oo-ui-popupWidget {
+  margin-right: 1.25em;
+  font-size: 0.8em;
+}
+
+.oo-ui-popupTool .oo-ui-popupWidget-popup,
+.oo-ui-popupTool .oo-ui-popupWidget-anchor {
+  z-index: 4;
+}
+
+.oo-ui-iconWidget {
+  display: inline-block;
+  width: 1.9em;
+  height: 1.9em;
+  line-height: 2.5em;
+  vertical-align: middle;
+  background-position: center center;
+  background-repeat: no-repeat;
+  opacity: 0.8;
+}
+
+.oo-ui-iconWidget.oo-ui-widget-disabled {
+  opacity: 0.2;
+}
+
+.oo-ui-indicatorWidget {
+  display: inline-block;
+  width: 1.9em;
+  height: 1.9em;
+  line-height: 2.5em;
+  vertical-align: middle;
+  background-position: center center;
+  background-repeat: no-repeat;
+  opacity: 0.8;
+}
+
+.oo-ui-indicatorWidget.oo-ui-widget-disabled {
+  opacity: 0.2;
+}
+
+.oo-ui-selectWidget {
+  padding: 0;
+  margin: 0;
+  list-style: none;
+}
+
+.oo-ui-optionWidget {
+  position: relative;
+  display: block;
+  margin: 0;
+  list-style: none;
+  cursor: pointer;
+  border: none;
+}
+
+.oo-ui-optionWidget.oo-ui-widget-disabled {
+  cursor: default;
+}
+
+.oo-ui-optionWidget .oo-ui-labeledElement-label {
+  display: block;
+  overflow: hidden;
+  line-height: 1.5em;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon,
+.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator {
+  position: absolute;
+  top: 50%;
+  width: 2em;
+  height: 2em;
+  margin-top: -1em;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon {
+  right: 0.5em;
+}
+
+.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator {
+  left: 0.5em;
+}
+
+.oo-ui-menuWidget {
+  position: absolute;
+}
+
+.oo-ui-menuWidget input {
+  position: absolute;
+  width: 0;
+  height: 0;
+  overflow: hidden;
+  opacity: 0;
+}
+
+.oo-ui-popupWidget-popup {
+  position: absolute;
+  z-index: 1;
+  overflow: hidden;
+}
+
+.oo-ui-popupWidget-anchor {
+  z-index: 1;
+  display: none;
+}
+
+.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
+  margin-top: 7px;
+}
+
+.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
+  position: absolute;
+  display: block;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-popupWidget-head {
+  height: 2.5em;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-popupWidget-head .oo-ui-buttonWidget {
+  float: left;
+  margin: 0.25em;
+}
+
+.oo-ui-popupWidget-head .oo-ui-labeledElement-label {
+  float: right;
+  margin: 0.75em 1em;
+  cursor: default;
+}
+
+.oo-ui-popupWidget-body {
+  overflow: hidden;
+  clear: both;
+}
+
+.oo-ui-popupWidget-body-padded {
+  padding: 0 1em;
+}
+
+.oo-ui-buttonGroupWidget {
+  border-radius: 0.3em;
+}
+
+.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
+  margin-bottom: -1px;
+  margin-right: -1px;
+  border-radius: 0;
+}
+
+.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:first-child .oo-ui-buttonedElement-button {
+  margin-right: 0;
+  border-bottom-right-radius: 0.3em;
+  border-top-right-radius: 0.3em;
+}
+
+.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:last-child .oo-ui-buttonedElement-button {
+  border-top-left-radius: 0.3em;
+  border-bottom-left-radius: 0.3em;
+}
+
+.oo-ui-buttonOptionWidget {
+  display: inline-block;
+  background-color: transparent;
+}
+
+.oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button {
+  position: relative;
+  height: 1.9em;
+}
+
+.oo-ui-buttonOptionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon,
+.oo-ui-buttonOptionWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator {
+  position: static;
+  display: inline-block;
+  height: 1.9em;
+  margin-top: 0;
+  vertical-align: middle;
+}
+
+.oo-ui-buttonSelectWidget {
+  display: inline-block;
+  white-space: nowrap;
+}
+
+.oo-ui-buttonWidget {
+  display: inline-block;
+  vertical-align: middle;
+}
+
+.oo-ui-inlineMenuWidget {
+  position: relative;
+  display: inline-block;
+  min-width: 20em;
+  margin: 0.25em 0;
+}
+
+.oo-ui-inlineMenuWidget-handle {
+  display: inline-block;
+  width: 100%;
+  height: 2.5em;
+  cursor: pointer;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,
+.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
+  position: absolute;
+  top: 0;
+  width: 2.5em;
+  height: 2.5em;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator {
+  left: 0;
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
+  right: 0.25em;
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
+  margin: 0 0.5em;
+  line-height: 2.5em;
+}
+
+.oo-ui-inlineMenuWidget.oo-ui-iconedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
+  margin-right: 3em;
+}
+
+.oo-ui-inlineMenuWidget.oo-ui-indicatedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
+  margin-left: 2em;
+}
+
+.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
+  z-index: 1;
+  width: 100%;
+}
+
+.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
+  cursor: default;
+}
+
+.oo-ui-menuItemWidget {
+  position: relative;
+}
+
+.oo-ui-menuItemWidget .oo-ui-iconedElement-icon {
+  display: none;
+}
+
+.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
+  background-color: transparent;
+}
+
+.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconedElement-icon {
+  display: block;
+}
+
+.oo-ui-menuSectionItemWidget {
+  cursor: default;
+}
+
+.oo-ui-outlineControlsWidget {
+  height: 3em;
+}
+
+.oo-ui-outlineControlsWidget-items,
+.oo-ui-outlineControlsWidget-movers {
+  float: right;
+  height: 2em;
+  padding: 0;
+  margin: 0.5em;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-outlineControlsWidget > .oo-ui-iconedElement-icon {
+  float: right;
+  width: 1.5em;
+  height: 2em;
+  margin: 0.5em 0.5em 0.5em 0;
+  background-position: left center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-outlineControlsWidget-items {
+  float: right;
+  margin-right: 0;
+}
+
+.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
+  float: right;
+}
+
+.oo-ui-outlineControlsWidget-movers {
+  float: left;
+}
+
+.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
+  float: left;
+}
+
+.oo-ui-outlineItemWidget {
+  position: relative;
+  padding: 0.75em;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-popupButtonWidget {
+  position: relative;
+}
+
+.oo-ui-popupButtonWidget .oo-ui-popupWidget {
+  position: absolute;
+  right: 1em;
+  cursor: auto;
+}
+
+.oo-ui-searchWidget-query {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  height: 4em;
+  padding: 0 1em;
+}
+
+.oo-ui-searchWidget-query .oo-ui-textInputWidget {
+  width: 100%;
+  margin: 0.75em 0;
+}
+
+.oo-ui-searchWidget-results {
+  position: absolute;
+  top: 4em;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  padding: 1em;
+  overflow-x: hidden;
+  overflow-y: auto;
+  line-height: 0;
+}
+
+.oo-ui-textInputWidget {
+  position: relative;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-textInputWidget input,
+.oo-ui-textInputWidget textarea {
+  display: inline-block;
+  width: 100%;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  resize: none;
+}
+
+.oo-ui-textInputWidget-icon {
+  position: absolute;
+  top: 0;
+  right: 0;
+  height: 100%;
+  background-position: left center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-toggleSwitchWidget {
+  position: relative;
+  display: inline-block;
+  width: 4em;
+  height: 2em;
+  overflow: hidden;
+  vertical-align: middle;
+  cursor: pointer;
+  -webkit-transform: translateZ(0);
+     -moz-transform: translateZ(0);
+      -ms-transform: translateZ(0);
+       -o-transform: translateZ(0);
+          transform: translateZ(0);
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
+  cursor: default;
+}
+
+.oo-ui-toggleSwitchWidget-grip {
+  position: absolute;
+  top: 0.25em;
+  right: 0.25em;
+  display: block;
+  width: 1.5em;
+  height: 1.5em;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  -webkit-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
+     -moz-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
+      -ms-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
+       -o-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
+          transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
+}
+
+.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  -webkit-transition: opacity 200ms ease-in-out;
+     -moz-transition: opacity 200ms ease-in-out;
+      -ms-transition: opacity 200ms ease-in-out;
+       -o-transition: opacity 200ms ease-in-out;
+          transition: opacity 200ms ease-in-out;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
+  right: 2.25em;
+  margin-right: -2px;
+}
+
+.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
+  right: 0.25em;
+  margin-right: 0;
+}
+
+.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
+  display: none;
+}
+
+/* Icons */
+
+.oo-ui-icon-add-item {
+  background-image: /* @embed */ url(images/icons/add-item.png);
+}
+
+.oo-ui-icon-advanced {
+  background-image: /* @embed */ url(images/icons/advanced.png);
+}
+
+.oo-ui-icon-alert {
+  background-image: /* @embed */ url(images/icons/alert.png);
+}
+
+.oo-ui-icon-check {
+  background-image: /* @embed */ url(images/icons/check.png);
+}
+
+.oo-ui-icon-clear {
+  background-image: /* @embed */ url(images/icons/clear.png);
+}
+
+.oo-ui-icon-close {
+  background-image: /* @embed */ url(images/icons/close.png);
+}
+
+.oo-ui-icon-code {
+  background-image: /* @embed */ url(images/icons/code.png);
+}
+
+.oo-ui-icon-collapse {
+  background-image: /* @embed */ url(images/icons/collapse.png);
+}
+
+.oo-ui-icon-comment {
+  background-image: /* @embed */ url(images/icons/comment.png);
+}
+
+.oo-ui-icon-expand {
+  background-image: /* @embed */ url(images/icons/expand.png);
+}
+
+.oo-ui-icon-help {
+  background-image: /* @embed */ url(images/icons/help.png);
+}
+
+.oo-ui-icon-info {
+  background-image: /* @embed */ url(images/icons/info.png);
+}
+
+.oo-ui-icon-link {
+  background-image: /* @embed */ url(images/icons/link.png);
+}
+
+.oo-ui-icon-menu {
+  background-image: /* @embed */ url(images/icons/menu.png);
+}
+
+.oo-ui-icon-next {
+  background-image: /* @embed */ url(images/icons/move-rtl.png);
+}
+
+.oo-ui-icon-picture {
+  background-image: /* @embed */ url(images/icons/picture.png);
+}
+
+.oo-ui-icon-previous {
+  background-image: /* @embed */ url(images/icons/move-ltr.png);
+}
+
+.oo-ui-icon-redo {
+  background-image: /* @embed */ url(images/icons/arched-arrow-rtl.png);
+}
+
+.oo-ui-icon-remove {
+  background-image: /* @embed */ url(images/icons/remove.png);
+}
+
+.oo-ui-icon-search {
+  background-image: /* @embed */ url(images/icons/search.png);
+}
+
+.oo-ui-icon-settings {
+  background-image: /* @embed */ url(images/icons/settings.png);
+}
+
+.oo-ui-icon-tag {
+  background-image: /* @embed */ url(images/icons/tag.png);
+}
+
+.oo-ui-icon-undo {
+  background-image: /* @embed */ url(images/icons/arched-arrow-ltr.png);
+}
+
+.oo-ui-icon-window {
+  background-image: /* @embed */ url(images/icons/window.png);
+}
+
+/* Indicators */
+
+.oo-ui-indicator-alert {
+  background-image: /* @embed */ url(images/indicators/alert.png);
+}
+
+.oo-ui-indicator-down {
+  background-image: /* @embed */ url(images/indicators/arrow-down.png);
+}
+
+.oo-ui-indicator-next {
+  background-image: /* @embed */ url(images/indicators/arrow-rtl.png);
+}
+
+.oo-ui-indicator-previous {
+  background-image: /* @embed */ url(images/indicators/arrow-ltr.png);
+}
+
+.oo-ui-indicator-required {
+  background-image: /* @embed */ url(images/indicators/required.png);
+}
+
+.oo-ui-indicator-up {
+  background-image: /* @embed */ url(images/indicators/arrow-up.png);
+}
\ No newline at end of file
index 08dffc7..abcad23 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (97dbb50137)
+ * OOjs UI v0.1.0-pre (a7ce4d48d9)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-07-16T22:59:48Z
+ * Date: 2014-07-23T23:48:16Z
  */
 /* Textures */
 
   line-height: 1em;
 }
 
-> .oo-ui-window-frame {
+.oo-ui-window > .oo-ui-window-frame {
   -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
           box-sizing: border-box;
 }
 
-> .oo-ui-window-frame > .oo-ui-frame {
+.oo-ui-window > .oo-ui-window-frame > .oo-ui-frame {
   width: 100%;
   height: 100%;
 }
   overflow: hidden;
 }
 
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame .oo-ui-frame {
-  width: 100%;
-  height: 100%;
-}
-
 .oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
   top: 0;
   bottom: 0;
diff --git a/resources/lib/oojs-ui/oojs-ui.svg.rtl.css b/resources/lib/oojs-ui/oojs-ui.svg.rtl.css
new file mode 100644 (file)
index 0000000..9a7fe08
--- /dev/null
@@ -0,0 +1,1271 @@
+/*!
+ * OOjs UI v0.1.0
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2014 OOjs Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2014-07-22T21:39:24Z
+ */
+/* Textures */
+
+.oo-ui-texture-pending {
+  background-image: /* @embed */ url(images/textures/pending.gif);
+}
+
+.oo-ui-texture-transparency {
+  background-image: /* @embed */ url(images/textures/transparency.png);
+}
+
+/* RTL Definitions */
+
+/* @noflip */
+
+.oo-ui-rtl {
+  direction: rtl;
+}
+
+/* @noflip */
+
+.oo-ui-ltr {
+  direction: ltr;
+}
+
+.oo-ui-frame {
+  padding: 0;
+  margin: 0;
+}
+
+.oo-ui-frame-body {
+  padding: 0;
+  margin: 0;
+  background: none;
+}
+
+.oo-ui-frame-content:focus {
+  outline: none;
+}
+
+.oo-ui-toolbar {
+  clear: both;
+}
+
+.oo-ui-toolbar-bar {
+  line-height: 1em;
+}
+
+.oo-ui-toolbar-bottom .oo-ui-toolbar-bar {
+  position: absolute;
+}
+
+.oo-ui-toolbar-actions {
+  float: left;
+}
+
+.oo-ui-toolbar-tools {
+  float: right;
+}
+
+.oo-ui-toolbar-tools,
+.oo-ui-toolbar-actions,
+.oo-ui-toolbar-shadow {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-toolbar-actions .oo-ui-popupWidget {
+  -webkit-user-select: all;
+     -moz-user-select: all;
+      -ms-user-select: all;
+          user-select: all;
+  -webkit-touch-callout: default;
+}
+
+.oo-ui-toolbar-shadow {
+  position: absolute;
+  width: 100%;
+  pointer-events: none;
+  background-position: right top;
+  background-repeat: repeat-x;
+}
+
+.oo-ui-toolGroup {
+  display: inline-block;
+  margin: 0.3em;
+  vertical-align: middle;
+}
+
+.oo-ui-toolGroup-empty {
+  display: none;
+}
+
+.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-window {
+  line-height: 1em;
+}
+
+.oo-ui-window > .oo-ui-window-frame {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-window > .oo-ui-window-frame > .oo-ui-frame {
+  width: 100%;
+  height: 100%;
+}
+
+.oo-ui-window-head,
+.oo-ui-window-foot {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-window-overlay {
+  position: absolute;
+  top: 0;
+  right: 0;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog {
+  position: fixed;
+  width: 0;
+  height: 0;
+  overflow: hidden;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  width: auto;
+  height: auto;
+  padding: 1em;
+}
+
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
+  position: fixed;
+  left: 0;
+  right: 0;
+  max-width: 100%;
+  max-height: 100%;
+  margin: auto;
+  overflow: hidden;
+}
+
+.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
+  top: 0;
+  bottom: 0;
+  width: 100%;
+  height: 100%;
+}
+
+.oo-ui-messageDialog-actions-horizontal {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+}
+
+.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
+  display: table-cell;
+  width: 1%;
+}
+
+.oo-ui-messageDialog-actions-vertical {
+  display: block;
+}
+
+.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget {
+  position: relative;
+  text-align: center;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonedElement-button {
+  display: block;
+}
+
+.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label {
+  position: relative;
+  top: auto;
+  bottom: auto;
+  display: inline;
+  white-space: nowrap;
+}
+
+.oo-ui-processDialog-location {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.oo-ui-processDialog-title {
+  display: inline;
+}
+
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
+  white-space: nowrap;
+}
+
+.oo-ui-processDialog-actions-safe,
+.oo-ui-processDialog-actions-primary {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+}
+
+.oo-ui-processDialog-actions-safe {
+  right: 0;
+}
+
+.oo-ui-processDialog-actions-primary {
+  left: 0;
+}
+
+.oo-ui-processDialog-errors {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: 2;
+  display: none;
+  padding: 3em 3em 1.5em 3em;
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+
+.oo-ui-buttonedElement > .oo-ui-buttonedElement-button {
+  display: inline-block;
+  vertical-align: middle;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-buttonedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  display: none;
+  margin-right: 0;
+}
+
+.oo-ui-buttonedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator {
+  display: none;
+  margin-left: -0.75em;
+}
+
+.oo-ui-buttonedElement.oo-ui-widget-disabled > .oo-ui-buttonedElement-button {
+  cursor: default;
+}
+
+.oo-ui-buttonedElement.oo-ui-indicatedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
+.oo-ui-buttonedElement.oo-ui-iconedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  display: inline-block;
+  vertical-align: middle;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-buttonedElement-frameless {
+  position: relative;
+  display: inline-block;
+}
+
+.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
+  display: inline-block;
+  margin-right: 0.25em;
+  vertical-align: middle;
+}
+
+.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button {
+  display: inline-block;
+  text-align: center;
+  vertical-align: top;
+}
+
+.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
+  display: inline-block;
+  line-height: 1.9em;
+  vertical-align: middle;
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
+  cursor: default;
+}
+
+.oo-ui-clippableElement-clippable {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
+  overflow-y: hidden;
+}
+
+.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
+  width: 100%;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
+  overflow-y: auto;
+}
+
+.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
+  padding: 2em;
+}
+
+.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 3em;
+  right: 0;
+  overflow-y: auto;
+}
+
+.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  right: 0;
+}
+
+.oo-ui-fieldLayout {
+  margin-bottom: 1em;
+}
+
+.oo-ui-fieldLayout:last-child {
+  margin-bottom: 0;
+}
+
+.oo-ui-fieldLayout:before,
+.oo-ui-fieldLayout:after {
+  display: table;
+  content: " ";
+}
+
+.oo-ui-fieldLayout:after {
+  clear: both;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labeledElement-label,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
+  display: block;
+  float: right;
+  width: 35%;
+  padding-top: 0.5em;
+  margin-left: 5%;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
+  display: block;
+  float: right;
+  width: 60%;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
+  text-align: left;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labeledElement-label {
+  display: inline-block;
+  padding: 0.75em 0.5em 0.5em 0.5em;
+  vertical-align: middle;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
+  display: inline-block;
+  padding: 0.5em 0;
+  vertical-align: middle;
+}
+
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labeledElement-label {
+  display: inline-block;
+  padding: 0.5em 0;
+}
+
+.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  margin-top: 0.25em;
+}
+
+.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
+  z-index: 1;
+}
+
+.oo-ui-fieldsetLayout {
+  position: relative;
+  padding: 0;
+  margin: 0;
+}
+
+.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
+  margin-top: 2em;
+}
+
+.oo-ui-fieldsetLayout-labeled {
+  margin-top: -0.75em;
+}
+
+.oo-ui-fieldsetLayout > .oo-ui-labeledElement-label {
+  padding: 0.25em 0;
+  margin-bottom: 0.5em;
+}
+
+.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-labeledElement-label {
+  padding-right: 1.75em;
+  line-height: 1.33em;
+}
+
+.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-iconedElement-icon {
+  position: absolute;
+  top: 0.25em;
+  right: 0;
+  display: block;
+  width: 2em;
+  height: 2em;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-gridLayout {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+}
+
+.oo-ui-labelWidget {
+  display: inline-block;
+  padding: 0.5em 0;
+}
+
+.oo-ui-panelLayout {
+  position: relative;
+}
+
+.oo-ui-panelLayout-scrollable {
+  overflow-y: auto;
+}
+
+.oo-ui-panelLayout-expanded {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+}
+
+.oo-ui-stackLayout > .oo-ui-panelLayout {
+  display: none;
+}
+
+.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
+  position: relative;
+  display: block;
+}
+
+.oo-ui-barToolGroup > .oo-ui-iconedElement-icon,
+.oo-ui-barToolGroup > .oo-ui-labeledElement-label {
+  display: none;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool {
+  position: relative;
+  display: inline-block;
+  vertical-align: top;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool-link {
+  display: block;
+  height: 1.5em;
+  padding: 0.25em;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  display: block;
+  width: 1.5em;
+  height: 1.5em;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
+  display: none;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
+  cursor: default;
+}
+
+.oo-ui-barToolGroup .oo-ui-tool-title,
+.oo-ui-barToolGroup .oo-ui-tool-accel {
+  display: none;
+}
+
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
+  cursor: pointer;
+}
+
+.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
+  padding: 0.25em;
+}
+
+.oo-ui-listToolGroup .oo-ui-tool {
+  display: inline-block;
+  width: 100%;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-listToolGroup .oo-ui-tool-link {
+  display: block;
+  padding-left: 0.5em;
+  white-space: nowrap;
+  cursor: pointer;
+}
+
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
+  cursor: default;
+}
+
+.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
+  min-width: 8em;
+}
+
+.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
+  padding: 0.25em 0 0.25em 0;
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool {
+  display: block;
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool-link {
+  display: block;
+  padding: 0 0.25em 0 1em;
+  white-space: nowrap;
+  cursor: pointer;
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  background-image: none;
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  background-image: /* @embed */ url(images/icons/check.svg);
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
+  cursor: default;
+}
+
+.oo-ui-popupToolGroup {
+  position: relative;
+  height: 2em;
+  min-width: 2.5em;
+}
+
+.oo-ui-popupToolGroup.oo-ui-indicatedElement.oo-ui-iconedElement {
+  min-width: 3.5em;
+}
+
+.oo-ui-popupToolGroup-handle {
+  display: block;
+  cursor: pointer;
+}
+
+.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,
+.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
+  position: absolute;
+  top: 0;
+  width: 2em;
+  height: 2em;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator {
+  left: 0;
+}
+
+.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
+  right: 0.25em;
+}
+
+.oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
+  margin: 0 1em;
+  font-size: 0.8em;
+  line-height: 2.6em;
+}
+
+.oo-ui-popupToolGroup-header {
+  margin: 0 0.6em;
+  font-size: 0.8em;
+  font-weight: bold;
+  line-height: 2.6em;
+}
+
+.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
+  cursor: default;
+}
+
+.oo-ui-popupToolGroup.oo-ui-iconedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
+  margin-right: 3em;
+}
+
+.oo-ui-popupToolGroup.oo-ui-indicatedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
+  margin-left: 2.25em;
+}
+
+.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
+  position: absolute;
+  top: 2em;
+  right: -1px;
+  z-index: 4;
+  display: none;
+}
+
+.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconedElement-icon {
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
+  display: block;
+}
+
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  display: inline-block;
+  width: 2em;
+  height: 2em;
+  margin-left: 0.25em;
+  vertical-align: middle;
+}
+
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
+  display: inline-block;
+  font-size: 0.8em;
+  line-height: 2em;
+  vertical-align: middle;
+}
+
+.oo-ui-popupToolGroup .oo-ui-tool-accel {
+  display: none;
+}
+
+.oo-ui-popupTool .oo-ui-popupWidget {
+  margin-right: 1.25em;
+  font-size: 0.8em;
+}
+
+.oo-ui-popupTool .oo-ui-popupWidget-popup,
+.oo-ui-popupTool .oo-ui-popupWidget-anchor {
+  z-index: 4;
+}
+
+.oo-ui-iconWidget {
+  display: inline-block;
+  width: 1.9em;
+  height: 1.9em;
+  line-height: 2.5em;
+  vertical-align: middle;
+  background-position: center center;
+  background-repeat: no-repeat;
+  opacity: 0.8;
+}
+
+.oo-ui-iconWidget.oo-ui-widget-disabled {
+  opacity: 0.2;
+}
+
+.oo-ui-indicatorWidget {
+  display: inline-block;
+  width: 1.9em;
+  height: 1.9em;
+  line-height: 2.5em;
+  vertical-align: middle;
+  background-position: center center;
+  background-repeat: no-repeat;
+  opacity: 0.8;
+}
+
+.oo-ui-indicatorWidget.oo-ui-widget-disabled {
+  opacity: 0.2;
+}
+
+.oo-ui-selectWidget {
+  padding: 0;
+  margin: 0;
+  list-style: none;
+}
+
+.oo-ui-optionWidget {
+  position: relative;
+  display: block;
+  margin: 0;
+  list-style: none;
+  cursor: pointer;
+  border: none;
+}
+
+.oo-ui-optionWidget.oo-ui-widget-disabled {
+  cursor: default;
+}
+
+.oo-ui-optionWidget .oo-ui-labeledElement-label {
+  display: block;
+  overflow: hidden;
+  line-height: 1.5em;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon,
+.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator {
+  position: absolute;
+  top: 50%;
+  width: 2em;
+  height: 2em;
+  margin-top: -1em;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon {
+  right: 0.5em;
+}
+
+.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator {
+  left: 0.5em;
+}
+
+.oo-ui-menuWidget {
+  position: absolute;
+}
+
+.oo-ui-menuWidget input {
+  position: absolute;
+  width: 0;
+  height: 0;
+  overflow: hidden;
+  opacity: 0;
+}
+
+.oo-ui-popupWidget-popup {
+  position: absolute;
+  z-index: 1;
+  overflow: hidden;
+}
+
+.oo-ui-popupWidget-anchor {
+  z-index: 1;
+  display: none;
+}
+
+.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
+  margin-top: 7px;
+}
+
+.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
+  position: absolute;
+  display: block;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-popupWidget-head {
+  height: 2.5em;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-popupWidget-head .oo-ui-buttonWidget {
+  float: left;
+  margin: 0.25em;
+}
+
+.oo-ui-popupWidget-head .oo-ui-labeledElement-label {
+  float: right;
+  margin: 0.75em 1em;
+  cursor: default;
+}
+
+.oo-ui-popupWidget-body {
+  overflow: hidden;
+  clear: both;
+}
+
+.oo-ui-popupWidget-body-padded {
+  padding: 0 1em;
+}
+
+.oo-ui-buttonGroupWidget {
+  border-radius: 0.3em;
+}
+
+.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
+  margin-bottom: -1px;
+  margin-right: -1px;
+  border-radius: 0;
+}
+
+.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:first-child .oo-ui-buttonedElement-button {
+  margin-right: 0;
+  border-bottom-right-radius: 0.3em;
+  border-top-right-radius: 0.3em;
+}
+
+.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:last-child .oo-ui-buttonedElement-button {
+  border-top-left-radius: 0.3em;
+  border-bottom-left-radius: 0.3em;
+}
+
+.oo-ui-buttonOptionWidget {
+  display: inline-block;
+  background-color: transparent;
+}
+
+.oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button {
+  position: relative;
+  height: 1.9em;
+}
+
+.oo-ui-buttonOptionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon,
+.oo-ui-buttonOptionWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator {
+  position: static;
+  display: inline-block;
+  height: 1.9em;
+  margin-top: 0;
+  vertical-align: middle;
+}
+
+.oo-ui-buttonSelectWidget {
+  display: inline-block;
+  white-space: nowrap;
+}
+
+.oo-ui-buttonWidget {
+  display: inline-block;
+  vertical-align: middle;
+}
+
+.oo-ui-inlineMenuWidget {
+  position: relative;
+  display: inline-block;
+  min-width: 20em;
+  margin: 0.25em 0;
+}
+
+.oo-ui-inlineMenuWidget-handle {
+  display: inline-block;
+  width: 100%;
+  height: 2.5em;
+  cursor: pointer;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,
+.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
+  position: absolute;
+  top: 0;
+  width: 2.5em;
+  height: 2.5em;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator {
+  left: 0;
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
+  right: 0.25em;
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
+  margin: 0 0.5em;
+  line-height: 2.5em;
+}
+
+.oo-ui-inlineMenuWidget.oo-ui-iconedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
+  margin-right: 3em;
+}
+
+.oo-ui-inlineMenuWidget.oo-ui-indicatedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
+  margin-left: 2em;
+}
+
+.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
+  z-index: 1;
+  width: 100%;
+}
+
+.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
+  cursor: default;
+}
+
+.oo-ui-menuItemWidget {
+  position: relative;
+}
+
+.oo-ui-menuItemWidget .oo-ui-iconedElement-icon {
+  display: none;
+}
+
+.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
+  background-color: transparent;
+}
+
+.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconedElement-icon {
+  display: block;
+}
+
+.oo-ui-menuSectionItemWidget {
+  cursor: default;
+}
+
+.oo-ui-outlineControlsWidget {
+  height: 3em;
+}
+
+.oo-ui-outlineControlsWidget-items,
+.oo-ui-outlineControlsWidget-movers {
+  float: right;
+  height: 2em;
+  padding: 0;
+  margin: 0.5em;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-outlineControlsWidget > .oo-ui-iconedElement-icon {
+  float: right;
+  width: 1.5em;
+  height: 2em;
+  margin: 0.5em 0.5em 0.5em 0;
+  background-position: left center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-outlineControlsWidget-items {
+  float: right;
+  margin-right: 0;
+}
+
+.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
+  float: right;
+}
+
+.oo-ui-outlineControlsWidget-movers {
+  float: left;
+}
+
+.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
+  float: left;
+}
+
+.oo-ui-outlineItemWidget {
+  position: relative;
+  padding: 0.75em;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-popupButtonWidget {
+  position: relative;
+}
+
+.oo-ui-popupButtonWidget .oo-ui-popupWidget {
+  position: absolute;
+  right: 1em;
+  cursor: auto;
+}
+
+.oo-ui-searchWidget-query {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  height: 4em;
+  padding: 0 1em;
+}
+
+.oo-ui-searchWidget-query .oo-ui-textInputWidget {
+  width: 100%;
+  margin: 0.75em 0;
+}
+
+.oo-ui-searchWidget-results {
+  position: absolute;
+  top: 4em;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  padding: 1em;
+  overflow-x: hidden;
+  overflow-y: auto;
+  line-height: 0;
+}
+
+.oo-ui-textInputWidget {
+  position: relative;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-textInputWidget input,
+.oo-ui-textInputWidget textarea {
+  display: inline-block;
+  width: 100%;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  resize: none;
+}
+
+.oo-ui-textInputWidget-icon {
+  position: absolute;
+  top: 0;
+  right: 0;
+  height: 100%;
+  background-position: left center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-toggleSwitchWidget {
+  position: relative;
+  display: inline-block;
+  width: 4em;
+  height: 2em;
+  overflow: hidden;
+  vertical-align: middle;
+  cursor: pointer;
+  -webkit-transform: translateZ(0);
+     -moz-transform: translateZ(0);
+      -ms-transform: translateZ(0);
+       -o-transform: translateZ(0);
+          transform: translateZ(0);
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
+  cursor: default;
+}
+
+.oo-ui-toggleSwitchWidget-grip {
+  position: absolute;
+  top: 0.25em;
+  right: 0.25em;
+  display: block;
+  width: 1.5em;
+  height: 1.5em;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  -webkit-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
+     -moz-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
+      -ms-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
+       -o-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
+          transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
+}
+
+.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  -webkit-transition: opacity 200ms ease-in-out;
+     -moz-transition: opacity 200ms ease-in-out;
+      -ms-transition: opacity 200ms ease-in-out;
+       -o-transition: opacity 200ms ease-in-out;
+          transition: opacity 200ms ease-in-out;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
+  right: 2.25em;
+  margin-right: -2px;
+}
+
+.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
+  right: 0.25em;
+  margin-right: 0;
+}
+
+.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
+  display: none;
+}
+
+/* Icons */
+
+.oo-ui-icon-add-item {
+  background-image: /* @embed */ url(images/icons/add-item.svg);
+}
+
+.oo-ui-icon-advanced {
+  background-image: /* @embed */ url(images/icons/advanced.svg);
+}
+
+.oo-ui-icon-alert {
+  background-image: /* @embed */ url(images/icons/alert.svg);
+}
+
+.oo-ui-icon-check {
+  background-image: /* @embed */ url(images/icons/check.svg);
+}
+
+.oo-ui-icon-clear {
+  background-image: /* @embed */ url(images/icons/clear.svg);
+}
+
+.oo-ui-icon-close {
+  background-image: /* @embed */ url(images/icons/close.svg);
+}
+
+.oo-ui-icon-code {
+  background-image: /* @embed */ url(images/icons/code.svg);
+}
+
+.oo-ui-icon-collapse {
+  background-image: /* @embed */ url(images/icons/collapse.svg);
+}
+
+.oo-ui-icon-comment {
+  background-image: /* @embed */ url(images/icons/comment.svg);
+}
+
+.oo-ui-icon-expand {
+  background-image: /* @embed */ url(images/icons/expand.svg);
+}
+
+.oo-ui-icon-help {
+  background-image: /* @embed */ url(images/icons/help.svg);
+}
+
+.oo-ui-icon-info {
+  background-image: /* @embed */ url(images/icons/info.svg);
+}
+
+.oo-ui-icon-link {
+  background-image: /* @embed */ url(images/icons/link.svg);
+}
+
+.oo-ui-icon-menu {
+  background-image: /* @embed */ url(images/icons/menu.svg);
+}
+
+.oo-ui-icon-next {
+  background-image: /* @embed */ url(images/icons/move-rtl.svg);
+}
+
+.oo-ui-icon-picture {
+  background-image: /* @embed */ url(images/icons/picture.svg);
+}
+
+.oo-ui-icon-previous {
+  background-image: /* @embed */ url(images/icons/move-ltr.svg);
+}
+
+.oo-ui-icon-redo {
+  background-image: /* @embed */ url(images/icons/arched-arrow-rtl.svg);
+}
+
+.oo-ui-icon-remove {
+  background-image: /* @embed */ url(images/icons/remove.svg);
+}
+
+.oo-ui-icon-search {
+  background-image: /* @embed */ url(images/icons/search.svg);
+}
+
+.oo-ui-icon-settings {
+  background-image: /* @embed */ url(images/icons/settings.svg);
+}
+
+.oo-ui-icon-tag {
+  background-image: /* @embed */ url(images/icons/tag.svg);
+}
+
+.oo-ui-icon-undo {
+  background-image: /* @embed */ url(images/icons/arched-arrow-ltr.svg);
+}
+
+.oo-ui-icon-window {
+  background-image: /* @embed */ url(images/icons/window.svg);
+}
+
+/* Indicators */
+
+.oo-ui-indicator-alert {
+  background-image: /* @embed */ url(images/indicators/alert.svg);
+}
+
+.oo-ui-indicator-down {
+  background-image: /* @embed */ url(images/indicators/arrow-down.svg);
+}
+
+.oo-ui-indicator-next {
+  background-image: /* @embed */ url(images/indicators/arrow-rtl.svg);
+}
+
+.oo-ui-indicator-previous {
+  background-image: /* @embed */ url(images/indicators/arrow-ltr.svg);
+}
+
+.oo-ui-indicator-required {
+  background-image: /* @embed */ url(images/indicators/required.svg);
+}
+
+.oo-ui-indicator-up {
+  background-image: /* @embed */ url(images/indicators/arrow-up.svg);
+}
\ No newline at end of file
diff --git a/resources/lib/oojs/oojs.jquery.js b/resources/lib/oojs/oojs.jquery.js
new file mode 100644 (file)
index 0000000..8be7665
--- /dev/null
@@ -0,0 +1,832 @@
+/*!
+ * OOjs v1.0.11
+ * https://www.mediawiki.org/wiki/OOjs
+ *
+ * Copyright 2011-2014 OOjs Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2014-07-23T20:15:47Z
+ */
+( function ( global ) {
+
+'use strict';
+
+/*exported toString */
+var
+       /**
+        * Namespace for all classes, static methods and static properties.
+        * @class OO
+        * @singleton
+        */
+       oo = {},
+       hasOwn = oo.hasOwnProperty,
+       toString = oo.toString;
+
+/* Class Methods */
+
+/**
+ * Utility to initialize a class for OO inheritance.
+ *
+ * Currently this just initializes an empty static object.
+ *
+ * @param {Function} fn
+ */
+oo.initClass = function ( fn ) {
+       fn.static = fn.static || {};
+};
+
+/**
+ * Utility for common usage of Object#create for inheriting from one
+ * prototype to another.
+ *
+ * Beware: This redefines the prototype, call before setting your prototypes.
+ * Beware: This redefines the prototype, can only be called once on a function.
+ *  If called multiple times on the same function, the previous prototype is lost.
+ *  This is how prototypal inheritance works, it can only be one straight chain
+ *  (just like classical inheritance in PHP for example). If you need to work with
+ *  multiple constructors consider storing an instance of the other constructor in a
+ *  property instead, or perhaps use a mixin (see OO.mixinClass).
+ *
+ *     function Thing() {}
+ *     Thing.prototype.exists = function () {};
+ *
+ *     function Person() {
+ *         Person.super.apply( this, arguments );
+ *     }
+ *     OO.inheritClass( Person, Thing );
+ *     Person.static.defaultEyeCount = 2;
+ *     Person.prototype.walk = function () {};
+ *
+ *     function Jumper() {
+ *         Jumper.super.apply( this, arguments );
+ *     }
+ *     OO.inheritClass( Jumper, Person );
+ *     Jumper.prototype.jump = function () {};
+ *
+ *     Jumper.static.defaultEyeCount === 2;
+ *     var x = new Jumper();
+ *     x.jump();
+ *     x.walk();
+ *     x instanceof Thing && x instanceof Person && x instanceof Jumper;
+ *
+ * @param {Function} targetFn
+ * @param {Function} originFn
+ * @throws {Error} If target already inherits from origin
+ */
+oo.inheritClass = function ( targetFn, originFn ) {
+       if ( targetFn.prototype instanceof originFn ) {
+               throw new Error( 'Target already inherits from origin' );
+       }
+
+       var targetConstructor = targetFn.prototype.constructor;
+
+       // Using ['super'] instead of .super because 'super' is not supported
+       // by IE 8 and below (bug 63303).
+       // Provide .parent as alias for code supporting older browsers which
+       // allows people to comply with their style guide.
+       targetFn['super'] = targetFn.parent = originFn;
+
+       targetFn.prototype = Object.create( originFn.prototype, {
+               // Restore constructor property of targetFn
+               constructor: {
+                       value: targetConstructor,
+                       enumerable: false,
+                       writable: true,
+                       configurable: true
+               }
+       } );
+
+       // Extend static properties - always initialize both sides
+       oo.initClass( originFn );
+       targetFn.static = Object.create( originFn.static );
+};
+
+/**
+ * Utility to copy over *own* prototype properties of a mixin.
+ * The 'constructor' (whether implicit or explicit) is not copied over.
+ *
+ * This does not create inheritance to the origin. If inheritance is needed
+ * use oo.inheritClass instead.
+ *
+ * Beware: This can redefine a prototype property, call before setting your prototypes.
+ * Beware: Don't call before oo.inheritClass.
+ *
+ *     function Foo() {}
+ *     function Context() {}
+ *
+ *     // Avoid repeating this code
+ *     function ContextLazyLoad() {}
+ *     ContextLazyLoad.prototype.getContext = function () {
+ *         if ( !this.context ) {
+ *             this.context = new Context();
+ *         }
+ *         return this.context;
+ *     };
+ *
+ *     function FooBar() {}
+ *     OO.inheritClass( FooBar, Foo );
+ *     OO.mixinClass( FooBar, ContextLazyLoad );
+ *
+ * @param {Function} targetFn
+ * @param {Function} originFn
+ */
+oo.mixinClass = function ( targetFn, originFn ) {
+       var key;
+
+       // Copy prototype properties
+       for ( key in originFn.prototype ) {
+               if ( key !== 'constructor' && hasOwn.call( originFn.prototype, key ) ) {
+                       targetFn.prototype[key] = originFn.prototype[key];
+               }
+       }
+
+       // Copy static properties - always initialize both sides
+       oo.initClass( targetFn );
+       if ( originFn.static ) {
+               for ( key in originFn.static ) {
+                       if ( hasOwn.call( originFn.static, key ) ) {
+                               targetFn.static[key] = originFn.static[key];
+                       }
+               }
+       } else {
+               oo.initClass( originFn );
+       }
+};
+
+/* Object Methods */
+
+/**
+ * Create a new object that is an instance of the same
+ * constructor as the input, inherits from the same object
+ * and contains the same own properties.
+ *
+ * This makes a shallow non-recursive copy of own properties.
+ * To create a recursive copy of plain objects, use #copy.
+ *
+ *     var foo = new Person( mom, dad );
+ *     foo.setAge( 21 );
+ *     var foo2 = OO.cloneObject( foo );
+ *     foo.setAge( 22 );
+ *
+ *     // Then
+ *     foo2 !== foo; // true
+ *     foo2 instanceof Person; // true
+ *     foo2.getAge(); // 21
+ *     foo.getAge(); // 22
+ *
+ * @param {Object} origin
+ * @return {Object} Clone of origin
+ */
+oo.cloneObject = function ( origin ) {
+       var key, r;
+
+       r = Object.create( origin.constructor.prototype );
+
+       for ( key in origin ) {
+               if ( hasOwn.call( origin, key ) ) {
+                       r[key] = origin[key];
+               }
+       }
+
+       return r;
+};
+
+/**
+ * Get an array of all property values in an object.
+ *
+ * @param {Object} Object to get values from
+ * @return {Array} List of object values
+ */
+oo.getObjectValues = function ( obj ) {
+       var key, values;
+
+       if ( obj !== Object( obj ) ) {
+               throw new TypeError( 'Called on non-object' );
+       }
+
+       values = [];
+       for ( key in obj ) {
+               if ( hasOwn.call( obj, key ) ) {
+                       values[values.length] = obj[key];
+               }
+       }
+
+       return values;
+};
+
+/**
+ * Recursively compares properties between two objects.
+ *
+ * A false result may be caused by property inequality or by properties in one object missing from
+ * the other. An asymmetrical test may also be performed, which checks only that properties in the
+ * first object are present in the second object, but not the inverse.
+ *
+ * @param {Object} a First object to compare
+ * @param {Object} b Second object to compare
+ * @param {boolean} [asymmetrical] Whether to check only that b contains values from a
+ * @return {boolean} If the objects contain the same values as each other
+ */
+oo.compare = function ( a, b, asymmetrical ) {
+       var aValue, bValue, aType, bType, k;
+
+       if ( a === b ) {
+               return true;
+       }
+
+       for ( k in a ) {
+               if ( !hasOwn.call( a, k ) ) {
+                       // Support es3-shim: Without this filter, comparing [] to {} will be false in ES3
+                       // because the shimmed "forEach" is enumerable and shows up in Array but not Object.
+                       continue;
+               }
+
+               aValue = a[k];
+               bValue = b[k];
+               aType = typeof aValue;
+               bType = typeof bValue;
+               if ( aType !== bType ||
+                       ( ( aType === 'string' || aType === 'number' ) && aValue !== bValue ) ||
+                       ( aValue === Object( aValue ) && !oo.compare( aValue, bValue, asymmetrical ) ) ) {
+                       return false;
+               }
+       }
+       // If the check is not asymmetrical, recursing with the arguments swapped will verify our result
+       return asymmetrical ? true : oo.compare( b, a, true );
+};
+
+/**
+ * Create a plain deep copy of any kind of object.
+ *
+ * Copies are deep, and will either be an object or an array depending on `source`.
+ *
+ * @param {Object} source Object to copy
+ * @param {Function} [callback] Applied to leaf values before they added to the clone
+ * @return {Object} Copy of source object
+ */
+oo.copy = function ( source, callback ) {
+       var key, sourceValue, sourceType, destination;
+
+       if ( typeof source.clone === 'function' ) {
+               return source.clone();
+       }
+
+       destination = Array.isArray( source ) ? new Array( source.length ) : {};
+
+       for ( key in source ) {
+               sourceValue = source[key];
+               sourceType = typeof sourceValue;
+               if ( Array.isArray( sourceValue ) ) {
+                       // Array
+                       destination[key] = oo.copy( sourceValue, callback );
+               } else if ( sourceValue && typeof sourceValue.clone === 'function' ) {
+                       // Duck type object with custom clone method
+                       destination[key] = callback ?
+                               callback( sourceValue.clone() ) : sourceValue.clone();
+               } else if ( sourceValue && typeof sourceValue.cloneNode === 'function' ) {
+                       // DOM Node
+                       destination[key] = callback ?
+                               callback( sourceValue.cloneNode( true ) ) : sourceValue.cloneNode( true );
+               } else if ( oo.isPlainObject( sourceValue ) ) {
+                       // Plain objects
+                       destination[key] = oo.copy( sourceValue, callback );
+               } else {
+                       // Non-plain objects (incl. functions) and primitive values
+                       destination[key] = callback ? callback( sourceValue ) : sourceValue;
+               }
+       }
+
+       return destination;
+};
+
+/**
+ * Generate a hash of an object based on its name and data.
+ *
+ * Performance optimization: <http://jsperf.com/ve-gethash-201208#/toJson_fnReplacerIfAoForElse>
+ *
+ * To avoid two objects with the same values generating different hashes, we utilize the replacer
+ * argument of JSON.stringify and sort the object by key as it's being serialized. This may or may
+ * not be the fastest way to do this; we should investigate this further.
+ *
+ * Objects and arrays are hashed recursively. When hashing an object that has a .getHash()
+ * function, we call that function and use its return value rather than hashing the object
+ * ourselves. This allows classes to define custom hashing.
+ *
+ * @param {Object} val Object to generate hash for
+ * @return {string} Hash of object
+ */
+oo.getHash = function ( val ) {
+       return JSON.stringify( val, oo.getHash.keySortReplacer );
+};
+
+/**
+ * Helper function for OO.getHash which sorts objects by key.
+ *
+ * This is a callback passed into JSON.stringify.
+ *
+ * @method getHash_keySortReplacer
+ * @param {string} key Property name of value being replaced
+ * @param {Mixed} val Property value to replace
+ * @return {Mixed} Replacement value
+ */
+oo.getHash.keySortReplacer = function ( key, val ) {
+       var normalized, keys, i, len;
+       if ( val && typeof val.getHashObject === 'function' ) {
+               // This object has its own custom hash function, use it
+               val = val.getHashObject();
+       }
+       if ( !Array.isArray( val ) && Object( val ) === val ) {
+               // Only normalize objects when the key-order is ambiguous
+               // (e.g. any object not an array).
+               normalized = {};
+               keys = Object.keys( val ).sort();
+               i = 0;
+               len = keys.length;
+               for ( ; i < len; i += 1 ) {
+                       normalized[keys[i]] = val[keys[i]];
+               }
+               return normalized;
+
+       // Primitive values and arrays get stable hashes
+       // by default. Lets those be stringified as-is.
+       } else {
+               return val;
+       }
+};
+
+/**
+ * Compute the union (duplicate-free merge) of a set of arrays.
+ *
+ * Arrays values must be convertable to object keys (strings).
+ *
+ * By building an object (with the values for keys) in parallel with
+ * the array, a new item's existence in the union can be computed faster.
+ *
+ * @param {Array...} arrays Arrays to union
+ * @return {Array} Union of the arrays
+ */
+oo.simpleArrayUnion = function () {
+       var i, ilen, arr, j, jlen,
+               obj = {},
+               result = [];
+
+       for ( i = 0, ilen = arguments.length; i < ilen; i++ ) {
+               arr = arguments[i];
+               for ( j = 0, jlen = arr.length; j < jlen; j++ ) {
+                       if ( !obj[ arr[j] ] ) {
+                               obj[ arr[j] ] = true;
+                               result.push( arr[j] );
+                       }
+               }
+       }
+
+       return result;
+};
+
+/**
+ * Combine arrays (intersection or difference).
+ *
+ * An intersection checks the item exists in 'b' while difference checks it doesn't.
+ *
+ * Arrays values must be convertable to object keys (strings).
+ *
+ * By building an object (with the values for keys) of 'b' we can
+ * compute the result faster.
+ *
+ * @private
+ * @param {Array} a First array
+ * @param {Array} b Second array
+ * @param {boolean} includeB Whether to items in 'b'
+ * @return {Array} Combination (intersection or difference) of arrays
+ */
+function simpleArrayCombine( a, b, includeB ) {
+       var i, ilen, isInB,
+               bObj = {},
+               result = [];
+
+       for ( i = 0, ilen = b.length; i < ilen; i++ ) {
+               bObj[ b[i] ] = true;
+       }
+
+       for ( i = 0, ilen = a.length; i < ilen; i++ ) {
+               isInB = !!bObj[ a[i] ];
+               if ( isInB === includeB ) {
+                       result.push( a[i] );
+               }
+       }
+
+       return result;
+}
+
+/**
+ * Compute the intersection of two arrays (items in both arrays).
+ *
+ * Arrays values must be convertable to object keys (strings).
+ *
+ * @param {Array} a First array
+ * @param {Array} b Second array
+ * @return {Array} Intersection of arrays
+ */
+oo.simpleArrayIntersection = function ( a, b ) {
+       return simpleArrayCombine( a, b, true );
+};
+
+/**
+ * Compute the difference of two arrays (items in 'a' but not 'b').
+ *
+ * Arrays values must be convertable to object keys (strings).
+ *
+ * @param {Array} a First array
+ * @param {Array} b Second array
+ * @return {Array} Intersection of arrays
+ */
+oo.simpleArrayDifference = function ( a, b ) {
+       return simpleArrayCombine( a, b, false );
+};
+
+/*global $ */
+
+oo.isPlainObject = $.isPlainObject;
+
+/*global hasOwn */
+
+/**
+ * @class OO.EventEmitter
+ *
+ * @constructor
+ */
+oo.EventEmitter = function OoEventEmitter() {
+       // Properties
+
+       /**
+        * Storage of bound event handlers by event name.
+        *
+        * @property
+        */
+       this.bindings = {};
+};
+
+/* Methods */
+
+/**
+ * Add a listener to events of a specific event.
+ *
+ * @param {string} event Type of event to listen to
+ * @param {Function} callback Function to call when event occurs
+ * @param {Array} [args] Arguments to pass to listener, will be prepended to emitted arguments
+ * @param {Object} [context=null] Object to use as context for callback function or call method on
+ * @throws {Error} Listener argument is not a function or method name
+ * @chainable
+ */
+oo.EventEmitter.prototype.on = function ( event, callback, args, context ) {
+       var bindings;
+
+       // Validate callback
+       if ( typeof callback !== 'function' ) {
+               throw new Error( 'Invalid callback. Function or method name expected.' );
+       }
+       // Fallback to null context
+       if ( arguments.length < 4 ) {
+               context = null;
+       }
+       if ( hasOwn.call( this.bindings, event ) ) {
+               bindings = this.bindings[event];
+       } else {
+               // Auto-initialize bindings list
+               bindings = this.bindings[event] = [];
+       }
+       // Add binding
+       bindings.push( {
+               callback: callback,
+               args: args,
+               context: context
+       } );
+       return this;
+};
+
+/**
+ * Adds a one-time listener to a specific event.
+ *
+ * @param {string} event Type of event to listen to
+ * @param {Function} listener Listener to call when event occurs
+ * @chainable
+ */
+oo.EventEmitter.prototype.once = function ( event, listener ) {
+       var eventEmitter = this,
+               listenerWrapper = function () {
+                       eventEmitter.off( event, listenerWrapper );
+                       listener.apply( eventEmitter, Array.prototype.slice.call( arguments, 0 ) );
+               };
+       return this.on( event, listenerWrapper );
+};
+
+/**
+ * Remove a specific listener from a specific event.
+ *
+ * @param {string} event Type of event to remove listener from
+ * @param {Function} [callback] Listener to remove, omit to remove all
+ * @param {Object} [context=null] Object used context for callback function or method
+ * @chainable
+ * @throws {Error} Listener argument is not a function
+ */
+oo.EventEmitter.prototype.off = function ( event, callback, context ) {
+       var i, bindings;
+
+       if ( arguments.length === 1 ) {
+               // Remove all bindings for event
+               delete this.bindings[event];
+       } else {
+               if ( typeof callback !== 'function' ) {
+                       throw new Error( 'Invalid callback. Function expected.' );
+               }
+               if ( !( event in this.bindings ) || !this.bindings[event].length ) {
+                       // No matching bindings
+                       return this;
+               }
+               // Fallback to null context
+               if ( arguments.length < 3 ) {
+                       context = null;
+               }
+               // Remove matching handlers
+               bindings = this.bindings[event];
+               i = bindings.length;
+               while ( i-- ) {
+                       if ( bindings[i].callback === callback && bindings[i].context === context ) {
+                               bindings.splice( i, 1 );
+                       }
+               }
+               // Cleanup if now empty
+               if ( bindings.length === 0 ) {
+                       delete this.bindings[event];
+               }
+       }
+       return this;
+};
+
+/**
+ * Emit an event.
+ *
+ * TODO: Should this be chainable? What is the usefulness of the boolean
+ * return value here?
+ *
+ * @param {string} event Type of event
+ * @param {Mixed} args First in a list of variadic arguments passed to event handler (optional)
+ * @return {boolean} If event was handled by at least one listener
+ */
+oo.EventEmitter.prototype.emit = function ( event ) {
+       var i, len, binding, bindings, args;
+
+       if ( event in this.bindings ) {
+               // Slicing ensures that we don't get tripped up by event handlers that add/remove bindings
+               bindings = this.bindings[event].slice();
+               args = Array.prototype.slice.call( arguments, 1 );
+               for ( i = 0, len = bindings.length; i < len; i++ ) {
+                       binding = bindings[i];
+                       binding.callback.apply(
+                               binding.context,
+                               binding.args ? binding.args.concat( args ) : args
+                       );
+               }
+               return true;
+       }
+       return false;
+};
+
+/**
+ * Connect event handlers to an object.
+ *
+ * @param {Object} context Object to call methods on when events occur
+ * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} methods List of
+ *  event bindings keyed by event name containing either method names, functions or arrays containing
+ *  method name or function followed by a list of arguments to be passed to callback before emitted
+ *  arguments
+ * @chainable
+ */
+oo.EventEmitter.prototype.connect = function ( context, methods ) {
+       var method, callback, args, event;
+
+       for ( event in methods ) {
+               method = methods[event];
+               // Allow providing additional args
+               if ( Array.isArray( method ) ) {
+                       args = method.slice( 1 );
+                       method = method[0];
+               } else {
+                       args = [];
+               }
+               // Allow callback to be a method name
+               if ( typeof method === 'string' ) {
+                       // Validate method
+                       if ( !context[method] || typeof context[method] !== 'function' ) {
+                               throw new Error( 'Method not found: ' + method );
+                       }
+                       // Resolve to function
+                       callback = context[method];
+               } else {
+                       callback = method;
+               }
+               // Add binding
+               this.on.apply( this, [ event, callback, args, context ] );
+       }
+       return this;
+};
+
+/**
+ * Disconnect event handlers from an object.
+ *
+ * @param {Object} context Object to disconnect methods from
+ * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} [methods] List of
+ * event bindings keyed by event name containing either method names or functions
+ * @chainable
+ */
+oo.EventEmitter.prototype.disconnect = function ( context, methods ) {
+       var i, method, callback, event, bindings;
+
+       if ( methods ) {
+               // Remove specific connections to the context
+               for ( event in methods ) {
+                       method = methods[event];
+                       if ( typeof method === 'string' ) {
+                               // Validate method
+                               if ( !context[method] || typeof context[method] !== 'function' ) {
+                                       throw new Error( 'Method not found: ' + method );
+                               }
+                               // Resolve to function
+                               callback = context[method];
+                       } else {
+                               callback = method;
+                       }
+                       this.off( event, callback, context );
+               }
+       } else {
+               // Remove all connections to the context
+               for ( event in this.bindings ) {
+                       bindings = this.bindings[event];
+                       i = bindings.length;
+                       while ( i-- ) {
+                               // bindings[i] may have been removed by the previous step's
+                               // this.off so check it still exists
+                               if ( bindings[i] && bindings[i].context === context ) {
+                                       this.off( event, bindings[i].callback, context );
+                               }
+                       }
+               }
+       }
+
+       return this;
+};
+
+/**
+ * @class OO.Registry
+ * @mixins OO.EventEmitter
+ *
+ * @constructor
+ */
+oo.Registry = function OoRegistry() {
+       // Mixin constructors
+       oo.EventEmitter.call( this );
+
+       // Properties
+       this.registry = {};
+};
+
+/* Inheritance */
+
+oo.mixinClass( oo.Registry, oo.EventEmitter );
+
+/* Events */
+
+/**
+ * @event register
+ * @param {string} name
+ * @param {Mixed} data
+ */
+
+/* Methods */
+
+/**
+ * Associate one or more symbolic names with some data.
+ *
+ * Only the base name will be registered, overriding any existing entry with the same base name.
+ *
+ * @param {string|string[]} name Symbolic name or list of symbolic names
+ * @param {Mixed} data Data to associate with symbolic name
+ * @fires register
+ * @throws {Error} Name argument must be a string or array
+ */
+oo.Registry.prototype.register = function ( name, data ) {
+       var i, len;
+       if ( typeof name === 'string' ) {
+               this.registry[name] = data;
+               this.emit( 'register', name, data );
+       } else if ( Array.isArray( name ) ) {
+               for ( i = 0, len = name.length; i < len; i++ ) {
+                       this.register( name[i], data );
+               }
+       } else {
+               throw new Error( 'Name must be a string or array, cannot be a ' + typeof name );
+       }
+};
+
+/**
+ * Get data for a given symbolic name.
+ *
+ * Lookups are done using the base name.
+ *
+ * @param {string} name Symbolic name
+ * @return {Mixed|undefined} Data associated with symbolic name
+ */
+oo.Registry.prototype.lookup = function ( name ) {
+       return this.registry[name];
+};
+
+/**
+ * @class OO.Factory
+ * @extends OO.Registry
+ *
+ * @constructor
+ */
+oo.Factory = function OoFactory() {
+       oo.Factory.parent.call( this );
+
+       // Properties
+       this.entries = [];
+};
+
+/* Inheritance */
+
+oo.inheritClass( oo.Factory, oo.Registry );
+
+/* Methods */
+
+/**
+ * Register a constructor with the factory.
+ *
+ * Classes must have a static `name` property to be registered.
+ *
+ *     function MyClass() {};
+ *     OO.initClass( MyClass );
+ *     // Adds a static property to the class defining a symbolic name
+ *     MyClass.static.name = 'mine';
+ *     // Registers class with factory, available via symbolic name 'mine'
+ *     factory.register( MyClass );
+ *
+ * @param {Function} constructor Constructor to use when creating object
+ * @throws {Error} Name must be a string and must not be empty
+ * @throws {Error} Constructor must be a function
+ */
+oo.Factory.prototype.register = function ( constructor ) {
+       var name;
+
+       if ( typeof constructor !== 'function' ) {
+               throw new Error( 'constructor must be a function, cannot be a ' + typeof constructor );
+       }
+       name = constructor.static && constructor.static.name;
+       if ( typeof name !== 'string' || name === '' ) {
+               throw new Error( 'Name must be a string and must not be empty' );
+       }
+       this.entries.push( name );
+
+       oo.Factory.parent.prototype.register.call( this, name, constructor );
+};
+
+/**
+ * Create an object based on a name.
+ *
+ * Name is used to look up the constructor to use, while all additional arguments are passed to the
+ * constructor directly, so leaving one out will pass an undefined to the constructor.
+ *
+ * @param {string} name Object name
+ * @param {Mixed...} [args] Arguments to pass to the constructor
+ * @return {Object} The new object
+ * @throws {Error} Unknown object name
+ */
+oo.Factory.prototype.create = function ( name ) {
+       var args, obj, constructor;
+
+       if ( !this.registry.hasOwnProperty( name ) ) {
+               throw new Error( 'No class registered by that name: ' + name );
+       }
+       constructor = this.registry[name];
+
+       // Convert arguments to array and shift the first argument (name) off
+       args = Array.prototype.slice.call( arguments, 1 );
+
+       // We can't use the "new" operator with .apply directly because apply needs a
+       // context. So instead just do what "new" does: create an object that inherits from
+       // the constructor's prototype (which also makes it an "instanceof" the constructor),
+       // then invoke the constructor with the object as context, and return it (ignoring
+       // the constructor's return value).
+       obj = Object.create( constructor.prototype );
+       constructor.apply( obj, args );
+       return obj;
+};
+
+/*jshint node:true */
+if ( typeof module !== 'undefined' && module.exports ) {
+       module.exports = oo;
+} else {
+       global.OO = oo;
+}
+
+}( this ) );
diff --git a/resources/lib/oojs/oojs.js b/resources/lib/oojs/oojs.js
deleted file mode 100644 (file)
index 8ccd50a..0000000
+++ /dev/null
@@ -1,862 +0,0 @@
-/*!
- * OOjs v1.0.10
- * https://www.mediawiki.org/wiki/OOjs
- *
- * Copyright 2011-2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: Wed Jun 18 2014 20:03:40 GMT-0700 (PDT)
- */
-( function ( global ) {
-
-'use strict';
-/*exported toString */
-var
-       /**
-        * Namespace for all classes, static methods and static properties.
-        * @class OO
-        * @singleton
-        */
-       oo = {},
-       hasOwn = oo.hasOwnProperty,
-       toString = oo.toString;
-
-/* Class Methods */
-
-/**
- * Utility to initialize a class for OO inheritance.
- *
- * Currently this just initializes an empty static object.
- *
- * @param {Function} fn
- */
-oo.initClass = function ( fn ) {
-       fn.static = fn.static || {};
-};
-
-/**
- * Utility for common usage of Object#create for inheriting from one
- * prototype to another.
- *
- * Beware: This redefines the prototype, call before setting your prototypes.
- * Beware: This redefines the prototype, can only be called once on a function.
- *  If called multiple times on the same function, the previous prototype is lost.
- *  This is how prototypal inheritance works, it can only be one straight chain
- *  (just like classical inheritance in PHP for example). If you need to work with
- *  multiple constructors consider storing an instance of the other constructor in a
- *  property instead, or perhaps use a mixin (see OO.mixinClass).
- *
- *     function Thing() {}
- *     Thing.prototype.exists = function () {};
- *
- *     function Person() {
- *         Person.super.apply( this, arguments );
- *     }
- *     OO.inheritClass( Person, Thing );
- *     Person.static.defaultEyeCount = 2;
- *     Person.prototype.walk = function () {};
- *
- *     function Jumper() {
- *         Jumper.super.apply( this, arguments );
- *     }
- *     OO.inheritClass( Jumper, Person );
- *     Jumper.prototype.jump = function () {};
- *
- *     Jumper.static.defaultEyeCount === 2;
- *     var x = new Jumper();
- *     x.jump();
- *     x.walk();
- *     x instanceof Thing && x instanceof Person && x instanceof Jumper;
- *
- * @param {Function} targetFn
- * @param {Function} originFn
- * @throws {Error} If target already inherits from origin
- */
-oo.inheritClass = function ( targetFn, originFn ) {
-       if ( targetFn.prototype instanceof originFn ) {
-               throw new Error( 'Target already inherits from origin' );
-       }
-
-       var targetConstructor = targetFn.prototype.constructor;
-
-       // Using ['super'] instead of .super because 'super' is not supported
-       // by IE 8 and below (bug 63303).
-       // Provide .parent as alias for code supporting older browsers which
-       // allows people to comply with their style guide.
-       targetFn['super'] = targetFn.parent = originFn;
-
-       targetFn.prototype = Object.create( originFn.prototype, {
-               // Restore constructor property of targetFn
-               constructor: {
-                       value: targetConstructor,
-                       enumerable: false,
-                       writable: true,
-                       configurable: true
-               }
-       } );
-
-       // Extend static properties - always initialize both sides
-       oo.initClass( originFn );
-       targetFn.static = Object.create( originFn.static );
-};
-
-/**
- * Utility to copy over *own* prototype properties of a mixin.
- * The 'constructor' (whether implicit or explicit) is not copied over.
- *
- * This does not create inheritance to the origin. If inheritance is needed
- * use oo.inheritClass instead.
- *
- * Beware: This can redefine a prototype property, call before setting your prototypes.
- * Beware: Don't call before oo.inheritClass.
- *
- *     function Foo() {}
- *     function Context() {}
- *
- *     // Avoid repeating this code
- *     function ContextLazyLoad() {}
- *     ContextLazyLoad.prototype.getContext = function () {
- *         if ( !this.context ) {
- *             this.context = new Context();
- *         }
- *         return this.context;
- *     };
- *
- *     function FooBar() {}
- *     OO.inheritClass( FooBar, Foo );
- *     OO.mixinClass( FooBar, ContextLazyLoad );
- *
- * @param {Function} targetFn
- * @param {Function} originFn
- */
-oo.mixinClass = function ( targetFn, originFn ) {
-       var key;
-
-       // Copy prototype properties
-       for ( key in originFn.prototype ) {
-               if ( key !== 'constructor' && hasOwn.call( originFn.prototype, key ) ) {
-                       targetFn.prototype[key] = originFn.prototype[key];
-               }
-       }
-
-       // Copy static properties - always initialize both sides
-       oo.initClass( targetFn );
-       if ( originFn.static ) {
-               for ( key in originFn.static ) {
-                       if ( hasOwn.call( originFn.static, key ) ) {
-                               targetFn.static[key] = originFn.static[key];
-                       }
-               }
-       } else {
-               oo.initClass( originFn );
-       }
-};
-
-/* Object Methods */
-
-/**
- * Create a new object that is an instance of the same
- * constructor as the input, inherits from the same object
- * and contains the same own properties.
- *
- * This makes a shallow non-recursive copy of own properties.
- * To create a recursive copy of plain objects, use #copy.
- *
- *     var foo = new Person( mom, dad );
- *     foo.setAge( 21 );
- *     var foo2 = OO.cloneObject( foo );
- *     foo.setAge( 22 );
- *
- *     // Then
- *     foo2 !== foo; // true
- *     foo2 instanceof Person; // true
- *     foo2.getAge(); // 21
- *     foo.getAge(); // 22
- *
- * @param {Object} origin
- * @return {Object} Clone of origin
- */
-oo.cloneObject = function ( origin ) {
-       var key, r;
-
-       r = Object.create( origin.constructor.prototype );
-
-       for ( key in origin ) {
-               if ( hasOwn.call( origin, key ) ) {
-                       r[key] = origin[key];
-               }
-       }
-
-       return r;
-};
-
-/**
- * Get an array of all property values in an object.
- *
- * @param {Object} Object to get values from
- * @return {Array} List of object values
- */
-oo.getObjectValues = function ( obj ) {
-       var key, values;
-
-       if ( obj !== Object( obj ) ) {
-               throw new TypeError( 'Called on non-object' );
-       }
-
-       values = [];
-       for ( key in obj ) {
-               if ( hasOwn.call( obj, key ) ) {
-                       values[values.length] = obj[key];
-               }
-       }
-
-       return values;
-};
-
-/**
- * Recursively compares properties between two objects.
- *
- * A false result may be caused by property inequality or by properties in one object missing from
- * the other. An asymmetrical test may also be performed, which checks only that properties in the
- * first object are present in the second object, but not the inverse.
- *
- * @param {Object} a First object to compare
- * @param {Object} b Second object to compare
- * @param {boolean} [asymmetrical] Whether to check only that b contains values from a
- * @return {boolean} If the objects contain the same values as each other
- */
-oo.compare = function ( a, b, asymmetrical ) {
-       var aValue, bValue, aType, bType, k;
-
-       if ( a === b ) {
-               return true;
-       }
-
-       for ( k in a ) {
-               if ( !hasOwn.call( a, k ) ) {
-                       // Support es3-shim: Without this filter, comparing [] to {} will be false in ES3
-                       // because the shimmed "forEach" is enumerable and shows up in Array but not Object.
-                       continue;
-               }
-
-               aValue = a[k];
-               bValue = b[k];
-               aType = typeof aValue;
-               bType = typeof bValue;
-               if ( aType !== bType ||
-                       ( ( aType === 'string' || aType === 'number' ) && aValue !== bValue ) ||
-                       ( aValue === Object( aValue ) && !oo.compare( aValue, bValue, asymmetrical ) ) ) {
-                       return false;
-               }
-       }
-       // If the check is not asymmetrical, recursing with the arguments swapped will verify our result
-       return asymmetrical ? true : oo.compare( b, a, true );
-};
-
-/**
- * Create a plain deep copy of any kind of object.
- *
- * Copies are deep, and will either be an object or an array depending on `source`.
- *
- * @param {Object} source Object to copy
- * @param {Function} [callback] Applied to leaf values before they added to the clone
- * @return {Object} Copy of source object
- */
-oo.copy = function ( source, callback ) {
-       var key, sourceValue, sourceType, destination;
-
-       if ( typeof source.clone === 'function' ) {
-               return source.clone();
-       }
-
-       destination = Array.isArray( source ) ? new Array( source.length ) : {};
-
-       for ( key in source ) {
-               sourceValue = source[key];
-               sourceType = typeof sourceValue;
-               if ( Array.isArray( sourceValue ) ) {
-                       // Array
-                       destination[key] = oo.copy( sourceValue, callback );
-               } else if ( sourceValue && typeof sourceValue.clone === 'function' ) {
-                       // Duck type object with custom clone method
-                       destination[key] = callback ?
-                               callback( sourceValue.clone() ) : sourceValue.clone();
-               } else if ( sourceValue && typeof sourceValue.cloneNode === 'function' ) {
-                       // DOM Node
-                       destination[key] = callback ?
-                               callback( sourceValue.cloneNode( true ) ) : sourceValue.cloneNode( true );
-               } else if ( oo.isPlainObject( sourceValue ) ) {
-                       // Plain objects
-                       destination[key] = oo.copy( sourceValue, callback );
-               } else {
-                       // Non-plain objects (incl. functions) and primitive values
-                       destination[key] = callback ? callback( sourceValue ) : sourceValue;
-               }
-       }
-
-       return destination;
-};
-
-/**
- * Generate a hash of an object based on its name and data.
- *
- * Performance optimization: <http://jsperf.com/ve-gethash-201208#/toJson_fnReplacerIfAoForElse>
- *
- * To avoid two objects with the same values generating different hashes, we utilize the replacer
- * argument of JSON.stringify and sort the object by key as it's being serialized. This may or may
- * not be the fastest way to do this; we should investigate this further.
- *
- * Objects and arrays are hashed recursively. When hashing an object that has a .getHash()
- * function, we call that function and use its return value rather than hashing the object
- * ourselves. This allows classes to define custom hashing.
- *
- * @param {Object} val Object to generate hash for
- * @return {string} Hash of object
- */
-oo.getHash = function ( val ) {
-       return JSON.stringify( val, oo.getHash.keySortReplacer );
-};
-
-/**
- * Helper function for OO.getHash which sorts objects by key.
- *
- * This is a callback passed into JSON.stringify.
- *
- * @method getHash_keySortReplacer
- * @param {string} key Property name of value being replaced
- * @param {Mixed} val Property value to replace
- * @return {Mixed} Replacement value
- */
-oo.getHash.keySortReplacer = function ( key, val ) {
-       var normalized, keys, i, len;
-       if ( val && typeof val.getHashObject === 'function' ) {
-               // This object has its own custom hash function, use it
-               val = val.getHashObject();
-       }
-       if ( !Array.isArray( val ) && Object( val ) === val ) {
-               // Only normalize objects when the key-order is ambiguous
-               // (e.g. any object not an array).
-               normalized = {};
-               keys = Object.keys( val ).sort();
-               i = 0;
-               len = keys.length;
-               for ( ; i < len; i += 1 ) {
-                       normalized[keys[i]] = val[keys[i]];
-               }
-               return normalized;
-
-       // Primitive values and arrays get stable hashes
-       // by default. Lets those be stringified as-is.
-       } else {
-               return val;
-       }
-};
-
-/**
- * Compute the union (duplicate-free merge) of a set of arrays.
- *
- * Arrays values must be convertable to object keys (strings).
- *
- * By building an object (with the values for keys) in parallel with
- * the array, a new item's existence in the union can be computed faster.
- *
- * @param {Array...} arrays Arrays to union
- * @return {Array} Union of the arrays
- */
-oo.simpleArrayUnion = function () {
-       var i, ilen, arr, j, jlen,
-               obj = {},
-               result = [];
-
-       for ( i = 0, ilen = arguments.length; i < ilen; i++ ) {
-               arr = arguments[i];
-               for ( j = 0, jlen = arr.length; j < jlen; j++ ) {
-                       if ( !obj[ arr[j] ] ) {
-                               obj[ arr[j] ] = true;
-                               result.push( arr[j] );
-                       }
-               }
-       }
-
-       return result;
-};
-
-/**
- * Combine arrays (intersection or difference).
- *
- * An intersection checks the item exists in 'b' while difference checks it doesn't.
- *
- * Arrays values must be convertable to object keys (strings).
- *
- * By building an object (with the values for keys) of 'b' we can
- * compute the result faster.
- *
- * @private
- * @param {Array} a First array
- * @param {Array} b Second array
- * @param {boolean} includeB Whether to items in 'b'
- * @return {Array} Combination (intersection or difference) of arrays
- */
-function simpleArrayCombine( a, b, includeB ) {
-       var i, ilen, isInB,
-               bObj = {},
-               result = [];
-
-       for ( i = 0, ilen = b.length; i < ilen; i++ ) {
-               bObj[ b[i] ] = true;
-       }
-
-       for ( i = 0, ilen = a.length; i < ilen; i++ ) {
-               isInB = !!bObj[ a[i] ];
-               if ( isInB === includeB ) {
-                       result.push( a[i] );
-               }
-       }
-
-       return result;
-}
-
-/**
- * Compute the intersection of two arrays (items in both arrays).
- *
- * Arrays values must be convertable to object keys (strings).
- *
- * @param {Array} a First array
- * @param {Array} b Second array
- * @return {Array} Intersection of arrays
- */
-oo.simpleArrayIntersection = function ( a, b ) {
-       return simpleArrayCombine( a, b, true );
-};
-
-/**
- * Compute the difference of two arrays (items in 'a' but not 'b').
- *
- * Arrays values must be convertable to object keys (strings).
- *
- * @param {Array} a First array
- * @param {Array} b Second array
- * @return {Array} Intersection of arrays
- */
-oo.simpleArrayDifference = function ( a, b ) {
-       return simpleArrayCombine( a, b, false );
-};
-/*global hasOwn, toString */
-
-/**
- * Assert whether a value is a plain object or not.
- *
- * @param {Mixed} obj
- * @return {boolean}
- */
-oo.isPlainObject = function ( obj ) {
-       /*jshint eqnull:true, eqeqeq:false */
-
-       // Any object or value whose internal [[Class]] property is not "[object Object]"
-       // Support IE8: Explicitly filter out DOM nodes
-       // Support IE8: Explicitly filter out Window object (needs loose comparison)
-       if ( !obj || toString.call( obj ) !== '[object Object]' || obj.nodeType || ( obj != null && obj == obj.window ) ) {
-               return false;
-       }
-
-       // The try/catch suppresses exceptions thrown when attempting to access
-       // the "constructor" property of certain host objects suich as window.location
-       // in Firefox < 20 (https://bugzilla.mozilla.org/814622)
-       try {
-               if ( obj.constructor &&
-                               !hasOwn.call( obj.constructor.prototype, 'isPrototypeOf' ) ) {
-                       return false;
-               }
-       } catch ( e ) {
-               return false;
-       }
-
-       return true;
-};
-/**
- * @class OO.EventEmitter
- *
- * @constructor
- */
-oo.EventEmitter = function OoEventEmitter() {
-       // Properties
-
-       /**
-        * Storage of bound event handlers by event name.
-        *
-        * @property
-        */
-       this.bindings = {};
-};
-
-/* Methods */
-
-/**
- * Add a listener to events of a specific event.
- *
- * If the callback/context are already bound to the event, they will not be bound again.
- *
- * @param {string} event Type of event to listen to
- * @param {Function} callback Function to call when event occurs
- * @param {Array} [args] Arguments to pass to listener, will be prepended to emitted arguments
- * @param {Object} [context=null] Object to use as context for callback function or call method on
- * @throws {Error} Listener argument is not a function or method name
- * @chainable
- */
-oo.EventEmitter.prototype.on = function ( event, callback, args, context ) {
-       var i, bindings, binding;
-
-       // Validate callback
-       if ( typeof callback !== 'function' ) {
-               throw new Error( 'Invalid callback. Function or method name expected.' );
-       }
-       // Fallback to null context
-       if ( arguments.length < 4 ) {
-               context = null;
-       }
-       if ( this.bindings.hasOwnProperty( event ) ) {
-               // Check for duplicate callback and context for this event
-               bindings = this.bindings[event];
-               i = bindings.length;
-               while ( i-- ) {
-                       binding = bindings[i];
-                       if ( bindings.callback === callback && bindings.context === context ) {
-                               return this;
-                       }
-               }
-       } else {
-               // Auto-initialize bindings list
-               bindings = this.bindings[event] = [];
-       }
-       // Add binding
-       bindings.push( {
-               callback: callback,
-               args: args,
-               context: context
-       } );
-       return this;
-};
-
-/**
- * Adds a one-time listener to a specific event.
- *
- * @param {string} event Type of event to listen to
- * @param {Function} listener Listener to call when event occurs
- * @chainable
- */
-oo.EventEmitter.prototype.once = function ( event, listener ) {
-       var eventEmitter = this,
-               listenerWrapper = function () {
-                       eventEmitter.off( event, listenerWrapper );
-                       listener.apply( eventEmitter, Array.prototype.slice.call( arguments, 0 ) );
-               };
-       return this.on( event, listenerWrapper );
-};
-
-/**
- * Remove a specific listener from a specific event.
- *
- * @param {string} event Type of event to remove listener from
- * @param {Function} [callback] Listener to remove, omit to remove all
- * @param {Object} [context=null] Object used context for callback function or method
- * @chainable
- * @throws {Error} Listener argument is not a function
- */
-oo.EventEmitter.prototype.off = function ( event, callback, context ) {
-       var i, bindings;
-
-       if ( arguments.length === 1 ) {
-               // Remove all bindings for event
-               if ( event in this.bindings ) {
-                       delete this.bindings[event];
-               }
-       } else {
-               if ( typeof callback !== 'function' ) {
-                       throw new Error( 'Invalid callback. Function expected.' );
-               }
-               if ( !( event in this.bindings ) || !this.bindings[event].length ) {
-                       // No matching bindings
-                       return this;
-               }
-               // Fallback to null context
-               if ( arguments.length < 3 ) {
-                       context = null;
-               }
-               // Remove matching handlers
-               bindings = this.bindings[event];
-               i = bindings.length;
-               while ( i-- ) {
-                       if ( bindings[i].callback === callback && bindings[i].context === context ) {
-                               bindings.splice( i, 1 );
-                       }
-               }
-               // Cleanup if now empty
-               if ( bindings.length === 0 ) {
-                       delete this.bindings[event];
-               }
-       }
-       return this;
-};
-
-/**
- * Emit an event.
- *
- * TODO: Should this be chainable? What is the usefulness of the boolean
- * return value here?
- *
- * @param {string} event Type of event
- * @param {Mixed} args First in a list of variadic arguments passed to event handler (optional)
- * @return {boolean} If event was handled by at least one listener
- */
-oo.EventEmitter.prototype.emit = function ( event ) {
-       var i, len, binding, bindings, args;
-
-       if ( event in this.bindings ) {
-               // Slicing ensures that we don't get tripped up by event handlers that add/remove bindings
-               bindings = this.bindings[event].slice();
-               args = Array.prototype.slice.call( arguments, 1 );
-               for ( i = 0, len = bindings.length; i < len; i++ ) {
-                       binding = bindings[i];
-                       binding.callback.apply(
-                               binding.context,
-                               binding.args ? binding.args.concat( args ) : args
-                       );
-               }
-               return true;
-       }
-       return false;
-};
-
-/**
- * Connect event handlers to an object.
- *
- * @param {Object} context Object to call methods on when events occur
- * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} methods List of
- *  event bindings keyed by event name containing either method names, functions or arrays containing
- *  method name or function followed by a list of arguments to be passed to callback before emitted
- *  arguments
- * @chainable
- */
-oo.EventEmitter.prototype.connect = function ( context, methods ) {
-       var method, callback, args, event;
-
-       for ( event in methods ) {
-               method = methods[event];
-               // Allow providing additional args
-               if ( Array.isArray( method ) ) {
-                       args = method.slice( 1 );
-                       method = method[0];
-               } else {
-                       args = [];
-               }
-               // Allow callback to be a method name
-               if ( typeof method === 'string' ) {
-                       // Validate method
-                       if ( !context[method] || typeof context[method] !== 'function' ) {
-                               throw new Error( 'Method not found: ' + method );
-                       }
-                       // Resolve to function
-                       callback = context[method];
-               } else {
-                       callback = method;
-               }
-               // Add binding
-               this.on.apply( this, [ event, callback, args, context ] );
-       }
-       return this;
-};
-
-/**
- * Disconnect event handlers from an object.
- *
- * @param {Object} context Object to disconnect methods from
- * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} [methods] List of
- * event bindings keyed by event name containing either method names or functions
- * @chainable
- */
-oo.EventEmitter.prototype.disconnect = function ( context, methods ) {
-       var i, method, callback, event, bindings;
-
-       if ( methods ) {
-               // Remove specific connections to the context
-               for ( event in methods ) {
-                       method = methods[event];
-                       if ( typeof method === 'string' ) {
-                               // Validate method
-                               if ( !context[method] || typeof context[method] !== 'function' ) {
-                                       throw new Error( 'Method not found: ' + method );
-                               }
-                               // Resolve to function
-                               callback = context[method];
-                       } else {
-                               callback = method;
-                       }
-                       this.off( event, callback, context );
-               }
-       } else {
-               // Remove all connections to the context
-               for ( event in this.bindings ) {
-                       bindings = this.bindings[event];
-                       i = bindings.length;
-                       while ( i-- ) {
-                               if ( bindings[i].context === context ) {
-                                       this.off( event, bindings[i].callback, context );
-                               }
-                       }
-               }
-       }
-
-       return this;
-};
-/**
- * @class OO.Registry
- * @mixins OO.EventEmitter
- *
- * @constructor
- */
-oo.Registry = function OoRegistry() {
-       // Mixin constructors
-       oo.EventEmitter.call( this );
-
-       // Properties
-       this.registry = {};
-};
-
-/* Inheritance */
-
-oo.mixinClass( oo.Registry, oo.EventEmitter );
-
-/* Events */
-
-/**
- * @event register
- * @param {string} name
- * @param {Mixed} data
- */
-
-/* Methods */
-
-/**
- * Associate one or more symbolic names with some data.
- *
- * Only the base name will be registered, overriding any existing entry with the same base name.
- *
- * @param {string|string[]} name Symbolic name or list of symbolic names
- * @param {Mixed} data Data to associate with symbolic name
- * @fires register
- * @throws {Error} Name argument must be a string or array
- */
-oo.Registry.prototype.register = function ( name, data ) {
-       var i, len;
-       if ( typeof name === 'string' ) {
-               this.registry[name] = data;
-               this.emit( 'register', name, data );
-       } else if ( Array.isArray( name ) ) {
-               for ( i = 0, len = name.length; i < len; i++ ) {
-                       this.register( name[i], data );
-               }
-       } else {
-               throw new Error( 'Name must be a string or array, cannot be a ' + typeof name );
-       }
-};
-
-/**
- * Get data for a given symbolic name.
- *
- * Lookups are done using the base name.
- *
- * @param {string} name Symbolic name
- * @return {Mixed|undefined} Data associated with symbolic name
- */
-oo.Registry.prototype.lookup = function ( name ) {
-       return this.registry[name];
-};
-/**
- * @class OO.Factory
- * @extends OO.Registry
- *
- * @constructor
- */
-oo.Factory = function OoFactory() {
-       oo.Factory.parent.call( this );
-
-       // Properties
-       this.entries = [];
-};
-
-/* Inheritance */
-
-oo.inheritClass( oo.Factory, oo.Registry );
-
-/* Methods */
-
-/**
- * Register a constructor with the factory.
- *
- * Classes must have a static `name` property to be registered.
- *
- *     function MyClass() {};
- *     OO.initClass( MyClass );
- *     // Adds a static property to the class defining a symbolic name
- *     MyClass.static.name = 'mine';
- *     // Registers class with factory, available via symbolic name 'mine'
- *     factory.register( MyClass );
- *
- * @param {Function} constructor Constructor to use when creating object
- * @throws {Error} Name must be a string and must not be empty
- * @throws {Error} Constructor must be a function
- */
-oo.Factory.prototype.register = function ( constructor ) {
-       var name;
-
-       if ( typeof constructor !== 'function' ) {
-               throw new Error( 'constructor must be a function, cannot be a ' + typeof constructor );
-       }
-       name = constructor.static && constructor.static.name;
-       if ( typeof name !== 'string' || name === '' ) {
-               throw new Error( 'Name must be a string and must not be empty' );
-       }
-       this.entries.push( name );
-
-       oo.Factory.parent.prototype.register.call( this, name, constructor );
-};
-
-/**
- * Create an object based on a name.
- *
- * Name is used to look up the constructor to use, while all additional arguments are passed to the
- * constructor directly, so leaving one out will pass an undefined to the constructor.
- *
- * @param {string} name Object name
- * @param {Mixed...} [args] Arguments to pass to the constructor
- * @return {Object} The new object
- * @throws {Error} Unknown object name
- */
-oo.Factory.prototype.create = function ( name ) {
-       var args, obj, constructor;
-
-       if ( !this.registry.hasOwnProperty( name ) ) {
-               throw new Error( 'No class registered by that name: ' + name );
-       }
-       constructor = this.registry[name];
-
-       // Convert arguments to array and shift the first argument (name) off
-       args = Array.prototype.slice.call( arguments, 1 );
-
-       // We can't use the "new" operator with .apply directly because apply needs a
-       // context. So instead just do what "new" does: create an object that inherits from
-       // the constructor's prototype (which also makes it an "instanceof" the constructor),
-       // then invoke the constructor with the object as context, and return it (ignoring
-       // the constructor's return value).
-       obj = Object.create( constructor.prototype );
-       constructor.apply( obj, args );
-       return obj;
-};
-/*jshint node:true */
-if ( typeof module !== 'undefined' && module.exports ) {
-       module.exports = oo;
-} else {
-       global.OO = oo;
-}
-}( this ) );
index 09de537..bffcf35 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-bg_flat_15_cd0a0a_40x100.png and b/resources/src/jquery.ui-themes/vector/images/ui-bg_flat_15_cd0a0a_40x100.png differ
index c06dd56..8e211d8 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-bg_flat_70_000000_40x100.png and b/resources/src/jquery.ui-themes/vector/images/ui-bg_flat_70_000000_40x100.png differ
index 5308b46..66329e9 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png and b/resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png differ
index 0c8997f..495a561 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-hard_80_d7ebf9_1x100.png and b/resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-hard_80_d7ebf9_1x100.png differ
index 3149255..e088e7d 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-soft_100_e4f1fb_1x100.png and b/resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-soft_100_e4f1fb_1x100.png differ
index 09b2376..53d4b24 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-soft_100_ffffff_1x100.png and b/resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-soft_100_ffffff_1x100.png differ
index 66627c1..b217d9e 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-soft_25_ffef8f_1x100.png and b/resources/src/jquery.ui-themes/vector/images/ui-bg_highlight-soft_25_ffef8f_1x100.png differ
index ccb6dc0..b1fc456 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-bg_inset-hard_100_f0f0f0_1x100.png and b/resources/src/jquery.ui-themes/vector/images/ui-bg_inset-hard_100_f0f0f0_1x100.png differ
index 998ac3b..252bf0f 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-icons_2694e8_256x240.png and b/resources/src/jquery.ui-themes/vector/images/ui-icons_2694e8_256x240.png differ
index 34e38d1..84b601b 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-icons_2e83ff_256x240.png and b/resources/src/jquery.ui-themes/vector/images/ui-icons_2e83ff_256x240.png differ
index ec129a8..ff1c26f 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-icons_3d80b3_256x240.png and b/resources/src/jquery.ui-themes/vector/images/ui-icons_3d80b3_256x240.png differ
index a32c57d..76cecfc 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-icons_666666_256x240.png and b/resources/src/jquery.ui-themes/vector/images/ui-icons_666666_256x240.png differ
index 88fad1a..9d07914 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-icons_72a7cf_256x240.png and b/resources/src/jquery.ui-themes/vector/images/ui-icons_72a7cf_256x240.png differ
index 29ba7d2..4f624bb 100644 (file)
Binary files a/resources/src/jquery.ui-themes/vector/images/ui-icons_ffffff_256x240.png and b/resources/src/jquery.ui-themes/vector/images/ui-icons_ffffff_256x240.png differ
index 8d8a1a6..d429fd2 100644 (file)
@@ -1,12 +1,16 @@
-/* Accordion
-----------------------------------*/
-.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
-.ui-accordion .ui-accordion-li-fix { display: inline; }
-.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
-.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
-/* IE7-/Win - Fix extra vertical space in lists */
-.ui-accordion a { zoom: 1; }
-.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
-.ui-accordion .ui-accordion-content-active { display: block; }
\ No newline at end of file
+/*!
+ * jQuery UI Accordion 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }
+.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-noicons { padding-left: .7em; }
+.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
index da6de45..e08d14e 100644 (file)
@@ -1,40 +1,20 @@
-/* Autocomplete
-----------------------------------*/
-.ui-autocomplete { position: absolute; cursor: default; }
+/*!
+ * jQuery UI Autocomplete 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete {
+       position: absolute;
+       top: 0;
+       left: 0;
+       cursor: default;
+}
 .ui-autocomplete-loading { /* @embed */ background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
 
 /* workarounds */
 * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/* Menu
-----------------------------------*/
-.ui-menu {
-       list-style:none;
-       padding: 2px;
-       margin: 0;
-       display:block;
-       float: left;
-}
-.ui-menu .ui-menu {
-       margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
-       margin:0;
-       padding: 0;
-       zoom: 1;
-       float: left;
-       clear: left;
-       width: 100%;
-}
-.ui-menu .ui-menu-item a {
-       text-decoration:none;
-       display:block;
-       padding:.2em .4em;
-       line-height:1.5;
-       zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-       font-weight: normal;
-       margin: -1px;
-}
index 8c2286d..1838f48 100644 (file)
@@ -1,92 +1,44 @@
-/* Button
-----------------------------------*/
-
-.ui-button {
-       display: inline-block;
-       position: relative;
-       padding: 0;
-       margin-right: .1em;
-       text-decoration: none !important;
-       cursor: pointer;
-       text-align: center;
-       zoom: 1;
-       overflow: visible; /* the overflow property removes extra width in IE */
-}
+/*!
+ * jQuery UI Button 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
 
 /*button text element */
-.ui-button .ui-button-text {
-       display: block;
-       line-height: 1.4;
-       text-shadow: 0 1px 1px #fff;
-}
-.ui-button-text-only .ui-button-text {
-       padding: 0.3em 1em 0.25em 1em;
-}
-.ui-button-icon-only .ui-button-text,
-.ui-button-icons-only .ui-button-text {
-       padding: 0.3em;
-       text-indent: -9999999px;
-}
-.ui-button-text-icon-primary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: 0.3em 1em 0.25em 2.1em;
-}
-.ui-button-text-icon-secondary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: 0.3em 2.1em 0.25em 1em;
-}
-.ui-button-text-icons .ui-button-text {
-       padding-left: 2.1em;
-       padding-right: 2.1em;
-}
-
+.ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.ui-button-text-only .ui-button-text { padding: .125em .25em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
 /* no icon support for input elements, provide padding by default */
-input.ui-button {
-       padding: 0.3em 1em;
-}
+input.ui-button { padding: .4em 1em; }
 
 /*button icon element(s) */
-.ui-button-icon-only .ui-icon,
-.ui-button-text-icon-primary .ui-icon,
-.ui-button-text-icon-secondary .ui-icon,
-.ui-button-text-icons .ui-icon,
-.ui-button-text-icon .ui-icon,
-.ui-button-icons-only .ui-icon {
-       position: absolute;
-       top: 50%;
-       margin-top: -9px;
-}
-.ui-button-icon-only .ui-icon {
-       left: 50%;
-       margin-left: -8px;
-}
-.ui-button-text-icon-primary .ui-button-icon-primary,
-.ui-button-text-icon .ui-button-icon-primary,
-.ui-button-text-icons .ui-button-icon-primary,
-.ui-button-icons-only .ui-button-icon-primary {
-       left: 0.5em;
-}
-.ui-button-text-icon-secondary .ui-button-icon-secondary,
-.ui-button-text-icon .ui-button-icon-secondary,
-.ui-button-text-icons .ui-button-icon-secondary,
-.ui-button-icons-only .ui-button-icon-secondary {
-       right: 0.5em;
-}
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
 
 /*button sets*/
-.ui-buttonset {
-       margin-right: 7px;
-}
-.ui-buttonset .ui-button {
-       margin-left: 0;
-       margin-right: -.4em;
-}
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.4em; }
 
 /* workarounds */
-button.ui-button::-moz-focus-inner {
-       border: 0;
-       padding: 0; /* reset extra padding in Firefox */
-}
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+
 /* Disables the annoying dashed border Firefox puts on active buttons */
 body button.ui-button::-moz-focus-inner {
        border: 0;
index 1931aad..2e088ca 100644 (file)
@@ -1,20 +1,22 @@
-/*
-* jQuery UI CSS Framework
-* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
-* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
-*/
+/*!
+ * jQuery UI CSS Framework 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
 
 /* Layout helpers
 ----------------------------------*/
 .ui-helper-hidden { display: none; }
 .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
 .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
+.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
+.ui-helper-clearfix:after { clear: both; }
+.ui-helper-clearfix { zoom: 1; }
 .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
 
 
index 871bf69..c946ce4 100644 (file)
@@ -1,5 +1,13 @@
-/* Datepicker
-----------------------------------*/
+/*!
+ * jQuery UI Datepicker 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
 .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
 .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
 .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
@@ -18,7 +26,7 @@
 .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
 .ui-datepicker td { border: 0; padding: 1px; }
 .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .2em 0 0 0; padding: 0 .2em; border-top: 1px solid #DDDDDD; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-top: 1px solid #DDDDDD; border-left: 0; border-right: 0; border-bottom: 0; }
 .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
 .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
 
@@ -32,7 +40,7 @@
 .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
 .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
 .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; }
+.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
 
 /* RTL support */
 /* @noflip */ .ui-datepicker-rtl { direction: rtl; }
@@ -49,8 +57,6 @@
 
 /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
 .ui-datepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
     position: absolute; /*must have*/
     z-index: -1; /*must have*/
     filter: mask(); /*must have*/
index cd85f14..78f8f8f 100644 (file)
@@ -1,16 +1,26 @@
-/* Dialog
-----------------------------------*/
-.ui-dialog { position: absolute; padding: 0; width: 300px; }
-.ui-dialog .ui-dialog-titlebar { padding: .75em; position: relative;  }
-.ui-dialog .ui-dialog-title { float: left; margin: 0; } 
+/*!
+ * jQuery UI Dialog 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; top: 0; left: 0; padding: 0; width: 300px; }
+.ui-dialog .ui-dialog-titlebar { padding: .75em; position: relative; }
+.ui-dialog .ui-dialog-title { float: left; margin: 0; }
 .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .75em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
 .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
 .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
-.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
 .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
 .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
 .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
 .ui-draggable .ui-dialog-titlebar { cursor: move; }
+
 /* Customizations */
 body .ui-dialog .ui-dialog-titlebar-close:hover {
        text-decoration: none;
diff --git a/resources/src/jquery.ui-themes/vector/jquery.ui.menu.css b/resources/src/jquery.ui-themes/vector/jquery.ui.menu.css
new file mode 100644 (file)
index 0000000..83fd84e
--- /dev/null
@@ -0,0 +1,30 @@
+/*!
+ * jQuery UI Menu 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }
+.ui-menu .ui-menu { margin-top: -3px; position: absolute; }
+.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }
+.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }
+.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }
+
+.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }
+.ui-menu .ui-state-disabled a { cursor: default; }
+
+/* icon support */
+.ui-menu-icons { position: relative; }
+.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }
+
+/* left-aligned */
+.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }
+
+/* right-aligned */
+.ui-menu .ui-menu-icon { position: static; float: right; }
index bc0939e..bd7e403 100644 (file)
@@ -1,4 +1,12 @@
-/* Progressbar
-----------------------------------*/
-.ui-progressbar { height:2em; text-align: left; }
+/*!
+ * jQuery UI Progressbar 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
 .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
index f1bd7c5..f8822e8 100644 (file)
@@ -1,7 +1,15 @@
-/* Resizable
-----------------------------------*/
+/*!
+ * jQuery UI Resizable 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
 .ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
 .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
 .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
 .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
index c5d46ce..5854c41 100644 (file)
@@ -1,3 +1,11 @@
-/* Selectable
-----------------------------------*/
-.ui-selectable-helper { border:1px dotted black }
+/*!
+ * jQuery UI Selectable 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
index 07c6f4e..e579478 100644 (file)
@@ -1,5 +1,13 @@
-/* Slider
-----------------------------------*/
+/*!
+ * jQuery UI Slider 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
 .ui-slider { position: relative; text-align: left; }
 .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
 .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
diff --git a/resources/src/jquery.ui-themes/vector/jquery.ui.spinner.css b/resources/src/jquery.ui-themes/vector/jquery.ui.spinner.css
new file mode 100644 (file)
index 0000000..e89b720
--- /dev/null
@@ -0,0 +1,23 @@
+/*!
+ * jQuery UI Spinner 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Spinner#theming
+ */
+.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }
+.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }
+.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }
+.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */
+.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */
+.ui-spinner-up { top: 0; }
+.ui-spinner-down { bottom: 0; }
+
+/* TR overrides */
+.ui-spinner .ui-icon-triangle-1-s {
+       /* need to fix icons sprite */
+       background-position:-65px -16px;
+}
index 99e16db..11a000f 100644 (file)
@@ -1,11 +1,18 @@
-/* Tabs
-----------------------------------*/
+/*!
+ * jQuery UI Tabs 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
 .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
 .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
-.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }
 .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
 .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
-.ui-tabs .ui-tabs-hide { display: none !important; }
index 6bde5d3..7452e97 100644 (file)
@@ -1,11 +1,15 @@
-
-
-/*
-* jQuery UI CSS Framework
-* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
-* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=sans-serif&fwDefault=normal&fsDefault=1.0em&cornerRadius=3px&bgColorHeader=ffffff&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=04_highlight_hard.png&bgImgOpacityContent=100&borderColorContent=cccccc&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=f0f0f0&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=cccccc&fcActive=000000&iconColorActive=666666&bgColorHighlight=ffef8f&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=01_flat.png&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=000000&bgTextureOverlay=21_glow_ball.png&bgImgOpacityOverlay=100&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=70&opacityShadow=20&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
-*/
+/*!
+ * jQuery UI CSS Framework 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=sans-serif&fwDefault=normal&fsDefault=1.0em&cornerRadius=3px&bgColorHeader=ffffff&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=cccccc&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=highlight_hard&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=highlight_soft&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=f0f0f0&bgTextureActive=inset_hard&bgImgOpacityActive=100&borderColorActive=cccccc&fcActive=000000&iconColorActive=666666&bgColorHighlight=ffef8f&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=flat&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=000000&bgTextureOverlay=glow_ball&bgImgOpacityOverlay=100&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=70&opacityShadow=20&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
+ */
 
 
 /* Component containers
 .ui-widget { font-family: sans-serif; font-size: 0.8em; }
 .ui-widget .ui-widget { font-size: 1em; }
 .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #cccccc; /* @embed */ background: #f2f5f7 url(images/ui-bg_highlight-hard_100_f2f5f7_1x100.png) 50% top repeat-x; color: #362b36; }
-.ui-widget-header { border-bottom: 1px solid #bbbbbb; line-height: 1em; /* @embed */ background: #ffffff url(images/ui-bg_highlight-soft_100_ffffff_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-content { border: 1px solid #cccccc; /* @embed */ background: #f2f5f7 url("images/ui-bg_highlight-hard_100_f2f5f7_1x100.png") 50% top repeat-x; color: #362b36; }
+.ui-widget-header { border-bottom: 1px solid #bbbbbb; line-height: 1em; /* @embed */ background: #ffffff url("images/ui-bg_highlight-soft_100_ffffff_1x100.png") 50% 50% repeat-x; color: #222222; font-weight: bold; }
 
 /* Interaction states
 ----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #aed0ea; /* @embed */ background: #d7ebf9 url(images/ui-bg_highlight-hard_80_d7ebf9_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #2779aa; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #aed0ea; /* @embed */ background: #d7ebf9 url("images/ui-bg_highlight-hard_80_d7ebf9_1x100.png") 50% 50% repeat-x; font-weight: normal; color: #2779aa; }
 .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2779aa; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #74b2e2; /* @embed */ background: #e4f1fb url(images/ui-bg_highlight-soft_100_e4f1fb_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #0070a3; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #0070a3; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #cccccc; background: #f0f0f0 /* @embed */ url(images/ui-bg_inset-hard_100_f0f0f0_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000000; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #74b2e2; /* @embed */ background: #e4f1fb url("images/ui-bg_highlight-soft_100_e4f1fb_1x100.png") 50% 50% repeat-x; font-weight: normal; color: #0070a3; }
+.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #0070a3; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #cccccc; background: #f0f0f0 /* @embed */ url("images/ui-bg_inset-hard_100_f0f0f0_1x100.png") 50% 50% repeat-x; font-weight: normal; color: #000000; }
 .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #000000; text-decoration: none; }
-.ui-widget :active { outline: none; }
 
 /* Interaction Cues
 ----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #f9dd34; background: #ffef8f /* @embed */ url(images/ui-bg_highlight-soft_25_ffef8f_1x100.png) 50% top repeat-x; color: #363636; }
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #f9dd34; background: #ffef8f /* @embed */ url("images/ui-bg_highlight-soft_25_ffef8f_1x100.png") 50% top repeat-x; color: #363636; }
 .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #cd0a0a /* @embed */ url(images/ui-bg_flat_15_cd0a0a_40x100.png) 50% 50% repeat-x; color: #ffffff; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #cd0a0a /* @embed */ url("images/ui-bg_flat_15_cd0a0a_40x100.png") 50% 50% repeat-x; color: #ffffff; }
 .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
 .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
 .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
 .ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
 .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */
 
 /* Icons
 ----------------------------------*/
 
 /* states and images */
 .ui-icon { width: 16px; height: 16px; }
-.ui-icon, .ui-widget-content .ui-icon, .ui-widget-header .ui-icon { /* @embed */ background-image: url(images/ui-icons_72a7cf_256x240.png); }
-.ui-state-default .ui-icon { /* @embed */ background-image: url(images/ui-icons_3d80b3_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon { /* @embed */ background-image: url(images/ui-icons_2694e8_256x240.png); }
-.ui-state-active .ui-icon { /* @embed */ background-image: url(images/ui-icons_666666_256x240.png); }
-.ui-state-highlight .ui-icon { /* @embed */ background-image: url(images/ui-icons_2e83ff_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { /* @embed */ background-image: url(images/ui-icons_ffffff_256x240.png); }
+.ui-icon, .ui-widget-content .ui-icon, .ui-widget-header .ui-icon { /* @embed */ background-image: url("images/ui-icons_72a7cf_256x240.png"); }
+.ui-state-default .ui-icon { /* @embed */ background-image: url("images/ui-icons_3d80b3_256x240.png"); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon { /* @embed */ background-image: url("images/ui-icons_2694e8_256x240.png"); }
+.ui-state-active .ui-icon { /* @embed */ background-image: url("images/ui-icons_666666_256x240.png"); }
+.ui-state-highlight .ui-icon { /* @embed */ background-image: url("images/ui-icons_2e83ff_256x240.png"); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { /* @embed */ background-image: url("images/ui-icons_ffffff_256x240.png"); }
 
 /* positioning */
 .ui-icon-carat-1-n { background-position: 0 0; }
 .ui-icon-help { background-position: -48px -144px; }
 .ui-icon-check { background-position: -64px -144px; }
 .ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-radio-on { background-position: -96px -144px; }
+.ui-icon-radio-off { background-position: -112px -144px; }
 .ui-icon-pin-w { background-position: -128px -144px; }
 .ui-icon-pin-s { background-position: -144px -144px; }
 .ui-icon-play { background-position: 0 -160px; }
 ----------------------------------*/
 
 /* Corner radius */
-.ui-corner-tl { border-top-left-radius: 0; }
-.ui-corner-tr { border-top-right-radius: 0; }
-.ui-corner-bl { border-bottom-left-radius: 0; }
-.ui-corner-br { border-bottom-right-radius: 0; }
-.ui-corner-top { border-top-left-radius: 0; border-top-right-radius: 0; }
-.ui-corner-bottom { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
-.ui-corner-right {  border-top-right-radius: 0; border-bottom-right-radius: 0; }
-.ui-corner-left { border-top-left-radius: 0; border-bottom-left-radius: 0; }
-.ui-corner-all { border-radius: 0; }
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; -khtml-border-top-left-radius: 0; border-top-left-radius: 0; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -khtml-border-top-right-radius: 0; border-top-right-radius: 0; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; -khtml-border-bottom-left-radius: 0; border-bottom-left-radius: 0; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; -khtml-border-bottom-right-radius: 0; border-bottom-right-radius: 0; }
 
 /* Overlays */
 .ui-widget-overlay { background: #000000; opacity: .75;filter:Alpha(Opacity=75); }
-.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; /* @embed */ background: #000000 url(images/ui-bg_flat_70_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); border-radius: 8px; }
+.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; /* @embed */ background: #000000 url("images/ui-bg_flat_70_000000_40x100.png") 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
\ No newline at end of file
diff --git a/resources/src/jquery.ui-themes/vector/jquery.ui.tooltip.css b/resources/src/jquery.ui-themes/vector/jquery.ui.tooltip.css
new file mode 100644 (file)
index 0000000..88b0d02
--- /dev/null
@@ -0,0 +1,21 @@
+/*!
+ * jQuery UI Tooltip 1.9.2
+ * http://jqueryui.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+.ui-tooltip {
+       padding: 8px;
+       position: absolute;
+       z-index: 9999;
+       max-width: 300px;
+       -webkit-box-shadow: 0 0 5px #aaa;
+       box-shadow: 0 0 5px #aaa;
+}
+/* Fades and background-images don't work well together in IE6, drop the image */
+* html .ui-tooltip {
+       background-image: none;
+}
+body .ui-tooltip { border-width: 2px; }
index 80b8303..7b49cb2 100644 (file)
@@ -154,7 +154,7 @@ function updateTooltip( element ) {
                        }
                }
 
-               // Search it as parent, because the form control can also inside the label element itself
+               // Search it as parent, because the form control can also be inside the label element itself
                $labelParent = $element.parents( 'label' );
                if ( $labelParent.length === 1 ) {
                        updateTooltipOnElement( element, $labelParent[0] );
index be770a9..a6ff8bc 100644 (file)
 
                        // Look for rgb(num,num,num)
                        if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)) {
-                               return [parseInt(result[1],10), parseInt(result[2],10), parseInt(result[3],10)];
+                               return [
+                                       parseInt( result[1], 10 ),
+                                       parseInt( result[2], 10 ),
+                                       parseInt( result[3], 10 )
+                               ];
                        }
 
                        // Look for rgb(num%,num%,num%)
                        if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)) {
-                               return [parseFloat(result[1],10) * 2.55, parseFloat(result[2],10) * 2.55, parseFloat(result[3]) * 2.55];
+                               return [
+                                       parseFloat( result[1] ) * 2.55,
+                                       parseFloat( result[2] ) * 2.55,
+                                       parseFloat( result[3] ) * 2.55
+                               ];
                        }
 
                        // Look for #a0b1c2
                        if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)) {
-                               return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
+                               return [
+                                       parseInt( result[1], 16 ),
+                                       parseInt( result[2], 16 ),
+                                       parseInt( result[3], 16 )
+                               ];
                        }
 
                        // Look for #fff
                        if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)) {
-                               return [parseInt(result[1] + result[1],16), parseInt(result[2] + result[2],16), parseInt(result[3] + result[3],16)];
+                               return [
+                                       parseInt( result[1] + result[1], 16 ),
+                                       parseInt( result[2] + result[2], 16 ),
+                                       parseInt( result[3] + result[3], 16)
+                               ];
                        }
 
                        // Look for rgba(0, 0, 0, 0) == transparent in Safari 3
                 * @property {Object}
                 */
                colors: {
-                       aqua: [0,255,255],
-                       azure: [240,255,255],
-                       beige: [245,245,220],
-                       black: [0,0,0],
-                       blue: [0,0,255],
-                       brown: [165,42,42],
-                       cyan: [0,255,255],
-                       darkblue: [0,0,139],
-                       darkcyan: [0,139,139],
-                       darkgrey: [169,169,169],
-                       darkgreen: [0,100,0],
-                       darkkhaki: [189,183,107],
-                       darkmagenta: [139,0,139],
-                       darkolivegreen: [85,107,47],
-                       darkorange: [255,140,0],
-                       darkorchid: [153,50,204],
-                       darkred: [139,0,0],
-                       darksalmon: [233,150,122],
-                       darkviolet: [148,0,211],
-                       fuchsia: [255,0,255],
-                       gold: [255,215,0],
-                       green: [0,128,0],
-                       indigo: [75,0,130],
-                       khaki: [240,230,140],
-                       lightblue: [173,216,230],
-                       lightcyan: [224,255,255],
-                       lightgreen: [144,238,144],
-                       lightgrey: [211,211,211],
-                       lightpink: [255,182,193],
-                       lightyellow: [255,255,224],
-                       lime: [0,255,0],
-                       magenta: [255,0,255],
-                       maroon: [128,0,0],
-                       navy: [0,0,128],
-                       olive: [128,128,0],
-                       orange: [255,165,0],
-                       pink: [255,192,203],
-                       purple: [128,0,128],
-                       violet: [128,0,128],
-                       red: [255,0,0],
-                       silver: [192,192,192],
-                       white: [255,255,255],
-                       yellow: [255,255,0],
-                       transparent: [255,255,255]
+                       aqua: [0, 255, 255],
+                       azure: [240, 255, 255],
+                       beige: [245, 245, 220],
+                       black: [0, 0, 0],
+                       blue: [0, 0, 255],
+                       brown: [165, 42, 42],
+                       cyan: [0, 255, 255],
+                       darkblue: [0, 0, 139],
+                       darkcyan: [0, 139, 139],
+                       darkgrey: [169, 169, 169],
+                       darkgreen: [0, 100, 0],
+                       darkkhaki: [189, 183, 107],
+                       darkmagenta: [139, 0, 139],
+                       darkolivegreen: [85, 107, 47],
+                       darkorange: [255, 140, 0],
+                       darkorchid: [153, 50, 204],
+                       darkred: [139, 0, 0],
+                       darksalmon: [233, 150, 122],
+                       darkviolet: [148, 0, 211],
+                       fuchsia: [255, 0, 255],
+                       gold: [255, 215, 0],
+                       green: [0, 128, 0],
+                       indigo: [75, 0, 130],
+                       khaki: [240, 230, 140],
+                       lightblue: [173, 216, 230],
+                       lightcyan: [224, 255, 255],
+                       lightgreen: [144, 238, 144],
+                       lightgrey: [211, 211, 211],
+                       lightpink: [255, 182, 193],
+                       lightyellow: [255, 255, 224],
+                       lime: [0, 255, 0],
+                       magenta: [255, 0, 255],
+                       maroon: [128, 0, 0],
+                       navy: [0, 0, 128],
+                       olive: [128, 128, 0],
+                       orange: [255, 165, 0],
+                       pink: [255, 192, 203],
+                       purple: [128, 0, 128],
+                       violet: [128, 0, 128],
+                       red: [255, 0, 0],
+                       silver: [192, 192, 192],
+                       white: [255, 255, 255],
+                       yellow: [255, 255, 0],
+                       transparent: [255, 255, 255]
                },
 
                /**
index a4dc33b..c4e2520 100644 (file)
                                        .text( collapseText )
                                        .wrap( '<span class="mw-collapsible-toggle"></span>' )
                                                .parent()
-                                               .prepend( '&nbsp;[' )
-                                               .append( ']&nbsp;' )
+                                               .prepend( '<span class="mw-collapsible-bracket">[</span>' )
+                                               .append( '<span class="mw-collapsible-bracket">]</span>' )
                                                .on( 'click.mw-collapsible keypress.mw-collapsible', actionHandler );
                        };
 
index 04b7d0a..52e8dd4 100644 (file)
@@ -14,9 +14,9 @@ mediaWiki.language.convertGrammar = function ( word, form ) {
                        word = word.replace( /u[ms]$/i, 'i' ); // 2nd declension singular
                        word = word.replace( /ommunia$/i, 'ommunium' ); // 3rd declension neuter plural (partly)
                        word = word.replace( /a$/i, 'ae' ); // 1st declension singular
-                       word = word.replace( /libri$/i,'librorum' ); // 2nd declension plural (partly)
+                       word = word.replace( /libri$/i, 'librorum' ); // 2nd declension plural (partly)
                        word = word.replace( /nuntii$/i, 'nuntiorum' ); // 2nd declension plural (partly)
-                       word = word.replace( /tio$/i,'tionis' ); // 3rd declension singular (partly)
+                       word = word.replace( /tio$/i, 'tionis' ); // 3rd declension singular (partly)
                        word = word.replace( /ns$/i, 'ntis' );
                        word = word.replace( /as$/i, 'atis' );
                        word = word.replace( /es$/i, 'ei' ); // 5th declension singular
@@ -26,9 +26,9 @@ mediaWiki.language.convertGrammar = function ( word, form ) {
                        word = word.replace( /u[ms]$/i, 'um' ); // 2nd declension singular
                        word = word.replace( /ommunia$/i, 'am' ); // 3rd declension neuter plural (partly)
                        word = word.replace( /a$/i, 'ommunia' ); // 1st declension singular
-                       word = word.replace( /libri$/i,'libros' ); // 2nd declension plural (partly)
+                       word = word.replace( /libri$/i, 'libros' ); // 2nd declension plural (partly)
                        word = word.replace( /nuntii$/i, 'nuntios' );// 2nd declension plural (partly)
-                       word = word.replace( /tio$/i,'tionem' ); // 3rd declension singular (partly)
+                       word = word.replace( /tio$/i, 'tionem' ); // 3rd declension singular (partly)
                        word = word.replace( /ns$/i, 'ntem' );
                        word = word.replace( /as$/i, 'atem');
                        word = word.replace( /es$/i, 'em' ); // 5th declension singular
@@ -38,9 +38,9 @@ mediaWiki.language.convertGrammar = function ( word, form ) {
                        word = word.replace( /u[ms]$/i, 'o' ); // 2nd declension singular
                        word = word.replace( /ommunia$/i, 'ommunibus' ); // 3rd declension neuter plural (partly)
                        word = word.replace( /a$/i, 'a' ); // 1st declension singular
-                       word = word.replace( /libri$/i,'libris' ); // 2nd declension plural (partly)
+                       word = word.replace( /libri$/i, 'libris' ); // 2nd declension plural (partly)
                        word = word.replace( /nuntii$/i, 'nuntiis' ); // 2nd declension plural (partly)
-                       word = word.replace( /tio$/i,'tione' ); // 3rd declension singular (partly)
+                       word = word.replace( /tio$/i, 'tione' ); // 3rd declension singular (partly)
                        word = word.replace( /ns$/i, 'nte' );
                        word = word.replace( /as$/i, 'ate');
                        word = word.replace( /es$/i, 'e' ); // 5th declension singular
index bda4043..ae08c9f 100644 (file)
@@ -5,7 +5,7 @@
 // Font is not included.
 .agora-field-styling() {
 
-       border: 1px solid @colorGrayLight;
+       border: 1px solid @colorFieldBorder;
 
        &:focus {
                // Styling focus of native checkboxes etc on Mac is almost impossible.
@@ -13,9 +13,9 @@
                        outline: 0; // Removes OS field focus
                }
 
-               box-shadow: @colorProgressiveShadow 0 0 5px;
+               box-shadow: lighten(@colorProgressive, 6%) 0 0 5px;
 
-               border-color: @colorProgressiveShadow;
+               border-color: lighten(@colorProgressive, 6%);
        }
 
        color: @colorText;
@@ -26,9 +26,8 @@
 }
 
 .agora-label-styling() {
-       //font-weight: bold;
        font-size: 0.9em;
-       color: darken(@colorGrayLight, 50%);
+       color: @colorText;
 
        * {
                font-weight: normal;
@@ -49,7 +48,7 @@
                height: auto;
                margin: 0 0.1em 0 0;
                padding: 0;
-               border: 1px solid @colorGrayLight;
+               border: 1px solid @colorFieldBorder;
                cursor: pointer;
        }
 }
 }
 
 .button-colors(@bgColor) when (lightness(@bgColor) >= 70%) {
-       color: @colorGrayDark;
-       border: 1px solid @colorGrayLight;
+       color: @colorButtonText;
+       border: 1px solid @colorGray12;
 
        &:disabled {
-               color: @colorGrayLight;
+               color: @colorDisabledText;
 
                // make sure disabled buttons don't have hover and active states
                &:hover,
 }
 
 .button-colors(@bgColor) when (lightness(@bgColor) < 70%) {
-       color: @colorWhite;
+       color: #fff;
        // border of the same color as background so that light background and
        // dark background buttons are the same height (only top and bottom to
        // make box shadow on hover cover the corners too)
        text-shadow: 0 1px rgba(0, 0, 0, .1);
 
        &:disabled {
-               background: @colorGrayLight;
-               border-color: @colorGrayLight;
+               background: @colorGray12;
+               border-color: @colorGray12;
 
                // make sure disabled buttons don't have hover and active states
                &:hover,
 .button-colors-quiet(@textColor) {
        // Quiet buttons all start gray, and reveal
        // constructive/progressive/destructive color on hover and active.
-       color: @colorGrayDark;
+       color: @colorButtonText;
 
        &:hover,
        &:focus {
        }
 
        &:disabled {
-               color: @colorGrayLight;
+               color: @colorDisabledText;
        }
 }
index ccf869d..8a2741d 100644 (file)
@@ -1,37 +1,59 @@
-@baseFontSize: 1em;
+// Colors for use in mediawiki.ui and elsewhere
 
-// FIXME: remove @colorProgressiveShadow (shadows should be generated
-// in LESS by dimming the original colors)
-@colorProgressiveShadow: #4091ed;
-
-// White; for background use, and text use on dark backgrounds
-@colorWhite: #fff;
-// Off-white; for background use on white backgrounds
-@colorOffWhite: #fafafa;
-// Dark gray; for non-text use
-@colorGrayDark: #898989;
-// Light gray; for non-text use
-@colorGrayLight: #ccc;
-// Very light gray; for non-text use
-@colorGrayLighter: #ddd;
-// Lightest gray; for non-text use
-@colorGrayLightest: #eee;
-
-// Dark gray; for body text
-@colorText: #252525;
-// Light gray; for less important body text and links
-@colorTextLight: #696969;
+// Although this defines many shades, be parsimonious in your own use of grays. Prefer
+// colors already in use in MediaWiki. Prefer semantic color names such as "@colorText".
+@colorGray1: #111; // darkest
+@colorGray2: #222;
+@colorGray3: #333;
+@colorGray4: #444;
+@colorGray5: #555;
+@colorGray6: #666;
+@colorGray7: #777;
+@colorGray8: #888;
+@colorGray9: #999;
+@colorGray10: #AAA;
+@colorGray11: #BBB;
+@colorGray12: #CCC;
+@colorGray13: #DDD;
+@colorGray14: #EEE;
+@colorGray15: #F9F9F9; // lightest
 
+// Semantic background colors
 // Blue; for contextual use of a continuing action
 @colorProgressive: #347bff;
-// Orange; for contextual use of returning to a past action
-@colorRegressive: #ff7e1e;
 // Green; for contextual use of a positive finalizing action
 @colorConstructive: #00af89;
-// Red; for contextual use of a negative finalizing action
+// Orange; for contextual use of returning to a past action
+@colorRegressive: #FF5D00;
+// Red; for contextual use of a negative action of high severity
 @colorDestructive: #d11d13;
+// Orange; for contextual use of a potentially negative action of medium severity
+@colorMediumSevere: #FF5D00;
+// Yellow; for contextual use of a potentially negative action of low severity
+@colorLowSevere: #FFB50D;
 
 // Used in mixins to darken contextual colors by the same amount (eg. focus)
 @colorDarkenPercentage: 13.5%;
 // Used in mixins to lighten contextual colors by the same amount (eg. hover)
-@colorLightenPercentage: 13.5%;
\ No newline at end of file
+@colorLightenPercentage: 13.5%;
+
+// Text colors
+@colorText: @colorGray2;
+@colorTextLight: @colorGray6;
+@colorButtonText: @colorGray8;
+@colorDisabledText: @colorGray12;
+@colorErrorText: #CC0000;
+
+// UI colors
+@colorFieldBorder: @colorGray12;
+@colorShadow: @colorGray14;
+@colorPlaceholder: @colorGray10;
+@colorNeutral: @colorGray7;
+
+// The following rules are deprecated
+@colorWhite: #fff;
+@colorOffWhite: #fafafa;
+@colorGrayDark: #898989;
+@colorGrayLight: #ccc;
+@colorGrayLighter: #ddd;
+@colorGrayLightest: #eee;
index ccddb3e..a05a054 100644 (file)
@@ -1,6 +1,16 @@
 ( function ( mw, $ ) {
        var supportsPlaceholder = 'placeholder' in document.createElement( 'input' );
 
+       // Break out of framesets
+       if ( mw.config.get( 'wgBreakFrames' ) ) {
+               // Note: In IE < 9 strict comparison to window is non-standard (the standard didn't exist yet)
+               // it works only comparing to window.self or window.window (http://stackoverflow.com/q/4850978/319266)
+               if ( window.top !== window.self ) {
+                       // Un-trap us from framesets
+                       window.top.location = window.location;
+               }
+       }
+
        mw.hook( 'wikipage.content' ).add( function ( $content ) {
                var $sortableTables;
 
index ec08413..ebf4779 100644 (file)
@@ -24,6 +24,7 @@
 //
 // Styleguide 2.1.
 .mw-ui-button {
+       font-size: 1em;
        // Container layout
        display: inline-block;
        padding: .5em 1em;
@@ -39,7 +40,7 @@
        zoom: 1;
 
        // Container styling
-       .button-colors(@colorWhite);
+       .button-colors(#FFF);
        border-radius: @buttonBorderRadius;
 
        // Ensure that buttons and inputs are nicely aligned when they have differing heights
@@ -75,7 +76,7 @@
        //
        // Styleguide 2.1.6.
        &.mw-ui-big {
-               font-size: @baseFontSize * 1.3;
+               font-size: 1.3em;
        }
 
        // Block buttons
                background: transparent;
                border: none;
                text-shadow: none;
-               .button-colors-quiet(@colorGrayDark);
+               .button-colors-quiet(@colorButtonText);
 
                &:hover,
                &:focus {
index 88de7d8..1c0d833 100644 (file)
                                                                $feedbackPageLink.clone()
                                                        )
                                                ),
-                                               $( '<div style="margin-top: 1em;"></div>' ).append(
-                                                       mw.msg( 'feedback-subject' ),
+                                               $( '<div style="margin-top: 1em;"></div>' )
+                                               .msg( 'feedback-subject' )
+                                               .append(
                                                        $( '<br>' ),
                                                        $( '<input type="text" class="feedback-subject" name="subject" maxlength="60" style="width: 100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;"/>' )
                                                ),
-                                               $( '<div style="margin-top: 0.4em;"></div>' ).append(
-                                                       mw.msg( 'feedback-message' ),
+                                               $( '<div style="margin-top: 0.4em;"></div>' )
+                                               .msg( 'feedback-message' )
+                                               .append(
                                                        $( '<br>' ),
                                                        $( '<textarea name="message" class="feedback-message" rows="5" cols="60"></textarea>' )
                                                )
                                        $( '<div class="feedback-mode feedback-bugs"></div>' ).append(
                                                $( '<p>' ).msg( 'feedback-bugcheck', $bugsListLink )
                                        ),
-                                       $( '<div class="feedback-mode feedback-submitting" style="text-align: center; margin: 3em 0;"></div>' ).append(
-                                               mw.msg( 'feedback-adding' ),
+                                       $( '<div class="feedback-mode feedback-submitting" style="text-align: center; margin: 3em 0;"></div>' )
+                                       .msg( 'feedback-adding' )
+                                       .append(
                                                $( '<br>' ),
                                                $( '<span class="feedback-spinner"></span>' )
                                        ),
                        this.$dialog.dialog( {
                                width: 500,
                                autoOpen: false,
-                               title: mw.msg( this.dialogTitleMessageKey ),
+                               title: mw.message( this.dialogTitleMessageKey ).escaped(),
                                modal: true,
                                buttons: fb.buttons
                        } );
                        var subject, message,
                                fb = this;
 
-                       function ok( result ) {
-                               if ( result.edit !== undefined ) {
-                                       if ( result.edit.result === 'Success' ) {
-                                               fb.displayThanks();
-                                       } else {
-                                               // unknown API result
-                                               fb.displayError( 'feedback-error1' );
-                                       }
-                               } else {
-                                       // edit failed
-                                       fb.displayError( 'feedback-error2' );
-                               }
-                       }
-
-                       function err() {
-                               // ajax request failed
-                               fb.displayError( 'feedback-error3' );
-                       }
-
                        // Get the values to submit.
                        subject = this.subjectInput.value;
 
                                subject,
                                message,
                                { redirect: true }
-                       ).done( ok ).fail( err );
+                       )
+                       .done( function ( result ) {
+                               if ( result.edit !== undefined ) {
+                                       if ( result.edit.result === 'Success' ) {
+                                               fb.displayThanks();
+                                       } else {
+                                               // unknown API result
+                                               fb.displayError( 'feedback-error1' );
+                                       }
+                               } else {
+                                       // edit failed
+                                       fb.displayError( 'feedback-error2' );
+                               }
+                       } )
+                       .fail( function () {
+                               // ajax request failed
+                               fb.displayError( 'feedback-error3' );
+                       } );
                },
 
                /**
index 8be1321..9eea492 100644 (file)
@@ -15,6 +15,7 @@
         * ending in array keys matching the given name (e.g. "baz" matches
         * "foo[bar][baz]").
         *
+        * @private
         * @param {jQuery} element
         * @param {string} name
         * @return {jQuery|null}
         * Helper function for hide-if to return a test function and list of
         * dependent fields for a hide-if specification.
         *
+        * @private
         * @param {jQuery} element
         * @param {Array} hide-if spec
-        * @return {Array} 2 elements: jQuery of dependent fields, and test function
+        * @return {Array}
+        * @return {jQuery} return.0 Dependent fields
+        * @return {Function} return.1 Test function
         */
        function hideIfParse( $el, spec ) {
                var op, i, l, v, $field, $fields, fields, func, funcs, getVal;
@@ -63,7 +67,7 @@
                                                throw new Error( op + ' parameters must be arrays' );
                                        }
                                        v = hideIfParse( $el, spec[i] );
-                                       fields.push( v[0] );
+                                       fields = fields.concat( v[0].toArray() );
                                        funcs.push( v[1] );
                                }
                                $fields = $( fields );
index 9061acd..380e4e6 100644 (file)
                         *             'skip': 'return !!window.Example', (or) null
                         *
                         *             // Added during implementation
+                        *             'skipped': true,
                         *             'script': ...,
                         *             'style': ...,
                         *             'messages': { 'key': 'value' },
                        /* Private methods */
 
                        function getMarker() {
-                               // Cached ?
-                               if ( $marker ) {
-                                       return $marker;
-                               }
-
-                               $marker = $( 'meta[name="ResourceLoaderDynamicStyles"]' );
-                               if ( $marker.length ) {
-                                       return $marker;
+                               // Cached
+                               if ( !$marker ) {
+                                       $marker = $( 'meta[name="ResourceLoaderDynamicStyles"]' );
+                                       if ( !$marker.length ) {
+                                               mw.log( 'No <meta name="ResourceLoaderDynamicStyles"> found, inserting dynamically' );
+                                               $marker = $( '<meta>' ).attr( 'name', 'ResourceLoaderDynamicStyles' ).appendTo( 'head' );
+                                       }
                                }
-                               mw.log( 'getMarker> No <meta name="ResourceLoaderDynamicStyles"> found, inserting dynamically.' );
-                               $marker = $( '<meta>' ).attr( 'name', 'ResourceLoaderDynamicStyles' ).appendTo( 'head' );
-
                                return $marker;
                        }
 
                                        skip = new Function( registry[module].skip );
                                        registry[module].skip = null;
                                        if ( skip() ) {
+                                               registry[module].skipped = true;
                                                registry[module].dependencies = [];
                                                registry[module].state = 'ready';
                                                handlePending( module );
                                                crossDomain: true,
                                                cache: true,
                                                async: true
-                                       } ).always( function () {
-                                               if ( callback  ) {
-                                                       callback();
-                                               }
-                                       } );
+                                       } ).always( callback );
                                } else {
                                        /*jshint evil:true */
                                        document.write( mw.html.element( 'script', { 'src': src }, '' ) );
                                /**
                                 * Execute a function as soon as one or more required modules are ready.
                                 *
-                                * If the required modules are already loaded, the function will be
-                                * executed immediately and the modules will not be reloaded.
-                                *
                                 * Example of inline dependency on OOjs:
                                 *
                                 *     mw.loader.using( 'oojs', function () {
index c5694b7..7933f1d 100644 (file)
         *
         * @private
         * @param {string} info One of 'groups' or 'rights'
-        * @param {Function} [callback]
         * @return {jQuery.Promise}
         */
-       function getUserInfo( info, callback ) {
+       function getUserInfo( info ) {
                var api;
                if ( !deferreds[info] ) {
 
@@ -42,7 +41,7 @@
 
                }
 
-               return deferreds[info].done( callback ).promise();
+               return deferreds[info].promise();
        }
 
        mw.user = user = {
                 * @return {jQuery.Promise}
                 */
                getGroups: function ( callback ) {
-                       return getUserInfo( 'groups', callback );
+                       return getUserInfo( 'groups' ).done( callback );
                },
 
                /**
                 * @return {jQuery.Promise}
                 */
                getRights: function ( callback ) {
-                       return getUserInfo( 'rights', callback );
+                       return getUserInfo( 'rights' ).done( callback );
                }
        };
 
index d007deb..5fadace 100644 (file)
@@ -4,6 +4,7 @@
                        "Xuacu"
                ]
        },
+       "monobook-desc": "El tema clásicu de MediaWiki dende 2004, llamáu asina pola foto en blanco y negro d'un llibru nel fondu de la páxina",
        "monobook.css": "/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Monobook */",
        "monobook.js": "/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu MonoBook */"
 }
index e20dbb6..bb7745e 100644 (file)
@@ -1,10 +1,12 @@
 {
        "@metadata": {
                "authors": [
-                       "Peter Alberti"
+                       "Peter Alberti",
+                       "Christian List"
                ]
        },
        "skinname-monobook": "MonoBook",
+       "monobook-desc": "Den klassiske MediaWiki hud siden 2004, opkaldt efter det sort-hvide foto af en bog i baggrunden af siderne",
        "monobook.css": "/** CSS inkluderet her vil være aktivt for brugere af Monobook-temaet . */",
        "monobook.js": "/* JavaScript i denne fil vil indlæses for brugere af udseendet MonoBook */"
 }
index 33e527b..e645482 100644 (file)
@@ -5,6 +5,7 @@
                        "Siddhartha Ghai"
                ]
        },
+       "monobook-desc": "2004 से मीडियाविकि की क्लासिक त्वचा, जिसका नाम पृष्ठभूमि में पुस्तक के इकरंगा चित्र से पड़ा।",
        "monobook.css": "/* यहां रखी गई css मोनोबुक त्वचा का इस्तेमाल करने वाले सभी सदस्योंपर असर करेगी */",
        "monobook.js": "/* यहाँ पर दी गई जावास्क्रिप्ट मोनोबुक त्वचा का प्रयोग कर रहे सदस्यों के लिए लोड होगी */"
 }
diff --git a/skins/MonoBook/i18n/ilo.json b/skins/MonoBook/i18n/ilo.json
new file mode 100644 (file)
index 0000000..c59ae5f
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Lam-ang"
+               ]
+       },
+       "monobook-desc": "Ti klasiko a kudil ti MediaWiki manipud idi 2004, nanaganan manipud ti nangisit-ken-puraw a retrato ti libro iti likudan ti panid"
+}
index fa975fe..c01a8cc 100644 (file)
@@ -1,9 +1,11 @@
 {
        "@metadata": {
                "authors": [
-                       "Anakmalaysia"
+                       "Anakmalaysia",
+                       "Pizza1016"
                ]
        },
        "skinname-monobook": "MonoBook",
+       "monobook-desc": "Kulit MediaWiki yang klasik sejak tahun 2004, dinamakan selepas foto hitam-dan-putih sebuah buku dalam belakang laman.",
        "monobook.css": "/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Monobook */"
 }
index cb76ae3..1fb9ad4 100644 (file)
@@ -892,11 +892,6 @@ div.mw-lag-warn-high {
        font-size: 90%;
 }
 
-/* God-damned hack for the crappy layout */
-.os-suggest {
-       font-size: 127%;
-}
-
 /* Sometimes people don't want personal tools to be lowercase! */
 .no-text-transform {
        text-transform: none;
index 7dc376a..0ec031f 100644 (file)
@@ -97,7 +97,6 @@ class VectorTemplate extends BaseTemplate {
                <div id="content" class="mw-body" role="main">
                        <a id="top"></a>
 
-                       <div id="mw-js-message" style="display:none;"<?php $this->html( 'userlangattributes' ) ?>></div>
                        <?php
                        if ( $this->data['sitenotice'] ) {
                                ?>
@@ -411,25 +410,19 @@ class VectorTemplate extends BaseTemplate {
                                                echo ' emptyPortlet';
                                        }
                                        ?>" aria-labelledby="p-variants-label">
-                                               <h3 id="mw-vector-current-variant">
-                                                       <?php
-                                                       foreach ( $this->data['variant_urls'] as $link ) {
-                                                               ?>
-                                                               <?php
-                                                               if ( stripos( $link['attributes'], 'selected' ) !== false ) {
-                                                                       ?>
-                                                                       <?php
-                                                                       echo htmlspecialchars( $link['text'] )
-                                                                       ?>
-                                                               <?php
-                                                               }
-                                                               ?>
-                                                       <?php
+                                               <?php
+                                               // Replace the label with the name of currently chosen variant, if any
+                                               $variantLabel = $this->getMsg( 'variants' )->text();
+                                               foreach ( $this->data['variant_urls'] as $link ) {
+                                                       if ( stripos( $link['attributes'], 'selected' ) !== false ) {
+                                                               $variantLabel = $link['text'];
+                                                               break;
                                                        }
-                                                       ?>
-                                               </h3>
-
-                                               <h3 id="p-variants-label"><span><?php $this->msg( 'variants' ) ?></span><a href="#"></a></h3>
+                                               }
+                                               ?>
+                                               <h3 id="p-variants-label"><span
+                                                       style="display: block;" <?php /* Temporary WMF deployment hack, to be removed before 1.24 release */ ?>
+                                                       ><?php echo htmlspecialchars( $variantLabel ) ?></span><a href="#"></a></h3>
 
                                                <div class="menu">
                                                        <ul>
@@ -551,7 +544,7 @@ class VectorTemplate extends BaseTemplate {
 
                                                <form action="<?php $this->text( 'wgScript' ) ?>" id="searchform">
                                                        <?php
-                                                       if ($wgVectorUseSimpleSearch) {
+                                                       if ( $wgVectorUseSimpleSearch ) {
                                                        ?>
                                                        <div id="simpleSearch">
                                                                <?php
index 9e39fbb..57fe45f 100644 (file)
@@ -144,6 +144,7 @@ div#mw-head div.vectorMenu h3 {
 }
 
 // The "Variants" menu has a really funny structure
+// Temporary WMF deployment hack, to be removed before 1.24 release
 div#mw-head div.vectorMenu#p-variants {
        #p-variants-label span {
                display: none;
index bd3703f..d150812 100644 (file)
@@ -5,6 +5,7 @@
                        "Xuacu"
                ]
        },
+       "vector-skin-desc": "Versión moderna de MonoBook, con un aspeutu frescu y munchos ameyoramientos d'usabilidá",
        "vector.css": "/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Vector */",
        "vector.js": "/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Vector */",
        "vector-action-addsection": "Amestar seición",
@@ -17,5 +18,6 @@
        "vector-view-edit": "Editar",
        "vector-view-history": "Ver historial",
        "vector-view-view": "Lleer",
-       "vector-view-viewsource": "Ver fonte"
+       "vector-view-viewsource": "Ver fonte",
+       "vector-more-actions": "Más"
 }
index f94be4c..f5e80ac 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "CERminator",
                        "DzWiki",
-                       "KWiki"
+                       "KWiki",
+                       "Edinwiki"
                ]
        },
        "vector-action-addsection": "Dodaj temu",
@@ -16,5 +17,6 @@
        "vector-view-edit": "Uredi",
        "vector-view-history": "Pregled historije",
        "vector-view-view": "Čitanje",
-       "vector-view-viewsource": "Pogledaj izvor"
+       "vector-view-viewsource": "Pogledaj izvor",
+       "vector-more-actions": "Više"
 }
index ad56101..1651d66 100644 (file)
@@ -6,6 +6,7 @@
                        "Peter Alberti"
                ]
        },
+       "vector-skin-desc": "Moderne version af MonoBook med frisk udseende og mange forbedringer af brugervenligheden",
        "vector-action-addsection": "Nyt emne",
        "vector-action-delete": "Slet",
        "vector-action-move": "Flyt",
@@ -16,5 +17,6 @@
        "vector-view-edit": "Redigér",
        "vector-view-history": "Se historik",
        "vector-view-view": "Læs",
-       "vector-view-viewsource": "Se kilden"
+       "vector-view-viewsource": "Se kilden",
+       "vector-more-actions": "Mere"
 }
index 5b5f56b..6b68d3e 100644 (file)
@@ -16,5 +16,6 @@
        "vector-view-edit": "सम्पादन",
        "vector-view-history": "इतिहास देखें",
        "vector-view-view": "पढ़ें",
-       "vector-view-viewsource": "स्रोत देखें"
+       "vector-view-viewsource": "स्रोत देखें",
+       "vector-more-actions": "अधिक"
 }
index 817c75f..d83586d 100644 (file)
@@ -5,6 +5,7 @@
                        "Saluyot"
                ]
        },
+       "vector-skin-desc": "Modernno a bersion ti MonoBook nga addaan iti baro a langa ken adu kadagiti naserbi a panagpasayaat",
        "vector-action-addsection": "Agnayon ti topiko",
        "vector-action-delete": "Ikkaten",
        "vector-action-move": "Iyalis",
index 697d1eb..ccd43c5 100644 (file)
@@ -15,5 +15,6 @@
        "vector-view-edit": "Labot",
        "vector-view-history": "Hronoloģija",
        "vector-view-view": "Skatīt",
-       "vector-view-viewsource": "Aplūkot kodu"
+       "vector-view-viewsource": "Aplūkot kodu",
+       "vector-more-actions": "Vairāk"
 }
index 2795e44..73c8e05 100644 (file)
@@ -7,7 +7,9 @@
                ]
        },
        "skinname-vector": "Vector",
+       "vector-skin-desc": "Versi MonoBook yang moden dengan rupa yang segar dan banyak pembaikan kepada kegunaan.",
        "vector.css": "/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Vector */",
+       "vector.js": "/ * Sebarang JavaScript di sini akan dimuatkan untuk pengguna-pengguna yang menggunakan kulit Vector * /",
        "vector-action-addsection": "Buka topik",
        "vector-action-delete": "Hapus",
        "vector-action-move": "Pindah",
@@ -18,5 +20,6 @@
        "vector-view-edit": "Sunting",
        "vector-view-history": "Lihat sejarah",
        "vector-view-view": "Baca",
-       "vector-view-viewsource": "Lihat sumber"
+       "vector-view-viewsource": "Lihat sumber",
+       "vector-more-actions": "Lain"
 }
index 32c9f1a..3fab17f 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "Chrisportelli"
+                       "Chrisportelli",
+                       "Leli Forte"
                ]
        },
        "vector-action-addsection": "Żid diskussjoni",
@@ -14,5 +15,6 @@
        "vector-view-edit": "Editja",
        "vector-view-history": "Ara l-kronoloġija",
        "vector-view-view": "Aqra",
-       "vector-view-viewsource": "Ara s-sors"
+       "vector-view-viewsource": "Ara s-sors",
+       "vector-more-actions": "Aktar"
 }
index aedb6a9..17b2039 100644 (file)
        margin-left: 10em;
 }
 
+.config-skins-item {
+       /* Clearfix */
+       clear: left;
+       overflow: hidden;
+}
+
+.config-skins-item .config-input-check {
+       margin-left: 10em;
+       width: 20em;
+       float: left;
+}
+
+.config-skins-item .config-skins-use-as-default {
+       float: left;
+}
+
 .error {
        color: red;
        background-color: #fff;
index 5a8335d..17ec8c6 100644 (file)
@@ -386,60 +386,6 @@ p.mw-upload-editlicenses {
        text-align: right;
 }
 
-/**
- * OpenSearch ajax suggestions
- */
-.os-suggest {
-       overflow: auto;
-       overflow-x: hidden;
-       position: absolute;
-       top: 0;
-       left: 0;
-       width: 0;
-       background-color: white;
-       border-style: solid;
-       border-color: #AAAAAA;
-       border-width: 1px;
-       z-index: 99;
-       font-size: 95%;
-}
-
-table.os-suggest-results {
-       font-size: 95%;
-       cursor: pointer;
-       border: 0;
-       border-collapse: collapse;
-       width: 100%;
-}
-
-.os-suggest-result,
-.os-suggest-result-hl {
-       white-space: nowrap;
-       background-color: white;
-       color: black;
-       padding: 2px;
-}
-
-.os-suggest-result-hl,
-.os-suggest-result-hl-webkit {
-       background-color: #4C59A6;
-       color: white;
-}
-
-.os-suggest-toggle {
-       position: relative;
-       left: 1ex;
-       font-size: 65%;
-}
-
-.os-suggest-toggle-def {
-       position: absolute;
-       top: 0;
-       left: 0;
-       font-size: 65%;
-       visibility: hidden;
-}
-
 /* Page history styling */
 
 /* The auto-generated edit comments */
index fdfca0a..b6689f9 100644 (file)
@@ -8,15 +8,6 @@
                isIE6 = ( /msie ([0-9]{1,}[\.0-9]{0,})/.exec( ua ) && parseFloat( RegExp.$1 ) <= 6.0 ),
                onloadFuncts = [];
 
-if ( mw.config.get( 'wgBreakFrames' ) ) {
-       // Note: In IE < 9 strict comparison to window is non-standard (the standard didn't exist yet)
-       // it works only comparing to window.self or window.window (http://stackoverflow.com/q/4850978/319266)
-       if ( win.top !== win.self ) {
-               // Un-trap us from framesets
-               win.top.location = win.location;
-       }
-}
-
 /**
  * User-agent sniffing.
  *
index 69fda8d..59c18a8 100644 (file)
@@ -7,7 +7,7 @@ module.exports = function ( grunt ) {
        grunt.loadNpmTasks( 'grunt-contrib-jshint' );
        grunt.loadNpmTasks( 'grunt-contrib-watch' );
        grunt.loadNpmTasks( 'grunt-banana-checker' );
-       grunt.loadNpmTasks( 'grunt-jscs-checker' );
+       grunt.loadNpmTasks( 'grunt-jscs' );
        grunt.loadNpmTasks( 'grunt-jsonlint' );
 
        grunt.file.setBase(  __dirname + '/../..' );
index a398596..386f488 100644 (file)
@@ -9,7 +9,7 @@
     "grunt-contrib-jshint": "0.10.0",
     "grunt-contrib-watch": "0.6.1",
     "grunt-banana-checker": "0.1.0",
-    "grunt-jscs-checker": "0.4.4",
+    "grunt-jscs": "0.6.1",
     "grunt-jsonlint": "1.0.4"
   }
 }
index 6c8a401..5d05ca0 100644 (file)
@@ -69,11 +69,6 @@ class ParserTest {
         */
        private $djVuSupport;
 
-       /**
-        * @var string $oldTablePrefix Original table prefix
-        */
-       private $oldTablePrefix;
-
        private $maxFuzzTestLength = 300;
        private $fuzzSeed = 0;
        private $memoryLimit = 50;
@@ -153,7 +148,7 @@ class ParserTest {
                global $wgParser, $wgParserConf, $IP, $messageMemc, $wgMemc,
                        $wgUser, $wgLang, $wgOut, $wgRequest, $wgStyleDirectory, $wgEnableParserCache,
                        $wgExtraNamespaces, $wgNamespaceAliases, $wgNamespaceProtection, $wgLocalFileRepo,
-                       $wgExtraInterlanguageLinkPrefixes,
+                       $wgExtraInterlanguageLinkPrefixes, $wgLocalInterwikis,
                        $parserMemc, $wgThumbnailScriptPath, $wgScriptPath,
                        $wgArticlePath, $wgScript, $wgStylePath, $wgExtensionAssetsPath,
                        $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType, $wgLockManagers;
@@ -213,7 +208,6 @@ class ParserTest {
                $messageMemc = wfGetMessageCacheStorage();
                $parserMemc = wfGetParserCacheStorage();
 
-               // $wgContLang = new StubContLang;
                $wgUser = new User;
                $context = new RequestContext;
                $wgLang = $context->getLanguage();
@@ -224,11 +218,12 @@ class ParserTest {
                if ( $wgStyleDirectory === false ) {
                        $wgStyleDirectory = "$IP/skins";
                }
+
+               self::setupInterwikis();
+               $wgLocalInterwikis = array( 'local', 'mi' );
                // "extra language links"
                // see https://gerrit.wikimedia.org/r/111390
                array_push( $wgExtraInterlanguageLinkPrefixes, 'mul' );
-
-               self::setupInterwikis();
        }
 
        /**
@@ -245,6 +240,11 @@ class ParserTest {
                # for testing inter-language links
                Hooks::register( 'InterwikiLoadPrefix', function ( $prefix, &$iwData ) {
                        static $testInterwikis = array(
+                               'local' => array(
+                                       'iw_url' => 'http://doesnt.matter.org/$1',
+                                       'iw_api' => '',
+                                       'iw_wikiid' => '',
+                                       'iw_local' => 0 ),
                                'wikipedia' => array(
                                        'iw_url' => 'http://en.wikipedia.org/wiki/$1',
                                        'iw_api' => '',
@@ -280,6 +280,11 @@ class ParserTest {
                                        'iw_api' => '',
                                        'iw_wikiid' => '',
                                        'iw_local' => 1 ),
+                               'mi' => array(
+                                       'iw_url' => 'http://mi.wikipedia.org/wiki/$1',
+                                       'iw_api' => '',
+                                       'iw_wikiid' => '',
+                                       'iw_local' => 1 ),
                                'mul' => array(
                                        'iw_url' => 'http://wikisource.org/wiki/$1',
                                        'iw_api' => '',
@@ -942,7 +947,6 @@ class ParserTest {
                }
 
                $this->databaseSetupDone = true;
-               $this->oldTablePrefix = $wgDBprefix;
 
                # SqlBagOStuff broke when using temporary tables on r40209 (bug 15892).
                # It seems to have been fixed since (r55079?), but regressed at some point before r85701.
index 4a3889d..62e160b 100644 (file)
@@ -6392,6 +6392,44 @@ parsoid
 <p data-parsoid='{}'><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"piped","a":{"href":"http://en.wikipedia.org/wiki/Foo"},"sa":{"href":"wikipedia:Foo"},"isIW":true,"tail":"r"}'>Bar</a></p>
 !! end
 
+!! test
+Local interwiki link
+!! wikitext
+[[local:Template:Foo]]
+!! html
+<p><a href="/wiki/Template:Foo" title="Template:Foo">local:Template:Foo</a>
+</p>
+!! end
+
+!! test
+Local interwiki link: self-link to current page
+!! options
+title=[[Main Page]]
+!! wikitext
+[[local:Main Page]]
+!! html
+<p><strong class="selflink">local:Main Page</strong>
+</p>
+!! end
+
+!! test
+Local interwiki link: prefix only (bug 64167)
+!! wikitext
+[[local:]]
+!! html
+<p><a href="/wiki/Main_Page" title="Main Page">local:</a>
+</p>
+!! end
+
+!! test
+Local interwiki link: with additional interwiki prefix (bug 61357)
+!! wikitext
+[[local:meatball:Hello]]
+!! html
+<p><a href="http://www.usemod.com/cgi-bin/mb.pl?Hello" class="extiw" title="meatball:Hello">local:meatball:Hello</a>
+</p>
+!! end
+
 ###
 ### Interlanguage links
 ### Language links (so that searching for '### language' matches..)
@@ -6410,6 +6448,19 @@ Blah blah blah
 <link rel="mw:PageProp/Language" href="//zh.wikipedia.org/wiki/Chinese"/></p>
 !! end
 
+!! test
+Interlanguage link with spacing
+!! wikitext
+Blah blah blah
+[[   zh  :    Chinese     ]]
+!! html/php
+<p>Blah blah blah
+</p>
+!! html/parsoid
+<p>Blah blah blah
+<link rel="mw:PageProp/Language" href="//zh.wikipedia.org/wiki/Chinese"/></p>
+!! end
+
 !! test
 Double interlanguage link
 !! wikitext
@@ -6538,6 +6589,28 @@ parsoid
 <p><a rel="mw:WikiLink" href="./Foo" data-parsoid='{"stx":"simple","a":{"href":"./Foo"},"sa":{"href":"en:Foo"}}'>Foo</a></p>
 !! end
 
+!! test
+Interlanguage link with preceding local interwiki link (bug 68085)
+!! wikitext
+Blah blah blah
+[[local:es:Spanish]]
+!! html
+<p>Blah blah blah
+<a href="http://es.wikipedia.org/wiki/Spanish" class="extiw" title="es:Spanish">local:es:Spanish</a>
+</p>
+!! end
+
+!! test
+Looks like an interlanguage link, but is actually a local interwiki
+!! wikitext
+Blah blah blah
+[[mi:Template:Foo]]
+!! html
+<p>Blah blah blah
+<a href="/wiki/Template:Foo" title="Template:Foo">mi:Template:Foo</a>
+</p>
+!! end
+
 ###
 ### Redirects, Parsoid-only
 ###
index f67fe02..6ebbcb2 100644 (file)
@@ -23,14 +23,8 @@ class LessFileCompilationTest extends MediaWikiTestCase {
         * @param string $file
         * @param ResourceLoaderModule $module The ResourceLoader module that
         *   contains the file
-        * @throws PHPUnit_Framework_Exception When the file parameter isn't a
-        *   string or readable file
         */
        public function __construct( $file, ResourceLoaderModule $module ) {
-               if ( !is_string( $file ) || !is_file( $file ) || !is_readable( $file ) ) {
-                       throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'readable file' );
-               }
-
                parent::__construct( 'testLessFileCompilation' );
 
                $this->file = $file;
@@ -38,6 +32,12 @@ class LessFileCompilationTest extends MediaWikiTestCase {
        }
 
        public function testLessFileCompilation() {
+               $thisString = $this->toString();
+               $this->assertTrue(
+                       is_string( $this->file ) && is_file( $this->file ) && is_readable( $this->file ),
+                       "$thisString must refer to a readable file"
+               );
+
                $compiler = ResourceLoader::getLessCompiler();
                $this->assertNotNull( $compiler->compileFile( $this->file ) );
        }
index 3e5ebb7..7bdb1ca 100644 (file)
@@ -24,14 +24,14 @@ class ArrayUtilsTest extends MediaWikiTestCase {
 
        function provideFindLowerBound() {
                $self = $this;
-               $indexValueCallback = function( $size ) use ( $self ) {
-                       return function( $val ) use ( $self, $size ) {
+               $indexValueCallback = function ( $size ) use ( $self ) {
+                       return function ( $val ) use ( $self, $size ) {
                                $self->assertTrue( $val >= 0 );
                                $self->assertTrue( $val < $size );
                                return $val;
                        };
                };
-               $comparisonCallback = function( $a, $b ) {
+               $comparisonCallback = function ( $a, $b ) {
                        return $a - $b;
                };
 
index 3c653b4..28c35b3 100644 (file)
@@ -82,7 +82,7 @@ class EditPageTest extends MediaWikiLangTestCase {
         *              * wpMinorEdit: mark as minor edit
         *              * wpWatchthis: whether to watch the page
         * @param int|null $expectedCode The expected result code (EditPage::AS_XXX constants).
-        *                  Set to null to skip the check. Defaults to EditPage::AS_OK.
+        *                  Set to null to skip the check.
         * @param string|null $expectedText The text expected to be on the page after the edit.
         *                  Set to null to skip the check.
         * @param string|null $message An optional message to show along with any error message.
@@ -90,12 +90,13 @@ class EditPageTest extends MediaWikiLangTestCase {
         * @return WikiPage The page that was just edited, useful for getting the edit's rev_id, etc.
         */
        protected function assertEdit( $title, $baseText, $user = null, array $edit,
-               $expectedCode = EditPage::AS_OK, $expectedText = null, $message = null
+               $expectedCode = null, $expectedText = null, $message = null
        ) {
                if ( is_string( $title ) ) {
                        $ns = $this->getDefaultWikitextNS();
                        $title = Title::newFromText( $title, $ns );
                }
+               $this->assertNotNull( $title );
 
                if ( is_string( $user ) ) {
                        $user = User::newFromName( $user );
@@ -141,7 +142,9 @@ class EditPageTest extends MediaWikiLangTestCase {
 
                $req = new FauxRequest( $edit, true ); // session ??
 
-               $ep = new EditPage( new Article( $title ) );
+               $article = new Article( $title );
+               $article->getContext()->setTitle( $title );
+               $ep = new EditPage( $article );
                $ep->setContextTitle( $title );
                $ep->importFormData( $req );
 
index 91b531d..84799ff 100644 (file)
@@ -1,5 +1,8 @@
 <?php
 
+/**
+ * @group GlobalFunctions
+ */
 class GlobalTest extends MediaWikiTestCase {
        protected function setUp() {
                parent::setUp();
@@ -718,5 +721,5 @@ class GlobalTest extends MediaWikiTestCase {
                        ),
                );
        }
-       /* @TODO many more! */
+       /* @todo many more! */
 }
index cf891e7..9588ffd 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 /**
+ * @group GlobalFunctions
  * @group Database
  */
 class GlobalWithDBTest extends MediaWikiTestCase {
index 9bb7487..13f49f7 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 /**
+ * @group GlobalFunctions
  * @covers ::wfAssembleUrl
  */
 class WfAssembleUrlTest extends MediaWikiTestCase {
index a01c0d4..041adb8 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 /**
+ * @group GlobalFunctions
  * @covers ::wfBCP47
  */
 class WfBCP47Test extends MediaWikiTestCase {
index 79dd91d..dd4f9cc 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 /**
+ * @group GlobalFunctions
  * @covers ::wfBaseConvert
  */
 class WfBaseConvertTest extends MediaWikiTestCase {
index 516c1b9..705730a 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 /**
+ * @group GlobalFunctions
  * @covers ::wfBaseName
  */
 class WfBaseNameTest extends MediaWikiTestCase {
index 9effc30..a69defb 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 /**
+ * @group GlobalFunctions
  * @covers ::wfExpandUrl
  */
 class WfExpandUrlTest extends MediaWikiTestCase {
index bdb3044..bb2b33f 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 /**
+ * @group GlobalFunctions
  * @covers ::wfGetCaller
  */
 class WfGetCallerTest extends MediaWikiTestCase {
index af834f8..232fa92 100644 (file)
@@ -21,6 +21,7 @@
  */
 
 /**
+ * @group GlobalFunctions
  * @covers ::wfParseUrl
  */
 class WfParseUrlTest extends MediaWikiTestCase {
index 238a2c9..05155db 100644 (file)
@@ -1,5 +1,7 @@
 <?php
+
 /**
+ * @group GlobalFunctions
  *@covers ::wfRemoveDotSegments
  */
 class WfRemoveDotSegmentsTest extends MediaWikiTestCase {
diff --git a/tests/phpunit/includes/GlobalFunctions/wfShellExecTest.php b/tests/phpunit/includes/GlobalFunctions/wfShellExecTest.php
new file mode 100644 (file)
index 0000000..fcd26f5
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @group GlobalFunctions
+ * @covers ::wfShellExec
+ */
+class WfShellExecTest extends MediaWikiTestCase {
+       public function testBug67870() {
+               $command = wfIsWindows()
+                       // 333 = 331 + CRLF
+                       ? ( 'for /l %i in (1, 1, 1001) do @echo ' . str_repeat( '*', 331 ) )
+                       : 'printf "%-333333s" "*"';
+
+               // Test several times because it involves a race condition that may randomly succeed or fail
+               for ( $i = 0; $i < 10; $i++ ) {
+                       $output = wfShellExec( $command );
+                       $this->assertEquals( 333333, strlen( $output ) );
+               }
+       }
+}
index aadec87..67284d2 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 /**
+ * @group GlobalFunctions
  * @covers ::wfShorthandToInteger
  */
 class WfShorthandToIntegerTest extends MediaWikiTestCase {
index fac9b88..bea496c 100644 (file)
@@ -1,5 +1,7 @@
 <?php
-/*
+
+/**
+ * @group GlobalFunctions
  * @covers ::wfTimestamp
  */
 class WfTimestampTest extends MediaWikiTestCase {
@@ -92,7 +94,7 @@ class WfTimestampTest extends MediaWikiTestCase {
                if ( substr( $output, 0, 1 ) === '/' ) {
                        // Bug 64946: Day of the week calculations for very old
                        // timestamps varies from system to system.
-                       $this->assertRegExp(  $output, $timestamp, $message );
+                       $this->assertRegExp( $output, $timestamp, $message );
                } else {
                        $this->assertEquals( $output, $timestamp, $message );
                }
index 783b985..d11668b 100644 (file)
@@ -1,6 +1,9 @@
 <?php
+
 /**
  * The function only need a string parameter and might react to IIS7.0
+ *
+ * @group GlobalFunctions
  * @covers ::wfUrlencode
  */
 class WfUrlencodeTest extends MediaWikiTestCase {
index c1b637b..ae5c9c4 100644 (file)
@@ -40,16 +40,16 @@ class HtmlFormatterTest extends MediaWikiTestCase {
        }
 
        public function getHtmlData() {
-               $removeImages = function( HtmlFormatter $f ) {
+               $removeImages = function ( HtmlFormatter $f ) {
                        $f->setRemoveMedia();
                };
-               $removeTags = function( HtmlFormatter $f ) {
+               $removeTags = function ( HtmlFormatter $f ) {
                        $f->remove( array( 'table', '.foo', '#bar', 'div.baz' ) );
                };
-               $flattenSomeStuff = function( HtmlFormatter $f ) {
+               $flattenSomeStuff = function ( HtmlFormatter $f ) {
                        $f->flatten( array( 's', 'div' ) );
                };
-               $flattenEverything = function( HtmlFormatter $f ) {
+               $flattenEverything = function ( HtmlFormatter $f ) {
                        $f->flattenAllTags();
                };
                return array(
index 8895403..f82a756 100644 (file)
@@ -26,8 +26,8 @@ class ImportTest extends MediaWikiLangTestCase {
        public function testHandlePageContainsRedirect( $xml, $redirectTitle ) {
                $source = $this->getInputStreamSource( $xml );
 
-               $redirect = NULL;
-               $callback = function( $title, $origTitle, $revCount, $sRevCount, $pageInfo ) use ( &$redirect ) {
+               $redirect = null;
+               $callback = function ( $title, $origTitle, $revCount, $sRevCount, $pageInfo ) use ( &$redirect ) {
                        if ( array_key_exists( 'redirect', $pageInfo ) ) {
                                $redirect = $pageInfo['redirect'];
                        }
@@ -92,7 +92,7 @@ EOF
 </mediawiki>
 EOF
                        ,
-                               NULL
+                               null
                        ),
                );
        }
index a5dac8d..02f6b2a 100644 (file)
@@ -215,8 +215,8 @@ class LinksUpdateTest extends MediaWikiTestCase {
                $po->setProperty( "bool", true );
                $expected[] = array( "bool", true );
 
-               $po->setProperty( "float", 4.0 + 1.0/4.0 );
-               $expected[] = array( "float", 4.0 + 1.0/4.0 );
+               $po->setProperty( "float", 4.0 + 1.0 / 4.0 );
+               $expected[] = array( "float", 4.0 + 1.0 / 4.0 );
 
                $po->setProperty( "int", -7 );
                $expected[] = array( "int", -7 );
index 350e83f..311350b 100644 (file)
@@ -9,7 +9,7 @@
  * Test class for MWNamespace.
  * Generated by PHPUnit on 2011-02-20 at 21:01:55.
  * @todo covers tags
- * @FIXME this test file is a mess
+ * @todo FIXME: this test file is a mess
  *
  */
 class MWNamespaceTest extends MediaWikiTestCase {
index 5fee505..f68b3b1 100644 (file)
@@ -38,7 +38,7 @@ class OutputPageTest extends MediaWikiTestCase {
                }
 
                $fauxRequest = new FauxRequest( $queryData, false );
-               $this->setMWGlobals( array(
+               $this->setMwGlobals( array(
                        'wgRequest' => $fauxRequest,
                ) );
 
@@ -179,7 +179,7 @@ mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"
         * @dataProvider provideMakeResourceLoaderLink
         * @covers OutputPage::makeResourceLoaderLink
         */
-       public function testMakeResourceLoaderLink( $args, $expectedHtml) {
+       public function testMakeResourceLoaderLink( $args, $expectedHtml ) {
                $this->setMwGlobals( array(
                        'wgResourceLoaderDebug' => false,
                        'wgResourceLoaderUseESI' => true,
@@ -199,19 +199,19 @@ mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"
                $out = new OutputPage( $ctx );
                $rl = $out->getResourceLoader();
                $rl->register( array(
-                       'test.foo' => new ResourceLoaderTestModule(array(
+                       'test.foo' => new ResourceLoaderTestModule( array(
                                'script' => 'mw.test.foo( { a: true } );',
                                'styles' => '.mw-test-foo { content: "style"; }',
                        )),
-                       'test.bar' => new ResourceLoaderTestModule(array(
+                       'test.bar' => new ResourceLoaderTestModule( array(
                                'script' => 'mw.test.bar( { a: true } );',
                                'styles' => '.mw-test-bar { content: "style"; }',
                        )),
-                       'test.baz' => new ResourceLoaderTestModule(array(
+                       'test.baz' => new ResourceLoaderTestModule( array(
                                'script' => 'mw.test.baz( { a: true } );',
                                'styles' => '.mw-test-baz { content: "style"; }',
                        )),
-                       'test.quux' => new ResourceLoaderTestModule(array(
+                       'test.quux' => new ResourceLoaderTestModule( array(
                                'script' => 'mw.test.baz( { token: 123 } );',
                                'styles' => '/* pref-animate=off */ .mw-icon { transition: none; }',
                                'group' => 'private',
index f13e838..14911f0 100644 (file)
@@ -2,7 +2,7 @@
 
 /**
  * @covers Sanitizer::validateEmail
- * @TODO all test methods in this class should be refactored and...
+ * @todo all test methods in this class should be refactored and...
  *    use a single test method and a single data provider...
  */
 class SanitizerValidateEmailTest extends MediaWikiTestCase {
index 3829f90..9e2f5b8 100644 (file)
@@ -286,7 +286,7 @@ class StatusTest extends MediaWikiLangTestCase {
        }
 
        public static function provideCleanParams() {
-               $cleanCallback = function( $value ) {
+               $cleanCallback = function ( $value ) {
                        return '-' . $value . '-';
                };
 
@@ -538,7 +538,7 @@ class StatusTest extends MediaWikiLangTestCase {
         */
        public function testWakeUpSanitizesCallback() {
                $status = new Status();
-               $status->cleanCallback = function( $value ) {
+               $status->cleanCallback = function ( $value ) {
                        return '-' . $value . '-';
                };
                $status->__wakeup();
index f0d4c4d..ae82bc4 100644 (file)
@@ -26,7 +26,7 @@ class TimeAdjustTest extends MediaWikiLangTestCase {
                return array(
                        array( '20061231235959', 0, '20061231235959' ),
                        array( '20061231235959', 5, '20070101000459' ),
-                       array( '20061231235959', 15,'20070101001459' ),
+                       array( '20061231235959', 15, '20070101001459' ),
                        array( '20061231235959', 60, '20070101005959' ),
                        array( '20061231235959', 90, '20070101012959' ),
                        array( '20061231235959', 120, '20070101015959' ),
index 6871582..12dda89 100644 (file)
@@ -20,6 +20,19 @@ class TitleTest extends MediaWikiTestCase {
                ) );
        }
 
+       public function addDBData() {
+               $this->db->replace( 'interwiki', 'iw_prefix',
+                       array(
+                               'iw_prefix' => 'externalwiki',
+                               'iw_url' => '//example.com/$1',
+                               'iw_api' => '//example.com/api.php',
+                               'iw_wikiid' => '',
+                               'iw_local' => 0,
+                               'iw_trans' => 0,
+                       )
+               );
+       }
+
        /**
         * @covers Title::legalChars
         */
@@ -606,4 +619,28 @@ class TitleTest extends MediaWikiTestCase {
                $title = Title::newFromText( $full );
                $this->assertEquals( $fragment, $title->getFragment() );
        }
+
+       /**
+        * @covers Title::isAlwaysKnown
+        * @dataProvider provideIsAlwaysKnown
+        * @param string $page
+        * @param bool $isKnown
+        */
+       public function testIsAlwaysKnown( $page, $isKnown ) {
+               $title = Title::newFromText( $page );
+               $this->assertEquals( $isKnown, $title->isAlwaysKnown() );
+       }
+
+       public function provideIsAlwaysKnown() {
+               return array(
+                       array( 'Some nonexistent page', false ),
+                       array( 'UTPage', false ),
+                       array( '#test', true ),
+                       array( 'Special:BlankPage', true ),
+                       array( 'Special:SomeNonexistentSpecialPage', false ),
+                       array( 'MediaWiki:Parentheses', true ),
+                       array( 'MediaWiki:Some nonexistent message', false ),
+                       array( 'externalwiki:Interwiki link', true ),
+               );
+       }
 }
index 7b12a4a..12d7d2a 100644 (file)
@@ -115,7 +115,7 @@ class WebRequestTest extends MediaWikiTestCase {
                        'wgUsePrivateIPs' => $private,
                        'wgHooks' => array(
                                'IsTrustedProxy' => array(
-                                       function( &$ip, &$trusted ) use ( $xffList ) {
+                                       function ( &$ip, &$trusted ) use ( $xffList ) {
                                                $trusted = $trusted || in_array( $ip, $xffList );
                                                return true;
                                        }
diff --git a/tests/phpunit/includes/actions/ActionTest.php b/tests/phpunit/includes/actions/ActionTest.php
new file mode 100644 (file)
index 0000000..eb370d9
--- /dev/null
@@ -0,0 +1,198 @@
+<?php
+
+/**
+ * @covers Action
+ *
+ * @licence GNU GPL v2+
+ * @author Thiemo Mättig
+ *
+ * @group Action
+ */
+class ActionTest extends MediaWikiTestCase {
+
+       protected function setUp() {
+               parent::setUp();
+
+               $context = $this->getContext();
+               $this->setMwGlobals( 'wgActions', array(
+                       'null' => null,
+                       'disabled' => false,
+                       'view' => true,
+                       'edit' => true,
+                       'revisiondelete' => true,
+                       'dummy' => true,
+                       'string' => 'NamedDummyAction',
+                       'declared' => 'NonExistingClassName',
+                       'callable' => array( $this, 'dummyActionCallback' ),
+                       'object' => new InstantiatedDummyAction( $context->getWikiPage(), $context ),
+               ) );
+       }
+
+       private function getPage() {
+               return WikiPage::factory( Title::makeTitle( 0, 'Title' ) );
+       }
+
+       private function getContext( $requestedAction = null ) {
+               $request = new FauxRequest( array( 'action' => $requestedAction ) );
+
+               $context = new DerivativeContext( RequestContext::getMain() );
+               $context->setRequest( $request );
+               $context->setWikiPage( $this->getPage() );
+
+               return $context;
+       }
+
+       public function actionProvider() {
+               return array(
+                       array( 'dummy', 'DummyAction' ),
+                       array( 'string', 'NamedDummyAction' ),
+                       array( 'callable', 'CalledDummyAction' ),
+                       array( 'object', 'InstantiatedDummyAction' ),
+
+                       // Capitalization is ignored
+                       array( 'DUMMY', 'DummyAction' ),
+                       array( 'STRING', 'NamedDummyAction' ),
+
+                       // Null and non-existing values
+                       array( 'null', null ),
+                       array( 'undeclared', null ),
+                       array( '', null ),
+                       array( false, null ),
+               );
+       }
+
+       /**
+        * @dataProvider actionProvider
+        * @param string $requestedAction
+        * @param string|null $expected
+        */
+       public function testActionExists( $requestedAction, $expected ) {
+               $exists = Action::exists( $requestedAction );
+
+               $this->assertSame( $expected !== null, $exists );
+       }
+
+       public function testActionExists_doesNotRequireInstantiation() {
+               // The method is not supposed to check if the action can be instantiated.
+               $exists = Action::exists( 'declared' );
+
+               $this->assertTrue( $exists );
+       }
+
+       /**
+        * @dataProvider actionProvider
+        * @param string $requestedAction
+        * @param string|null $expected
+        */
+       public function testGetActionName( $requestedAction, $expected ) {
+               $context = $this->getContext( $requestedAction );
+               $actionName = Action::getActionName( $context );
+
+               $this->assertEquals( $expected ?: 'nosuchaction', $actionName );
+       }
+
+       public function testGetActionName_editredlinkWorkaround() {
+               // See https://bugzilla.wikimedia.org/show_bug.cgi?id=20966
+               $context = $this->getContext( 'editredlink' );
+               $actionName = Action::getActionName( $context );
+
+               $this->assertEquals( 'edit', $actionName );
+       }
+
+       public function testGetActionName_historysubmitWorkaround() {
+               // See https://bugzilla.wikimedia.org/show_bug.cgi?id=20966
+               $context = $this->getContext( 'historysubmit' );
+               $actionName = Action::getActionName( $context );
+
+               $this->assertEquals( 'view', $actionName );
+       }
+
+       public function testGetActionName_revisiondeleteWorkaround() {
+               // See https://bugzilla.wikimedia.org/show_bug.cgi?id=20966
+               $context = $this->getContext( 'historysubmit' );
+               $context->getRequest()->setVal( 'revisiondelete', true );
+               $actionName = Action::getActionName( $context );
+
+               $this->assertEquals( 'revisiondelete', $actionName );
+       }
+
+       /**
+        * @dataProvider actionProvider
+        * @param string $requestedAction
+        * @param string|null $expected
+        */
+       public function testActionFactory( $requestedAction, $expected ) {
+               $context = $this->getContext();
+               $action = Action::factory( $requestedAction, $context->getWikiPage(), $context );
+
+               $this->assertType( $expected ?: 'null', $action );
+       }
+
+       public function testNull_doesNotExist() {
+               $exists = Action::exists( null );
+
+               $this->assertFalse( $exists );
+       }
+
+       public function testNull_defaultsToView() {
+               $context = $this->getContext( null );
+               $actionName = Action::getActionName( $context );
+
+               $this->assertEquals( 'view', $actionName );
+       }
+
+       public function testNull_canNotBeInstantiated() {
+               $page = $this->getPage();
+               $action = Action::factory( null, $page );
+
+               $this->assertNull( $action );
+       }
+
+       public function testDisabledAction_exists() {
+               $exists = Action::exists( 'disabled' );
+
+               $this->assertTrue( $exists );
+       }
+
+       public function testDisabledAction_isNotResolved() {
+               $context = $this->getContext( 'disabled' );
+               $actionName = Action::getActionName( $context );
+
+               $this->assertEquals( 'nosuchaction', $actionName );
+       }
+
+       public function testDisabledAction_factoryReturnsFalse() {
+               $page = $this->getPage();
+               $action = Action::factory( 'disabled', $page );
+
+               $this->assertFalse( $action );
+       }
+
+       public function dummyActionCallback() {
+               $context = $this->getContext();
+               return new CalledDummyAction( $context->getWikiPage(), $context );
+       }
+
+}
+
+class DummyAction extends Action {
+
+       public function getName() {
+               return get_called_class();
+       }
+
+       public function show() {
+       }
+
+       public function execute() {
+       }
+}
+
+class NamedDummyAction extends DummyAction {
+}
+
+class CalledDummyAction extends DummyAction {
+}
+
+class InstantiatedDummyAction extends DummyAction {
+}
index 0a6bf72..611d304 100644 (file)
@@ -8,7 +8,7 @@ class ConfigFactoryTest extends MediaWikiTestCase {
        public function testRegister() {
                $factory = new ConfigFactory();
                $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
-               $this->assertTrue( True ); // No exception thrown
+               $this->assertTrue( true ); // No exception thrown
                $this->setExpectedException( 'InvalidArgumentException' );
                $factory->register( 'invalid', 'Invalid callback' );
        }
@@ -37,9 +37,9 @@ class ConfigFactoryTest extends MediaWikiTestCase {
         */
        public function testMakeConfigWithInvalidCallback() {
                $factory = new ConfigFactory();
-               $factory->register( 'unittest', function() {
+               $factory->register( 'unittest', function () {
                        return true; // Not a Config object
-               });
+               } );
                $this->setExpectedException( 'UnexpectedValueException' );
                $factory->makeConfig( 'unittest' );
        }
index 88bf7d9..1db6fae 100644 (file)
@@ -440,12 +440,12 @@ class DatabaseSqliteTest extends MediaWikiTestCase {
 
                $databaseCreation = $db->query( 'CREATE TABLE a ( a_1 )', __METHOD__ );
                $this->assertInstanceOf( 'ResultWrapper', $databaseCreation, "Failed to create table a" );
-               $res = $db->select( 'a' , '*');
-               $this->assertEquals( 0,  $db->numFields($res), "expects to get 0 fields for an empty table" );
+               $res = $db->select( 'a', '*' );
+               $this->assertEquals( 0, $db->numFields( $res ), "expects to get 0 fields for an empty table" );
                $insertion = $db->insert( 'a', array( 'a_1' => 10 ), __METHOD__ );
                $this->assertTrue( $insertion, "Insertion failed" );
-               $res = $db->select( 'a' , '*');
-               $this->assertEquals( 1,  $db->numFields($res), "wrong number of fields" );
+               $res = $db->select( 'a', '*' );
+               $this->assertEquals( 1, $db->numFields( $res ), "wrong number of fields" );
 
                $this->assertTrue( $db->close(), "closing database" );
        }
index e642177..17c6224 100644 (file)
@@ -107,7 +107,7 @@ class MWDebugTest extends MediaWikiTestCase {
                        'gitViewUrl', 'time', 'log', 'debugLog', 'queries', 'request', 'memory',
                        'memoryPeak', 'includes', 'profile', '_element' );
 
-               foreach( $expectedKeys as $expectedKey ) {
+               foreach ( $expectedKeys as $expectedKey ) {
                        $this->assertArrayHasKey( $expectedKey, $data['debuginfo'], "debuginfo has $expectedKey" );
                }
 
index e914c72..188ad3f 100644 (file)
@@ -44,7 +44,7 @@ class ArrayDiffFormatterTest extends MediaWikiTestCase {
                        $diffOp->expects( $this->any() )
                                ->method( 'getClosing' )
                                ->with( $this->isType( 'integer' ) )
-                               ->will( $this->returnCallback( function() {
+                               ->will( $this->returnCallback( function () {
                                        return 'mockLine';
                                } ) );
                } else {
index 2c52338..f9b4ad5 100644 (file)
@@ -2,7 +2,7 @@
 class RepoGroupTest extends MediaWikiTestCase {
 
        function testHasForeignRepoNegative() {
-               $this->setMWGlobals( 'wgForeignFileRepos', array() );
+               $this->setMwGlobals( 'wgForeignFileRepos', array() );
                RepoGroup::destroySingleton();
                FileBackendGroup::destroySingleton();
                $this->assertFalse( RepoGroup::singleton()->hasForeignRepos() );
@@ -21,7 +21,7 @@ class RepoGroupTest extends MediaWikiTestCase {
        }
 
        function testForEachForeignRepoNone() {
-               $this->setMWGlobals( 'wgForeignFileRepos', array() );
+               $this->setMwGlobals( 'wgForeignFileRepos', array() );
                RepoGroup::destroySingleton();
                FileBackendGroup::destroySingleton();
                $fakeCallback = $this->getMock( 'RepoGroupTestHelper' );
@@ -31,7 +31,7 @@ class RepoGroupTest extends MediaWikiTestCase {
 
        private function setUpForeignRepo() {
                global $wgUploadDirectory;
-               $this->setMWGlobals( 'wgForeignFileRepos', array( array(
+               $this->setMwGlobals( 'wgForeignFileRepos', array( array(
                        'class' => 'ForeignAPIRepo',
                        'name' => 'wikimediacommons',
                        'backend' => 'wikimediacommons-backend',
index 9232ce4..ffa9876 100644 (file)
@@ -1,6 +1,34 @@
 <?php
 
-class FileRepoFileTest extends MediaWikiMediaTestCase {
+class FileTest extends MediaWikiMediaTestCase {
+
+       /**
+        * @param $filename String
+        * @param $expected boolean
+        * @dataProvider providerCanAnimate
+        */
+       function testCanAnimateThumbIfAppropriate( $filename, $expected ) {
+               $this->setMwGlobals( 'wgMaxAnimatedGifArea', 9000 );
+               $file = $this->dataFile( $filename );
+               $this->assertEquals( $file->canAnimateThumbIfAppropriate(), $expected );
+       }
+
+       function providerCanAnimate() {
+               return array(
+                       array( 'nonanimated.gif', true ),
+                       array( 'jpeg-comment-utf.jpg', true ),
+                       array( 'test.tiff', true ),
+                       array( 'Animated_PNG_example_bouncing_beach_ball.png', false ),
+                       array( 'greyscale-png.png', true ),
+                       array( 'Toll_Texas_1.svg', true ),
+                       array( 'LoremIpsum.djvu', true ),
+                       array( '80x60-2layers.xcf', true ),
+                       array( 'Soccer_ball_animated.svg', false ),
+                       array( 'Bishzilla_blink.gif', false ),
+                       array( 'animated.gif', true ),
+               );
+       }
+
        /**
         * @dataProvider getThumbnailBucketProvider
         * @covers File::getThumbnailBucket
@@ -14,8 +42,9 @@ class FileRepoFileTest extends MediaWikiMediaTestCase {
                        ->setMethods( array( 'getWidth' ) )
                        ->getMockForAbstractClass();
 
-               $fileMock->expects( $this->any() )->method( 'getWidth' )->will(
-                       $this->returnValue( $data['width'] ) );
+               $fileMock->expects( $this->any() )
+                       ->method( 'getWidth' )
+                       ->will( $this->returnValue( $data['width'] ) );
 
                $this->assertEquals(
                        $data['expectedBucket'],
@@ -118,29 +147,35 @@ class FileRepoFileTest extends MediaWikiMediaTestCase {
 
                $fsFile = new FSFile( 'fsFilePath' );
 
-               $repoMock->expects( $this->any() )->method( 'fileExists' )->will(
-                       $this->returnValue( true ) );
+               $repoMock->expects( $this->any() )
+                       ->method( 'fileExists' )
+                       ->will( $this->returnValue( true ) );
 
-               $repoMock->expects( $this->any() )->method( 'getLocalReference' )->will(
-                       $this->returnValue( $fsFile ) );
+               $repoMock->expects( $this->any() )
+                       ->method( 'getLocalReference' )
+                       ->will( $this->returnValue( $fsFile ) );
 
                $handlerMock = $this->getMock( 'BitmapHandler', array( 'supportsBucketing' ) );
-               $handlerMock->expects( $this->any() )->method( 'supportsBucketing' )->will(
-                       $this->returnValue( $data['supportsBucketing'] ) );
+               $handlerMock->expects( $this->any() )
+                       ->method( 'supportsBucketing' )
+                       ->will( $this->returnValue( $data['supportsBucketing'] ) );
 
                $fileMock = $this->getMockBuilder( 'File' )
                        ->setConstructorArgs( array( 'fileMock', $repoMock ) )
                        ->setMethods( array( 'getThumbnailBucket', 'getLocalRefPath', 'getHandler' ) )
                        ->getMockForAbstractClass();
 
-               $fileMock->expects( $this->any() )->method( 'getThumbnailBucket' )->will(
-                       $this->returnValue( $data['thumbnailBucket'] ) );
+               $fileMock->expects( $this->any() )
+                       ->method( 'getThumbnailBucket' )
+                       ->will( $this->returnValue( $data['thumbnailBucket'] ) );
 
-               $fileMock->expects( $this->any() )->method( 'getLocalRefPath' )->will(
-                       $this->returnValue( 'localRefPath' ) );
+               $fileMock->expects( $this->any() )
+                       ->method( 'getLocalRefPath' )
+                       ->will( $this->returnValue( 'localRefPath' ) );
 
-               $fileMock->expects( $this->any() )->method( 'getHandler' )->will(
-                       $this->returnValue( $handlerMock ) );
+               $fileMock->expects( $this->any() )
+                       ->method( 'getHandler' )
+                       ->will( $this->returnValue( $handlerMock ) );
 
                $reflection = new ReflectionClass( $fileMock );
                $reflection_property = $reflection->getProperty( 'handler' );
@@ -222,15 +257,18 @@ class FileRepoFileTest extends MediaWikiMediaTestCase {
 
                $fileMock = $this->getMockBuilder( 'File' )
                        ->setConstructorArgs( array( 'fileMock', $repoMock ) )
-                       ->setMethods( array( 'getWidth', 'getBucketThumbPath', 'makeTransformTmpFile', 'generateAndSaveThumb', 'getHandler' ) )
+                       ->setMethods( array( 'getWidth', 'getBucketThumbPath', 'makeTransformTmpFile',
+                               'generateAndSaveThumb', 'getHandler' ) )
                        ->getMockForAbstractClass();
 
                $handlerMock = $this->getMock( 'JpegHandler', array( 'supportsBucketing' ) );
-               $handlerMock->expects( $this->any() )->method( 'supportsBucketing' )->will(
-                       $this->returnValue( true ) );
+               $handlerMock->expects( $this->any() )
+                       ->method( 'supportsBucketing' )
+                       ->will( $this->returnValue( true ) );
 
-               $fileMock->expects( $this->any() )->method( 'getHandler' )->will(
-                       $this->returnValue( $handlerMock ) );
+               $fileMock->expects( $this->any() )
+                       ->method( 'getHandler' )
+                       ->will( $this->returnValue( $handlerMock ) );
 
                $reflectionMethod = new ReflectionMethod( 'File', 'generateBucketsIfNeeded' );
                $reflectionMethod->setAccessible( true );
diff --git a/tests/phpunit/includes/filerepo/files/FileTest.php b/tests/phpunit/includes/filerepo/files/FileTest.php
deleted file mode 100644 (file)
index 36b95ea..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-class FileTest extends MediaWikiMediaTestCase {
-
-       function setUp() {
-               $this->setMWGlobals( 'wgMaxAnimatedGifArea', 9000 );
-               parent::setUp();
-       }
-
-       /**
-        * @param $filename String
-        * @param $expected boolean
-        * @dataProvider providerCanAnimate
-        */
-       function testCanAnimateThumbIfAppropriate( $filename, $expected ) {
-               $file = $this->dataFile( $filename );
-               $this->assertEquals( $file->canAnimateThumbIfAppropriate(), $expected );
-       }
-
-       function providerCanAnimate() {
-               return array(
-                       array( 'nonanimated.gif', true ),
-                       array( 'jpeg-comment-utf.jpg', true ),
-                       array( 'test.tiff', true ),
-                       array( 'Animated_PNG_example_bouncing_beach_ball.png', false ),
-                       array( 'greyscale-png.png', true ),
-                       array( 'Toll_Texas_1.svg', true ),
-                       array( 'LoremIpsum.djvu', true ),
-                       array( '80x60-2layers.xcf', true ),
-                       array( 'Soccer_ball_animated.svg', false ),
-                       array( 'Bishzilla_blink.gif', false ),
-                       array( 'animated.gif', true ),
-               );
-       }
-}
index 7b64dfd..1b8ecf2 100644 (file)
@@ -78,7 +78,7 @@ abstract class MediaWikiMediaTestCase extends MediaWikiTestCase {
                        // Autodetect by file extension for the lazy.
                        $magic = MimeMagic::singleton();
                        $parts = explode( $name, '.' );
-                       $type = $magic->guessTypesForExtension( $parts[count( $parts ) - 1]  );
+                       $type = $magic->guessTypesForExtension( $parts[count( $parts ) - 1] );
                }
                return new UnregisteredLocalFile( false, $this->repo,
                        "mwstore://localtesting/data/$name", $type );
index 4c72d1c..253c10b 100644 (file)
@@ -148,6 +148,7 @@ class NewParserTest extends MediaWikiTestCase {
                # proper precedence when resolving links. (bug 51680)
                $tmpGlobals['wgExtraNamespaces'] = array( 100 => 'MemoryAlpha' );
 
+               $tmpGlobals['wgLocalInterwikis'] = array( 'local', 'mi' );
                # "extra language links"
                # see https://gerrit.wikimedia.org/r/111390
                $tmpGlobals['wgExtraInterlanguageLinkPrefixes'] = array( 'mul' );
index 29af2c2..cbf4803 100644 (file)
@@ -78,7 +78,7 @@ class ParserMethodsTest extends MediaWikiLangTestCase {
                $wgParser->parse( '<recursivecallparser>baz</recursivecallparser>', $title, $po );
        }
 
-       public function helperParserFunc( $input, $args, $parser) {
+       public function helperParserFunc( $input, $args, $parser ) {
                $title = Title::newFromText( 'foo' );
                $po = new ParserOptions;
                $parser->parse( $input, $title, $po );
index 2d31d08..d9cd57e 100644 (file)
@@ -50,10 +50,9 @@ class PoolCounterTest extends MediaWikiTestCase {
                        ->disableOriginalConstructor()
                        ->getMockForAbstractClass();
 
-               $hashKeyIntoSlots = new ReflectionMethod($poolCounter, 'hashKeyIntoSlots' );
+               $hashKeyIntoSlots = new ReflectionMethod( $poolCounter, 'hashKeyIntoSlots' );
                $hashKeyIntoSlots->setAccessible( true );
 
-
                $keysWithTwoSlots = $keysWithFiveSlots = array();
                foreach ( range( 1, 100 ) as $i ) {
                        $keysWithTwoSlots[] = $hashKeyIntoSlots->invoke( $poolCounter, 'key ' . $i, 2 );
index fa22d34..e98f0e8 100644 (file)
@@ -2,6 +2,14 @@
 
 class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
 
+       protected function setUp() {
+               parent::setUp();
+
+               $this->setMwGlobals( array(
+                       'wgValidSkinNames' => array( 'vector' => 'Vector' ),
+               ) );
+       }
+
        /**
         * @covers ResourceLoaderFileModule::getAllSkinStyleFiles
         */
index d3736f5..bd6b3f2 100644 (file)
@@ -130,6 +130,39 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
                        ),
                );
        }
+
+       public static function fakeSources() {
+               return array(
+                       'examplewiki' => array(
+                               'loadScript' => '//example.org/w/load.php',
+                               'apiScript' => '//example.org/w/api.php',
+                       ),
+                       'example2wiki' => array(
+                               'loadScript' => '//example.com/w/load.php',
+                               'apiScript' => '//example.com/w/api.php',
+                       ),
+               );
+       }
+
+       /**
+        * @covers ResourceLoader::getLoadScript
+        */
+       public function testGetLoadScript() {
+               $this->setMwGlobals( 'wgResourceLoaderSources', array() );
+               $rl = new ResourceLoader();
+               $sources = self::fakeSources();
+               $rl->addSource( $sources );
+               foreach ( array( 'examplewiki', 'example2wiki' ) as $name ) {
+                       $this->assertEquals( $rl->getLoadScript( $name ), $sources[$name]['loadScript'] );
+               }
+
+               try {
+                       $rl->getLoadScript( 'thiswasneverreigstered' );
+                       $this->assertTrue( false, 'ResourceLoader::getLoadScript should have thrown an exception' );
+               } catch ( MWException $e ) {
+                       $this->assertTrue( true );
+               }
+       }
 }
 
 /* Hooks */
index 2689236..c042064 100644 (file)
@@ -11,7 +11,7 @@
 class SpecialListFilesTest extends MediaWikiTestCase {
        /**
         * @expectedException MWException
-        * @expectedExceptionMesage invalid_field
+        * @expectedExceptionMessage invalid_field
         * @covers ImageListPager::formatValue
         */
        public function testFormatValuesThrowException() {
diff --git a/tests/phpunit/includes/specials/SpecialMyLanguageTest.php b/tests/phpunit/includes/specials/SpecialMyLanguageTest.php
new file mode 100644 (file)
index 0000000..020d436
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * @group Database
+ * @covers SpecialMyLanguage
+ */
+class SpecialMyLanguageTest extends MediaWikiTestCase {
+       public function addDBData() {
+               $titles = array(
+                       'Page/Another',
+                       'Page/Another/ru',
+               );
+               foreach ( $titles as $title ) {
+                       $page = WikiPage::factory( Title::newFromText( $title ) );
+                       if ( $page->getId() == 0 ) {
+                               $page->doEditContent(
+                                       new WikitextContent( 'UTContent' ),
+                                       'UTPageSummary',
+                                       EDIT_NEW,
+                                       false,
+                                       User::newFromName( 'UTSysop' ) );
+                       }
+               }
+       }
+
+       /**
+        * @covers SpecialMyLanguage::findTitle
+        * @dataProvider provideFindTitle
+        * @param $expected
+        * @param $subpage
+        * @param $langCode
+        * @param $userLang
+        */
+       public function testFindTitle( $expected, $subpage, $langCode, $userLang ) {
+               $this->setMwGlobals( 'wgLanguageCode', $langCode );
+               $special = new SpecialMyLanguage();
+               $special->getContext()->setLanguage( $userLang );
+               // Test with subpages both enabled and disabled
+               $this->mergeMwGlobalArrayValue( 'wgNamespacesWithSubpages', array( NS_MAIN => true ) );
+               $this->assertTitle( $expected, $special->findTitle( $subpage ) );
+               $this->mergeMwGlobalArrayValue( 'wgNamespacesWithSubpages', array( NS_MAIN => false ) );
+               $this->assertTitle( $expected, $special->findTitle( $subpage ) );
+       }
+
+       /**
+        * @param string $expected
+        * @param Title|null $title
+        */
+       private function assertTitle( $expected, $title ) {
+               if ( $title ) {
+                       $title = $title->getPrefixedText();
+               }
+               $this->assertEquals( $expected, $title );
+       }
+
+       public function provideFindTitle() {
+               return array(
+                       array( null, '::Fail', 'en', 'en' ),
+                       array( 'Page/Another', 'Page/Another/en', 'en', 'en' ),
+                       array( 'Page/Another', 'Page/Another', 'en', 'en' ),
+                       array( 'Page/Another/ru', 'Page/Another', 'en', 'ru' ),
+                       array( 'Page/Another', 'Page/Another', 'en', 'es' ),
+               );
+       }
+}
\ No newline at end of file
index 358b0fe..f1425ef 100644 (file)
@@ -155,7 +155,7 @@ class MediaWikiPageLinkRendererTest extends MediaWikiTestCase {
                $formatter->expects( $this->any() )
                        ->method( 'getFullText' )
                        ->will( $this->returnCallback(
-                               function( TitleValue $title ) {
+                               function ( TitleValue $title ) {
                                        return str_replace( '_', ' ', "$title" );
                                }
                        ));
index 2cf8663..bf06e3b 100644 (file)
@@ -72,7 +72,7 @@ class MediaWikiTitleCodecTest extends MediaWikiTestCase {
 
                $genderCache->expects( $this->any() )
                        ->method( 'getGenderOf' )
-                       ->will( $this->returnCallback( function( $userName ) {
+                       ->will( $this->returnCallback( function ( $userName ) {
                                return preg_match( '/^[^- _]+a( |_|$)/u', $userName ) ? 'female' : 'male';
                        } ) );
 
index ef670df..ec51441 100644 (file)
@@ -457,32 +457,22 @@ class LanguageTest extends LanguageClassesTestCase {
         * @dataProvider provideLanguageCodes
         * @covers Language::isValidBuiltInCode
         */
-       public function testBuiltInCodeValidation( $code, $message = '' ) {
-               $this->assertTrue(
+       public function testBuiltInCodeValidation( $code, $expected, $message = '' ) {
+               $this->assertEquals( $expected,
                        (bool)Language::isValidBuiltInCode( $code ),
                        "validating code $code $message"
                );
        }
 
-       /**
-        * @covers Language::isValidBuiltInCode
-        */
-       public function testBuiltInCodeValidationRejectUnderscore() {
-               $this->assertFalse(
-                       (bool)Language::isValidBuiltInCode( 'be_tarask' ),
-                       "reject underscore in language code"
-               );
-       }
-
        public static function provideLanguageCodes() {
                return array(
-                       array( 'fr', 'Two letters, minor case' ),
-                       array( 'EN', 'Two letters, upper case' ),
-                       array( 'tyv', 'Three letters' ),
-                       array( 'tokipona', 'long language code' ),
-                       array( 'be-tarask', 'With dash' ),
-                       array( 'Zh-classical', 'Begin with upper case, dash' ),
-                       array( 'Be-x-old', 'With extension (two dashes)' ),
+                       array( 'fr', true, 'Two letters, minor case' ),
+                       array( 'EN', false, 'Two letters, upper case' ),
+                       array( 'tyv', true, 'Three letters' ),
+                       array( 'tokipona', true, 'long language code' ),
+                       array( 'be-tarask', true, 'With dash' ),
+                       array( 'be-x-old', true, 'With extension (two dashes)' ),
+                       array( 'be_tarask', false, 'Reject underscores' ),
                );
        }
 
index 4f0d24f..dad30b7 100644 (file)
@@ -32,7 +32,7 @@ abstract class DumpTestCase extends MediaWikiLangTestCase {
         * @param string $text Revisions text
         * @param string $text Revisions summare
         *
-        * @throws MWExcepion
+        * @throws MWException
         */
        protected function addRevision( Page $page, $text, $summary ) {
                $status = $page->doEditContent(
index 8c40ffe..43f2096 100644 (file)
@@ -102,7 +102,7 @@ class FetchTextTest extends MediaWikiTestCase {
         * @param string $text The revisions text
         * @param string $text The revisions summare
         *
-        * @throws MWExcepion
+        * @throws MWException
         */
        private function addRevision( $page, $text, $summary ) {
                $status = $page->doEditContent(
index d2a4132..c7491d3 100755 (executable)
@@ -105,7 +105,7 @@ class PHPUnitMaintClass extends Maintenance {
                        # The below code injects a parameter just like if the user called
                        # Probably fix bug 29226
                        $key = array_search( '--colors', $_SERVER['argv'] );
-                       if( $key === false ) {
+                       if ( $key === false ) {
                                array_splice( $_SERVER['argv'], 1, 0, '--colors' );
                        }
                }
@@ -115,7 +115,7 @@ class PHPUnitMaintClass extends Maintenance {
                # PHPUnit uses stream_resolve_include_path() internally
                # See bug 32022
                $key = array_search( '--include-path', $_SERVER['argv'] );
-               if( $key === false ) {
+               if ( $key === false ) {
                        array_splice( $_SERVER['argv'], 1, 0,
                                __DIR__
                                . PATH_SEPARATOR
@@ -151,7 +151,7 @@ if ( !class_exists( 'PHPUnit_TextUI_Command' ) ) {
 if ( version_compare( PHP_VERSION, '5.4.0', '<' )
        && version_compare( PHP_VERSION, '5.3.0', '>=' )
 ) {
-       register_shutdown_function( function() {
+       register_shutdown_function( function () {
                gc_collect_cycles();
                gc_disable();
        } );
index b27337b..bd82d21 100644 (file)
@@ -62,7 +62,6 @@ class UploadFromUrlTestSuite extends PHPUnit_Framework_TestSuite {
                $messageMemc = wfGetMessageCacheStorage();
                $parserMemc = wfGetParserCacheStorage();
 
-               // $wgContLang = new StubContLang;
                $wgUser = new User;
                $context = new RequestContext;
                $wgLang = $context->getLanguage();
index 89cc834..9a4b332 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -376,7 +376,7 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath
 
        $done = false;
        // Record failures on PHP fatals in addition to caching exceptions
-       register_shutdown_function( function() use ( &$done, $key ) {
+       register_shutdown_function( function () use ( &$done, $key ) {
                if ( !$done ) { // transform() gave a fatal
                        global $wgMemc;
                        // Randomize TTL to reduce stampedes
@@ -399,17 +399,17 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath
        try {
                $work = new PoolCounterWorkViaCallback( $poolCounterType, sha1( $file->getName() ),
                        array(
-                               'doWork' => function() use ( $file, $params ) {
+                               'doWork' => function () use ( $file, $params ) {
                                        return $file->transform( $params, File::RENDER_NOW );
                                },
-                               'getCachedWork' => function() use ( $file, $params, $thumbPath ) {
+                               'getCachedWork' => function () use ( $file, $params, $thumbPath ) {
                                        // If the worker that finished made this thumbnail then use it.
                                        // Otherwise, it probably made a different thumbnail for this file.
                                        return $file->getRepo()->fileExists( $thumbPath )
                                                ? $file->transform( $params, File::RENDER_NOW )
                                                : false; // retry once more in exclusive mode
                                },
-                               'fallback' => function() {
+                               'fallback' => function () {
                                        return wfMessage( 'generic-pool-error' )->parse();
                                },
                                'error' => function ( $status ) {